Список операторов — это файл или фрагмент в формате 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
Цель приложения Android "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
или Javakeytool
, как показано здесь:-
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>
Дополнительная информация
Более подробное объяснение формата списка операторов и лежащих в его основе концепций содержится в нашей спецификации .