Управляйте ключами доступа в нескольких доменах и приложениях с помощью RP ID.

В WebAuthn и ключах доступа идентификатор зависимой стороны (RP ID) определяет область действия учетных данных по доменному имени. При создании ключа доступа браузер привязывает его к определенному RP ID. Затем браузер предотвращает использование этого ключа доступа на домене, который не соответствует этому ID или не попадает в его область действия. Правильное определение RP ID обеспечивает бесперебойную работу ключей доступа на поддоменах, межсайтовых серверах и в мобильных приложениях собственного разработчика.

Основные сведения об идентификаторе RP

Идентификатор проверяющей стороны (RP ID) — это уникальная строка, которая идентифицирует ваш сервис или веб-сайт. RP ID должен представлять собой строку домена. Это может быть точное текущее имя хоста или более широкий родительский домен, при условии, что это eTLD+1 или выше . Вы не можете использовать IP-адреса и публичные суффиксы (eTLD) в качестве RP ID.

Например, если ваш сервер размещен по адресу https://www.example.com , вы можете использовать example.com или www.example.com в качестве его идентификатора точки доступа (RP ID) в зависимости от конкретных потребностей. В следующей таблице приведены примеры допустимых идентификаторов точек доступа в зависимости от вашего исходного хоста:

Исходный хост Допустимый идентификатор RP (eTLD+1)
https://login.example.com example.com или login.example.com
https://example.com:8080 example.com (номера портов не включены)
https://mobile.example.co.jp example.co.jp или mobile.example.co.jp
https://sub.project.org.uk project.org.uk или sub.project.org.uk
https://user.github.io user.github.io ( github.io это eTLD)
https://myapp.pages.dev myapp.pages.dev ( pages.dev — это eTLD)
http://localhost localhost (исключение из требования HTTPS)

При создании учетных данных браузер криптографически связывает ключи доступа с идентификатором участника процесса (RP ID). Для использования учетных данных источник запроса на аутентификацию должен совпадать с этим RP ID.

При использовании eTLD+1 в качестве идентификатора точки доступа (RP ID) пароль работает на связанных поддоменах. Например, RP ID example.com работает для https://login.example.com и https://shop.example.com . Более конкретный RP ID, такой как login.example.com работает на своем точном источнике, но не на https://shop.example.com .

Идентификатор RP в межсайтовых контекстах

Если ваш сервис охватывает несколько eTLD+1 (например, example.com и example.co.jp ), это межсайтовая конфигурация. Стандартные идентификаторы RP не поддерживают межсайтовые настройки.

Для обмена паролями между различными сайтами используйте запросы связанных источников (Related Origin Requests, ROR) . ROR позволяет обмениваться паролями между различными сайтами, поскольку клиент (браузер) распознает разные источники как часть одной и той же логической службы.

Требования к ROR:

  • Выберите один RP ID: Вы должны выбрать один RP ID и использовать его на всех сайтах.
  • Разместите файл конфигурации: основной домен идентификатора точки доступа (RP ID) должен разместить файл конфигурации по адресу /.well-known/webauthn в котором перечислены авторизованные источники.
  • Обеспечьте согласованность: даже если пользователь находится на https://www.example.co.jp , rpId в вызове WebAuthn должен быть основным (например, example.com ) как при создании учетной записи, так и при аутентификации.

Пример ROR для RP ID example.com : https://example.com/.well-known/webauthn

{
  "origins": [
    "https://www.example.co.jp",
    "https://shop.example"
  ]
}

Для получения дополнительной информации о деталях реализации запросов к связанным источникам см. раздел «Разрешите повторное использование ключей доступа на ваших сайтах с помощью запросов к связанным источникам».

RP ID в мобильных приложениях

Мобильные приложения могут использовать пароли, связываясь с веб-доменом. Для установления этой связи необходимо разместить файл проверки на вашем сервере.

Для связи с приложением Android Credential Manager требуется файл Digital Asset Link (DAL) в домене RP ID.

  • Размещение: Разместите файл по адресу https://<RP ID>/.well-known/assetlinks.json .
  • Проверка: Проверьте origin в clientDataJSON . Для Android это строка, например, android:apk-key-hash:<hash> .

Пример DAL для RP ID example.com (размещен по адресу https://example.com/.well-known/assetlinks.json )

[
  {
    "relation": [
      "delegate_permission/common.handle_all_urls",
      "delegate_permission/common.get_login_creds"
    ],
    "target": {
      "namespace": "android_app",
      "package_name": "com.google.credentialmanager.sample",
      "sha256_cert_fingerprints": [
        "4F:20:47:1F:D9:9A:BA:96:47:8D:59:27:C2:C8:A6:EA:8E:D2:8D:14:C0:B6:A2:39:99:9F:A3:4D:47:3D:FA:11"
      ]
    }
  }
]

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

iOS: Связанные домены

Для работы с приложением на платформах Apple требуется файл apple-app-site-association (AASA) в домене RP ID.

  • Файл AASA: Хост https://<RP_ID>/.well-known/apple-app-site-association .
  • Права доступа: Добавьте webcredentials:<app info> в список прав доступа приложения.

Пример AASA для идентификатора RP example.com : https://example.com/.well-known/apple-app-site-association :

{
  "webcredentials":
    {
      "apps": ["EXAMPLE123.com.example.passkey"]
    }
}

Для получения дополнительной информации см. раздел «Подключение к службе с помощью паролей» в документации Apple для разработчиков.

Краткое содержание

Идентификатор RP определяет, откуда пользователи получают доступ к своим паролям. При внедрении учитывайте следующие моменты:

  • Иерархия и поддомены : Идентификатор RP должен представлять собой строку домена (eTLD+1 или выше). Использование более широкого домена, например example.com позволяет использовать пароли для всех поддоменов (например, login.example.com и shop.example.com ).
  • Межсайтовые решения : используйте запросы связанных источников (Related Origin Requests, ROR) для сервисов, охватывающих несколько eTLD+1. Для этого требуется один идентификатор точки доступа (RP ID) и файл конфигурации по адресу /.well-known/webauthn .
  • Интеграция с мобильными устройствами : установите проверенную связь между вашим веб-сайтом и мобильными приложениями, используя файл Digital Asset Links (DAL) по адресу /.well-known/assetlinks.json для Android и файл apple-app-site-association (AASA) по адресу /.well-known/apple-app-site-association для iOS.

Узнать больше