Синтаксис списка операторов

Список операторов — это файл или фрагмент в формате JSON, расположенный в известном месте.

Расположение списка заявлений

См. Создание списка операторов , чтобы узнать, где этот список следует хранить.

Синтаксис

Список или фрагмент операторов состоит из массива JSON, состоящего из одного или нескольких операторов веб-сайта или приложения в виде объектов JSON. Эти утверждения могут быть в любом порядке. Вот общий синтаксис:

[
  {
    "relation": ["relation_string"],
    "target": {target_object}
  } , ...
]
связь
Массив из одной или нескольких строк, описывающих отношение, объявляемое относительно цели. См. список определенных строк отношений . Пример: delegate_permission/common.handle_all_urls
цель
Целевой актив, к которому применяется данное утверждение. Доступные типы целей:
  • "target": {
      "namespace": "web",
      "site": "site_root_url"
    }
    пространство имен
    Должен быть web для веб-сайтов.
    сайт
    URI сайта, который является целью оператора, в формате http[s]://< hostname >[:< port >] , где <hostname> является полным, а <port> необходимо опустить при использовании порт 80 для HTTP или порт 443 для HTTPS. Целевым веб-сайтом может быть только корневой домен; вы не можете ограничиться определенным подкаталогом; все каталоги в этом корне будут совпадать. Субдомены не следует считать совпадающими: то есть, если файл инструкции размещен на сайте www.example.com, то www.puppies.example.com не следует считать совпадающим. Правила и примеры сопоставления целей веб-сайта см. в документации по целям . Пример: http://www.example.com
  • "target": {
      "namespace": "android_app",
      "package_name": "fully_qualified_package_name",
      "sha256_cert_fingerprints": ["cert_fingerprint"]
    }
    пространство имен
    Для приложений Android должно быть android_app .
    имя_пакета
    Полное имя пакета приложения, к которому применяется этот оператор. Пример: com.google.android.apps.maps
    sha256_cert_fingerprints
    Отпечаток SHA265 сертификата приложения, к которому применяется этот оператор, в верхнем регистре . Вы можете вычислить это с помощью openssl или Java keytool , как показано здесь:
    • openssl x509 -in $CERTFILE -noout -fingerprint -sha256
    • keytool -printcert -file $CERTFILE | grep 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"] .

    Если вы используете подпись приложения Play для своего приложения, то отпечаток сертификата, созданный при локальном запуске keytool или openssl обычно не совпадает с отпечатком сертификата на устройствах пользователей. Вы можете проверить, используете ли вы подписывание приложений Play для своего приложения в своей учетной записи разработчика Play Console в разделе Release > Setup > App Integrity ; если да, то на той же странице вы также найдете правильный фрагмент JSON Digital Asset Links для вашего приложения.

Пример списка операторов

Вот пример списка утверждений веб-сайта, который содержит утверждения как о веб-сайтах, так и о приложениях: http://example.digitalassetlinks.org/.well-known/assetlinks.json.

Масштабирование до десятков операторов и более

В некоторых случаях принципал может захотеть сделать много разных заявлений о разных целях или может возникнуть необходимость выпустить заявления от разных принципалов в отношении одного и того же набора целей. Например, веб-сайт может быть доступен на многих разных доменах верхнего уровня в каждой стране, и все они могут захотеть сделать заявление об одном и том же мобильном приложении.

В таких ситуациях могут оказаться полезными операторы включения . Используя этот механизм, вы можете настроить указатели от многих разных участников на одно центральное место, которое определяет операторы для всех участников.

Например, вы можете решить, что центральным расположением должно быть https://example.com/includedstatements.json. Этот файл можно настроить так, чтобы он содержал тот же контент, что и в примерах выше.

Чтобы настроить указатель с веб-сайта на включаемый файл, измените `https://example.com/.well-known/assetlinks.json` на:

[{
  "include": "https://example.com/includedstatements.json"
}]

Чтобы настроить указатель из приложения Android на включаемый файл, измените `res/values/strings.xml` на:

<resources>
  ...
  <string name="asset_statements">
    [{
      \"include\": \"https://example.com/includedstatements.json\"
    }]
  </string>
</resources>

Дополнительная информация

Более подробное объяснение формата списка операторов и лежащих в его основе концепций содержится в нашей спецификации .