Узнайте, как запросы связанных источников WebAuthn (Related Origin Requests) позволяют использовать Passkeys на нескольких доменах. Полное руководство по внедрению с примерами из реальной практики.

Vincent
Created: October 31, 2025
Updated: October 31, 2025

See the original blog version in English here.
Passkeys — это новый стандарт безопасной и удобной для пользователя аутентификации. Основанные на стандартах FIDO/WebAuthn, они используют криптографию с открытым ключом, чтобы обеспечить встроенную защиту от фишинга и атак с подстановкой учетных данных. Это значительно повышает уровень безопасности и упрощает процесс входа для пользователей. Для организаций это означает ощутимые бизнес-преимущества: снижение операционных расходов на сброс паролей и SMS OTP, уменьшение финансовых рисков от захвата аккаунтов и рост выручки за счет более высоких показателей конверсии.
Однако одна из главных сильных сторон WebAuthn в плане безопасности — строгая привязка к источнику (origin) — создает серьезную проблему для глобальных брендов и компаний с разнообразным цифровым присутствием. По своей сути, Passkey, созданный для определенного веб-домена, криптографически привязан к этому домену. Это фундаментальный принцип, предотвращающий фишинговые атаки. Хотя это мощная функция безопасности, она приводит к фрагментированному и запутанному пользовательскому опыту, когда один бренд работает на нескольких доменах.
Ярким примером этой проблемы является ребрендинг Twitter в X. Пользователь, создавший Passkey на twitter.com, не смог бы использовать его на x.com. Это вынудило компанию внедрять громоздкие перенаправления или требовать от пользователей повторной регистрации, что создает неудобства и мешает внедрению технологии. И это не единичный случай. Крупные компании, такие как Amazon, работают на множестве национальных доменов верхнего уровня (ccTLD), например amazon.com, amazon.de и amazon.co.uk, при этом используя общую систему учетных записей. В мире до Passkeys менеджеры паролей легко справлялись с этой сложностью, но стандартное поведение WebAuthn потребовало бы отдельного Passkey для каждого домена, что расстраивало бы пользователей и подрывало идею бесшовного входа.
Чтобы решить эту критическую проблему, W3C представил новую функцию в стандарте WebAuthn: Запросы связанных источников (Related Origin Requests, ROR). Этот мощный механизм предоставляет стандартизированный и безопасный способ для группы доверенных доменов использовать один и тот же Passkey, создавая единый и бесшовный опыт аутентификации во всей цифровой экосистеме бренда. В этой статье мы подробно рассмотрим технические основы ROR, предоставим практическое руководство по его внедрению и проанализируем его стратегическое значение для современной архитектуры аутентификации.
Появление ROR знаменует собой важный этап в развитии стандарта WebAuthn. В первоначальных спецификациях основной упор делался на ключевые криптографические принципы и принципы безопасности, где строгая привязка учетных данных к идентификатору проверяющей стороны (rpID) была краеугольным камнем защиты от фишинга. По мере того как крупномасштабные корпоративные внедрения компаниями вроде Amazon и Google стали реальностью, практические неудобства, вызванные этой жесткостью, стали очевидны. Эти неудобства напрямую препятствуют широкому принятию пользователями, что является главным мерилом успеха любого проекта с Passkeys. Разработка ROR — это прямой ответ на отзывы корпоративных пользователей, демонстрирующий прагматичную эволюцию стандарта. Он признает, что для широкого успеха протокола безопасности его удобство использования должно масштабироваться, чтобы соответствовать сложным бизнес-реалиям и брендинговым стратегиям организаций, которые его внедряют.
Это подробное руководство отвечает на пять ключевых вопросов по внедрению запросов связанных источников WebAuthn:
.well-known.Для получения дополнительной технической информации см. официальное объяснение запросов связанных источников WebAuthn.
Чтобы в полной мере оценить изящество решения на основе запросов связанных источников, необходимо сначала понять основополагающие технические концепции, которые делают его необходимым: политику одного источника в вебе и правила определения области действия идентификатора проверяющей стороны (rpID) в WebAuthn. Эти механизмы лежат в основе веб-безопасности, но именно они создают те неудобства, которые призваны устранить ROR.
«Источник» (origin) в вебе — это критически важное понятие безопасности, определяемое уникальной комбинацией протокола (например, https), домена (например, app.example.com) и порта (например, 443), с которого доставляется контент. Политика одного источника (Same-Origin Policy) — это механизм безопасности, применяемый браузерами, который ограничивает взаимодействие скрипта, загруженного с одного источника, с ресурсом с другого источника. Это важный элемент веб-безопасности, который эффективно изолирует потенциально вредоносные документы и предотвращает, например, чтение конфиденциальных данных из аутентифицированной сессии веб-почты пользователя в другой вкладке мошенническим сайтом.
В экосистеме WebAuthn «проверяющая сторона» (Relying Party, RP) — это веб-сайт или приложение, в котором пользователь пытается пройти аутентификацию. Каждый Passkey в момент создания криптографически привязывается к идентификатору проверяющей стороны (rpID). rpID — это доменное имя, которое определяет область действия и границы для этих учетных данных.
По умолчанию rpID — это действующий домен источника, на котором создается Passkey. Правила WebAuthn позволяют источнику устанавливать rpID, который либо равен его собственному домену, либо является регистрируемым суффиксом домена. Например, скрипт, работающий на https://www.accounts.example.co.uk, может создать Passkey с rpID:
www.accounts.example.co.uk (полный домен)accounts.example.co.ukexample.co.ukЭта гибкость позволяет использовать Passkey, созданный на одном поддомене, на других поддоменах того же родительского домена, что является распространенной и необходимой практикой. Однако правила строго запрещают устанавливать rpID, который не является суффиксом. Тот же скрипт на www.accounts.example.co.uk не смог бы создать Passkey с rpID example.com, потому что .com — это другой домен верхнего уровня.
Эта строгая привязка служит важной цели: разделению учетных данных по областям доменов. Passkey, созданный для mybank.com, не может быть использован на phishing-site.com, потому что вредоносный сайт не может заявить легитимный rpID mybank.com. Браузер даже не предложит такой Passkey в качестве варианта.
Однако сам по себе rpID не является основным средством защиты от фишинга. Защита от фишинга в WebAuthn на самом деле обеспечивается проверкой источника (origin verification) в объекте clientDataJSON. Во время каждой церемонии WebAuthn браузер создает JSON-объект, содержащий критически важный контекст, включая точный источник, инициировавший запрос. Затем весь этот объект криптографически подписывается закрытым ключом аутентификатора. Сервер (проверяющая сторона) ОБЯЗАН проверить эту подпись и, что крайне важно, убедиться, что поле origin в подписанном clientDataJSON соответствует ожидаемому, доверенному значению. Именно эта проверка источника предотвращает фишинговые атаки.
С появлением запросов связанных источников область действия rpID становится менее строгой — позволяя bar.com легитимно заявлять rpID foo.com после того, как браузер проверит файл .well-known/webauthn, — но требование проверки источника остается неизменным. clientDataJSON по-прежнему будет правдиво сообщать, что источник — bar.com. Сервер foo.com получает эти подписанные данные, проверяет их и видит, что запрос пришел от bar.com. Затем сервер должен убедиться, что bar.com является ожидаемым связанным источником, прежде чем принять аутентификацию. Это демонстрирует многоуровневый подход, который обеспечивает большую гибкость без ущерба для основного принципа проверки источника.
Механизм запросов связанных источников представляет собой изящный и стандартизированный способ для доменов публично заявлять о доверительных отношениях с целью совместного использования Passkeys. Он использует хорошо зарекомендовавший себя веб-паттерн — URI /.well-known/ — для создания проверяемого и машиночитаемого «белого списка», который могут использовать браузеры.
Основная концепция проста: домен, который служит основным, каноническим rpID для набора связанных сайтов, может размещать специальный JSON-файл по стандартизированному, «хорошо известному» URL: https://{rpID}/.well-known/webauthn. Этот файл действует как публичный манифест, явно перечисляя все другие источники, которые официально уполномочены создавать и использовать Passkeys под этим основным rpID.
Процесс проверки в браузере запускается всякий раз, когда он обнаруживает несоответствие между текущим источником и запрошенным rpID:
https://example.co.uk, инициирует операцию с Passkey (создание или аутентификацию), где клиентский код указывает другой домен в качестве rpID, например, example.com.SecurityError.well-known URL заявленного rpID: https://example.com/.well-known/webauthn. Этот запрос выполняется без учетных данных пользователя (таких как cookie) и без заголовка Referrer для защиты конфиденциальности пользователя и предотвращения отслеживания.https://example.co.uk) в массиве origins внутри JSON-объекта.example.com в качестве действительного rpID. Если источник не найден, или если файл отсутствует или имеет неверный формат, операция завершается неудачей, как и раньше.Выбор URI /.well-known/ не случаен и соответствует устоявшимся веб-стандартам для обнаружения служб и проверки контроля над доменом. Этот путь URI, определенный в RFC 8615, уже используется множеством критически важных протоколов, включая acme-challenge для выдачи SSL-сертификатов Let's Encrypt и assetlinks.json для связывания веб-сайтов с приложениями Android. Применяя это соглашение, W3C использует паттерн, который по своей сути подразумевает владение доменом. Чтобы разместить файл по этому конкретному, стандартизированному пути, необходимо иметь административный контроль над веб-сервером для этого домена. Это обеспечивает простое, но эффективное доказательство контроля, делая заявление о доверии проверяемым. Когда владелец example.com размещает файл, в котором example.co.uk указан как связанный источник, это является проверяемым утверждением. Этот нативный веб-подход гораздо проще и надежнее, чем альтернативы, которые рассматривались и были отклонены в процессе стандартизации, такие как использование криптографических ключей для подписи авторизаций (RP Keys) или случайных идентификаторов, не основанных на доменах (RP UUIDs). ROR основывает доверительные отношения на существующей, хорошо понятной модели контроля доменов в вебе.
Внедрение запросов связанных источников требует скоординированных изменений как на стороне сервера для авторизации источников, так и на стороне клиента для вызова общего rpID. В этом разделе представлены практические примеры кода и детали конфигурации, необходимые для обеспечения единого опыта использования Passkeys на всех ваших доменах.
Сервер, на котором размещен основной rpID, отвечает за публикацию белого списка связанных источников.
Файл авторизации должен быть размещен по точному пути /.well-known/webauthn относительно корня домена основного rpID. Крайне важно, чтобы этот файл отдавался при следующих условиях:
Content-Type должен быть установлен в application/json..json. Правильный путь — /webauthn, а не /webauthn.json.Файл должен содержать один JSON-объект с одним ключом origins, значением которого является массив строк. Каждая строка в массиве — это полный источник (протокол, домен и необязательный порт), который авторизуется.
{ "origins": ["https://example.co.uk", "https://example.de", "https://example.fr"] }
Пример: Для rpID example.com файл должен быть доступен по адресу https://example.com/.well-known/webauthn (обратите внимание: без расширения .json).
После того как сервер настроен с файлом .well-known/webauthn, все связанные домены должны последовательно использовать один и тот же общий rpID в своих вызовах WebAuthn API. Эта координация критически важна для правильной работы ROR.
Ключевые требования к координации:
example.com, example.co.uk, example.de) должны передавать один и тот же общий rpID в API браузера navigator.credentials.Неправильная конфигурация даже на одном сайте — когда он по умолчанию использует свой собственный источник в качестве rpID вместо общего значения — нарушит единый опыт использования Passkeys для пользователей на этом домене.
Важно: Сервер ОБЯЗАН проверять поле origin в clientDataJSON для каждого запроса, убеждаясь, что оно соответствует одному из авторизованных связанных источников. Эта проверка источника является основным механизмом защиты от фишинга.
Запросы связанных источников (ROR) и протоколы федеративной идентификации (OIDC/SAML) решают разные проблемы. ROR не является заменой единого входа (Single Sign-On) — это дополнение, которое решает конкретный, узкий сценарий использования.
ROR подходит для одного логического приложения, распределенного по нескольким связанным доменам, которые используют одну и ту же базу данных пользователей:
amazon.com, amazon.de, amazon.co.uk)Что предоставляет ROR: Один и тот же Passkey работает на всех связанных доменах, избавляя пользователей от необходимости создавать отдельные Passkeys для каждого регионального сайта.
Используйте протоколы федеративной идентификации для настоящего единого входа (SSO) между различными приложениями:
Что предоставляют OIDC/SAML: Централизованную аутентификацию, при которой пользователи входят один раз у поставщика удостоверений (Identity Provider) (IdP) и получают доступ к нескольким поставщикам услуг (Service Providers, SP) через защищенные токены.
Важно: Passkeys можно использовать с обоими подходами. Вы можете внедрить Passkeys у централизованного IdP для федеративного SSO или использовать ROR для многодоменного единого приложения. Выбирайте подход исходя из вашей архитектуры, а не метода аутентификации.
Хотя ROR является мощным техническим решением, его внедрение должно быть обдуманным стратегическим решением. Архитекторы и менеджеры продуктов должны взвесить его преимущества по сравнению с альтернативными паттернами и понимать его ограничения, чтобы построить надежную и перспективную систему аутентификации.
Ключевым ограничением ROR является «лимит меток». «Метка» (label) в этом контексте относится к эффективному домену верхнего уровня плюс один уровень (eTLD+1), то есть к регистрируемой части доменного имени. Например:
shopping.com, shopping.co.uk и shopping.ca все используют одну метку «shopping»myshoppingrewards.com вводит новую, отличную метку: «myshoppingrewards»travel.shopping.com по-прежнему относится к метке «shopping»Спецификация WebAuthn Level 3 требует, чтобы реализации в браузерах поддерживали минимум пять уникальных меток в списке origins. По состоянию на 2025 год ни один из известных браузеров не поддерживает больше этого минимума в пять меток. Поэтому организациям следует проектировать свои развертывания ROR с учетом этого жесткого ограничения — рассматривайте пять как фактический максимум.
Это ограничение является преднамеренным механизмом защиты от злоупотреблений. Оно не позволяет таким сущностям, как провайдеры общего хостинга (например, wordpress.com), создавать универсальный Passkey, который мог бы работать на тысячах несвязанных поддоменов клиентов, что подорвало бы модель безопасности.
Для большинства организаций, даже для крупных международных брендов, этого лимита в пять меток достаточно. Например, различные национальные домены Amazon (amazon.com, amazon.de, amazon.co.uk и т.д.) все используют метку «amazon», оставляя четыре дополнительных слота для других брендов в их портфолио, таких как «audible» или «zappos».
Сложность внедрения ROR сильно зависит от того, вводится ли он в новую систему или дорабатывается в существующей.
.com). Этот rpID затем должен последовательно использоваться в конфигурации всех связанных веб-сайтов и приложений с первого дня.Понимание того, как известные компании внедряют запросы связанных источников, дает ценную информацию для вашей собственной стратегии развертывания. Ниже приведены примеры, основанные на реальных реализациях (по состоянию на октябрь 2025 года):
Microsoft использует ROR для своей инфраструктуры аутентификации. Фактическая конфигурация на login.microsoftonline.com включает:
// https://login.microsoftonline.com/.well-known/webauthn { "origins": ["https://login.microsoftonline.com", "https://login.live.com"] }
Этот консервативный подход позволяет совместно использовать Passkeys между корпоративным и потребительским порталами входа Microsoft, сохраняя при этом сфокусированный периметр безопасности.
Shopify внедряет ROR для объединения аутентификации на избранных доменах:
// https://shopify.com/.well-known/webauthn { "origins": ["https://shopify.com", "https://shop.app"] }
Эта конфигурация позволяет Shopify связать свою основную платформу с приложением Shop, демонстрируя сфокусированный подход к связанным источникам.
У Amazon довольно большой файл:
// https://amazon.com/.well-known/webauthn { "origins": [ "https://www.amazon.com", "https://www.amazon.com.br", "https://www.amazon.com.mx", "https://www.amazon.ca", "https://www.amazon.co.uk", "https://www.amazon.de", "https://www.amazon.it", "https://www.amazon.es", "https://www.amazon.nl", "https://www.amazon.se", "https://www.amazon.sa", "https://www.amazon.pl", "https://www.amazon.com.tr", "https://www.amazon.fr", "https://www.amazon.com.au", "https://www.amazon.sg", "https://www.amazon.ae", "https://www.amazon.eg", "https://www.amazon.co.za", "https://www.amazon.in", "https://brandregistry.amazon.com", "https://sellercentral.amazon.com", "https://sellercentral.amazon.com.br", "https://sellercentral.amazon.com.mx", "https://sellercentral.amazon.ca", "https://sellercentral.amazon.co.uk", "https://sellercentral.amazon.de", "https://sellercentral.amazon.it", "https://sellercentral.amazon.es", "https://sellercentral.amazon.nl", "https://sellercentral.amazon.se", "https://sellercentral.amazon.sa", "https://sellercentral.amazon.pl", "https://sellercentral.amazon.com.tr", "https://sellercentral.amazon.fr", "https://sellercentral.amazon.com.au", "https://sellercentral.amazon.sg", "https://sellercentral.amazon.ae", "https://sellercentral.amazon.eg", "https://sellercentral.amazon.co.za", "https://sellercentral.amazon.in", "https://na.account.amazon.com", "https://vendorcentral.amazon.com", "https://vendorcentral.amazon.com.br", "https://vendorcentral.amazon.com.mx", "https://vendorcentral.amazon.ca", "https://vendorcentral.amazon.co.uk", "https://vendorcentral.amazon.de", "https://vendorcentral.amazon.it", "https://vendorcentral.amazon.es", "https://vendorcentral.amazon.nl", "https://vendorcentral.amazon.se", "https://vendorcentral.amazon.pl", "https://vendorcentral.amazon.com.tr", "https://vendorcentral.amazon.fr", "https://vendorcentral.amazon.com.au", "https://vendorcentral.amazon.co.za" ] }
Этот паттерн позволяет бренду предоставлять единую аутентификацию с помощью Passkeys на региональных доменах, используя основной домен .com в качестве rpID.
Эти реальные примеры выявляют несколько ключевых паттернов:
.com в качестве канонического rpID.Как современный веб-стандарт, ROR был разработан с учетом безопасности в качестве основного приоритета и активно внедряется в основных браузерах.
Запросы связанных источников не компрометируют основные гарантии защиты от фишинга в WebAuthn. Механизм тщательно разработан для поддержания высокого уровня безопасности:
clientDataJSON. Сервер проверяющей стороны ОБЯЗАН проверить этот источник, чтобы убедиться, что запрос исходит из ожидаемого источника, предотвращая возможность того, что скомпрометированный связанный источник сможет выдать себя за другой..well-known/webauthn выполняется по HTTPS. Кроме того, спецификация предписывает, чтобы эта загрузка выполнялась без учетных данных (например, cookie) и без заголовка Referer. Это предотвращает использование запроса для утечки информации о пользователе или для межсайтового отслеживания..well-known/webauthn становится критически важным активом безопасности. Злоумышленник, получивший контроль над веб-сервером, на котором размещен основной rpID, потенциально может изменить этот файл, чтобы добавить свой вредоносный домен в белый список. Поэтому обеспечение безопасности инфраструктуры, которая обслуживает этот файл, имеет первостепенное значение.Запросы связанных источников — это функция спецификации WebAuthn Level 3. Поддержка в браузерах начала появляться в конце 2024 года:
| Операционная система | Браузер / Платформа | Версия поддержки | Статус |
|---|---|---|---|
| Android | Chrome, Edge | 128+ | ✅ Поддерживается |
| Chrome OS | Chrome, Edge | 128+ | ✅ Поддерживается |
| iOS / iPadOS | Все браузеры (Safari) | iOS 18+ | ✅ Поддерживается |
| macOS | Chrome, Edge | 128+ | ✅ Поддерживается |
| macOS | Safari | Safari 18 (macOS 15+) | ✅ Поддерживается |
| Ubuntu | Chrome, Edge | 128+ | ✅ Поддерживается |
| Windows | Chrome, Edge | 128+ | ✅ Поддерживается |
| Все платформы | Firefox | Не поддерживается | ⚠️ Используйте запасной вариант |
Ключевые факты:
Для приложений, которым необходимо поддерживать старые браузеры или Firefox, реализуйте запасную стратегию:
PublicKeyCredential.getClientCapabilities().Данные основаны на текущих матрицах поддержки по состоянию на октябрь 2025 года.
Внедрение запросов связанных источников требует тщательной координации между несколькими техническими командами и глубоких знаний протоколов WebAuthn. Платформа для внедрения Passkeys от Corbado устраняет эту сложность, предоставляя готовые корпоративные решения для развертывания Passkeys на нескольких доменах.
Corbado берет на себя техническую сложность запросов связанных источников через:
.well-known/webauthn с правильными заголовками безопасности и форматированием JSON.Помимо технической реализации, Corbado предоставляет фреймворк безопасности, необходимый предприятиям:
clientDataJSON для предотвращения злоупотреблений со связанными доменами.Для организаций с существующими развертываниями Passkeys Corbado предлагает:
Готовы внедрить запросы связанных источников в вашей организации? Команда экспертов Corbado поможет вам спроектировать и развернуть единый опыт использования Passkeys во всей вашей цифровой экосистеме. Свяжитесь с нашей командой по решениям, чтобы обсудить ваши конкретные требования и сроки.
Перспектива Passkeys заключается в их способности обеспечить будущее, которое будет одновременно более безопасным и удивительно простым для пользователей. Однако, чтобы это будущее стало реальностью в глобальном масштабе, стандарт должен учитывать архитектурные сложности современных цифровых брендов. Трудности, создаваемые строго привязанными к домену Passkeys, были серьезным препятствием для их внедрения организациями с многогранным онлайн-присутствием.
Запросы связанных источников WebAuthn (ROR) предоставляют стандартизированное, безопасное и изящное решение этой проблемы. Позволяя одному Passkey бесшовно работать на доверенном наборе связанных доменов, ROR устраняет основную причину путаницы и разочарования пользователей.
Это руководство ответило на пять критически важных вопросов по внедрению запросов связанных источников WebAuthn:
.well-known/webauthn для создания проверяемого белого списка связанных доменов, позволяя браузерам проверять междоменное использование Passkeys через безопасный процесс HTTPS-запроса..well-known/webauthn и координации на стороне клиента для последовательного использования общего rpID на всех связанных источниках.Для технических команд и руководителей продуктов важны следующие моменты:
.well-known/webauthn, и все клиентские приложения должны быть настроены на использование этого общего rpID.Такие функции, как запросы связанных источников, жизненно важны для дальнейшего развития движения к миру без паролей. Они демонстрируют приверженность органов стандартизации решению реальных проблем внедрения, гарантируя, что преимущества Passkeys — непревзойденная безопасность и легкий пользовательский опыт — будут доступны даже самым крупным и сложным организациям. По мере того как эта функция получит универсальную поддержку в браузерах, она сыграет решающую роль в устранении последних барьеров на пути к действительно глобальному интернету без паролей.
Related Articles
Table of Contents