Создание списка выписок

Операторы размещаются в списке операторов в кодировке JSON в известном месте на субъекте, как определено в Спецификации связей активов . Список операторов содержит один или несколько операторов, а принципал может иметь только один список операторов.

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

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

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

Список выписок размещается в хорошо известном месте, которое зависит от типа принципала (веб-сайт или приложение, делающее выписки).

Списки заявлений веб-сайта

На веб-сайте список выписок представляет собой текстовый файл, расположенный по следующему адресу:

scheme : domain

Обратите внимание на точку в хорошо известном имени папки.

Любой ответ сервера, кроме HTTP 200 , рассматривается как ошибка и приводит к пустому списку операторов. Для HTTPS любое соединение без цепочки сертификатов, которое можно проверить с помощью списка доверенных корней, также приведет к пустому списку операторов.

Пример

Вот пример списка операторов на веб-сайте: http://example.digitalassetlinks.org/.well-known/assetlinks.json .

Списки операторов Android-приложений

В приложении Android список инструкций представляет собой фрагмент JSON с тем же синтаксисом, что и файл инструкции веб-сайта, но он встроен в файл strings.xml и упоминается в манифесте, как показано ниже.

В AndroidManifest.xml:

<manifest>
  <application>
    ...
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    ...
  </application>
</manifest>

В res/values/strings.xml:

<resources>
  ...
  <string name="asset_statements">
    ... statement list ...
  </string>
</resources>

Пример

Вот пример фрагмента res/values/strings.xml для приложения Android, которое поддерживает совместное использование местоположения с приложением (функция Android в настоящее время не поддерживается):

<resources>
    ...
    <string name="asset_statements">
      [{
        \"relation\": [\"delegate_permission/common.share_location\"],
        \"target\": {
          \"namespace\": \"web\",
          \"site\": \"https://example.com\"
        }
      }]
    </string>
</resources>

Соответствие цели

Каждое утверждение касается цели . Когда вы потребляете утверждение, вы должны сопоставить цель в утверждении с некоторой сущностью в реальности. Если цель оператора соответствует сущности, оператор применяется. Вот правила для определения того, соответствует ли цель заданному объекту:

Цели веб-сайта

Для веб-сайта схема сайта, хост и порт должны точно совпадать. Порты по умолчанию для HTTP и HTTPS (80 и 443 соответственно) предполагаются неявно; если цель оператора описывает http://www.example.com:80, то веб-сайт http://www.example.com считается совпадающим.

Пример

Учитывая следующую цель оператора

"target": {
  "namespace": "web",
  "site": "https://www.google.com"
}

Следующие URI БУДУТ совпадать:

  • 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://пользователь@пароль:www.google.com/

Следующие URL-адреса НЕ будут совпадать:

  • http://www.google.com/ ( Неверная схема )
  • https://google.com/ ( имя хоста не совпадает )
  • https://www.google.com:444/ ( порт не совпадает )

Цели приложений

Для приложения хэш сертификата и имя пакета цели должны точно соответствовать приложению.