Asset

Jednoznacznie identyfikuje zasób.

Zasób cyfrowy to możliwy do zidentyfikowania i dostosowania podmiot internetowy, który zwykle oferuje określone usługi lub treści. Przykładami zasobów są witryny, aplikacje na Androida, kanały na Twitterze i strony Plus.

Zapis JSON
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
Nazwa pola Typ Opis
sumy, tylko jedna z tych wartości:
web object(WebAsset) Ustaw, jeśli jest to komponent internetowy.
androidApp object(AndroidAppAsset) Ustaw, jeśli jest to komponent aplikacji na Androida.

WebAsset

Opisuje zasób internetowy.

Zapis JSON
{
  "site": string,
}
Nazwa pola Typ Opis
site string

Zasoby internetowe są identyfikowane na podstawie adresu URL, który zawiera tylko schemat, nazwę hosta i części portu. Format to

http[s]://<hostname>[:<port>]

Nazwy hostów muszą być w pełni kwalifikowane: muszą kończyć się pojedynczym kropką („.”).

Obecnie dozwolone są tylko schematy „http” i „https”.

Numery portów są podawane w formacie dziesiętnym. Jeśli używasz standardowych numerów portów, należy je pominąć: 80 w przypadku protokołu http i 443 dla protokołu https.

Ten ograniczony adres URL nazywamy „witryną”. Wszystkie adresy URL o tym samym schemacie, tej samej nazwie hosta i portu są uznawane za część witryny i dlatego należą do zasobu internetowego.

Przykład: zasób z witryną https://www.google.com zawiera wszystkie te adresy URL:

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

Nie zawiera jednak tych adresów URL:

  • http://www.google.com/ (nieprawidłowy schemat)
  • https://google.com/ (niezgodna nazwa hosta)
  • https://www.google.com:444/ (niezgodny port) WYMAGANE

AndroidAppAsset

Opisuje zasób aplikacji na Androida.

Zapis JSON
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
Nazwa pola Typ Opis
packageName string Zasoby aplikacji na Androida są zwykle identyfikowane po nazwie pakietu Javy. Na przykład aplikacja Mapy Google używa nazwy pakietu com.google.android.apps.maps. WYMAGANE
certificate object(CertificateInfo)

Nie ma globalnego egzekwowania zasad dotyczących niepowtarzalności nazwy pakietu, dlatego wymagamy również certyfikatu podpisywania, który w połączeniu z nazwą pakietu jednoznacznie identyfikuje aplikację.

Klucze podpisywania niektórych aplikacji podlegają rotacji, więc z czasem mogą być podpisywane innymi kluczami. Traktujemy je jako oddzielne zasoby, ponieważ wykorzystujemy (nazwa pakietu, certyfikat) jako unikalny identyfikator. Zazwyczaj nie powinno to sprawiać problemów, ponieważ obie wersje aplikacji zawierają takie same lub podobne stwierdzenia. Inne komponenty zawierające stwierdzenia o aplikacji muszą być jednak aktualizowane podczas rotacji klucza.

Pamiętaj, że składnia instrukcji publikowania i wysyłania zapytań o instrukcje zawiera cukier składowy, który ułatwia określenie aplikacji znanych z wielu certyfikatów. WYMAGANE

CertificateInfo

Opis certyfikatu X509.

Zapis JSON
{
  "sha256Fingerprint": string,
}
Nazwa pola Typ Opis
sha256Fingerprint string

Odcisk cyfrowy certyfikatu pisany wielkimi literami przy użyciu algorytmu SHA-265. Certyfikat PEM można uzyskać w ten sposób:

$ keytool -printcert -file $CERTFILE | grep SHA256:
SHA256: 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \
    42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

lub podobny:

$ openssl x509 -in $CERTFILE -noout -fingerprint -sha256
SHA256 Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \
    16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

W tym przykładzie zawartość tego pola to 14:6D:E9:83:C5:73: 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: 44:E5.

Jeśli nie masz dostępu do tych narzędzi, możesz przekonwertować certyfikat PEM na format DER, obliczyć hasz SHA-256 tego ciągu i zapisać wynik w postaci szesnastkowego ciągu (czyli reprezentacji każdego oktetu w systemie szesnastkowym wielkimi literami, rozdzielanych dwukropkiem).