В 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: ссылки на цифровые активы
Для связи с приложением 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.