API управления федеративными учётными данными (FedCM)
Доступ ограничен
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальная технология: Это экспериментальная технология.
Перед использованием в рабочей среде внимательно изучите таблицу совместимости браузеров.
API управления федеративными учётными данными (или API FedCM) предоставляет стандартный механизм для поставщиков удостоверений (IdP) для предоставления веб-сервисов федерации идентификации безопасным для конфиденциальности способом без использования куки сторонних сайтов и перенаправлений. Это включает JavaScript API, который позволяет использовать федеративную аутентификацию для таких действий, как вход или регистрация на веб-сайте.
Концепции FedCM
Федерация идентификации — это делегирование аутентификации пользователя от веб-сайта, требующего регистрации или входа пользователя, например, сайта электронной коммерции или социальной сети (также известного как доверенная сторона или RP), к доверенному поставщику удостоверений (IdP), например, Google, Facebook/Meta, GitHub и т.д.
Доверенные стороны (RP) могут интегрироваться с IdP, позволяя пользователям входить в систему с помощью учётных записей, которые они зарегистрировали в IdP. Федерация идентификации с помощью небольшого набора специализированных IdP улучшила веб-аутентификацию в отношении безопасности, доверия пользователей и удобства использования по сравнению со случаем, когда каждый сайт управляет своими потребностями ввода с помощью отдельных имен пользователей и паролей.
Проблема в том, что традиционная федерация идентификации полагается на <iframe>, перенаправления и куки сторонних сайтов, которые также используются для отслеживания сторонними сайтами. Браузеры ограничивают использование этих функций для защиты конфиденциальности пользователей, но побочным эффектом является то, что это затрудняет реализацию законных, не отслеживающих использований, что включает федерацию идентификации.
Это влияет на федеративный вход в систему в целом, а также на более специфические случаи использования федерации идентификации:
-
Выход из системы в переднем канале OIDC: Этот поток требует, чтобы IdP встроил несколько RP
<iframe>s, которые полагаются на куки RP. - Социальные виджеты: Для предоставления социальных виджетов куки IdP стороннего сайта должны быть предоставлены из корневого происхождения RP.
- Персонализированные кнопки: Отображение персонализированной информации о входе на
<button>в происхождении RP реализуется как IdP<iframe>, который требует куки сторонних сайтов. - Обновление сессии без навигации по верхнему уровню или всплывающих окон.
FedCM призван решить эту проблему, предоставив выделенный механизм для федеративных потоков идентификации в веб-приложениях и позволяя поддерживающим браузерам предоставлять специальные элементы пользовательского интерфейса на RP, позволяя пользователям выбирать учётную запись IdP для входа.
Для использования API FedCM существуют две части, которые описаны в руководствах ниже:
- Интеграция IdP с FedCM — что должен предоставить поставщик удостоверений, чтобы RP смог с ним интегрироваться.
-
Федеративный вход RP — функциональность FedCM, необходимая RP для входа пользователя с помощью его учётной записи IdP. Запрос на вход в FedCM инициируется с использованием метода
navigator.credentials.get().
Примечание: Google Sign In — это пример IdP, который уже поддерживает FedCM. Переход на FedCM содержит инструкции для RP, которые хотят перевести существующие приложения с использованием Google Sign In на федеративный вход.
Интеграция с политикой разрешений и поддержка <iframe>
Можно использовать identity-credentials-get Политику разрешений для управления разрешением на использование FedCM, то есть использования метода get().
Разработчики могут явно предоставить разрешение фрейму <iframe> на использование FedCM с помощью атрибута allow:
<iframe src="3rd-party.example" allow="identity-credentials-get"></iframe>
Доступность FedCM внутри <iframe>s позволяет использовать несколько случаев:
- Крупные сайты не захотят, чтобы скрипт входа стороннего поставщика получил контроль над фреймом верхнего уровня; вместо этого они захотят добавить этот скрипт и вызвать FedCM изнутри фрейма
<iframe>. - Некоторые
<iframes>могут сами потребовать федеративную аутентификацию.
Интерфейсы
IdentityCredential-
Представляет учётные данные пользователя, полученные в результате успешной федеративной аутентификации. Успешный вызов
navigator.credentials.get()с опциейidentityзавершается созданием экземпляраIdentityCredential. IdentityProvider-
Представляет IdP и предоставляет доступ к связанной информации и функциональности.
-
Определяет функциональность входа для IdP, включая метод
Navigator.login.setStatus()для обновления статуса входа IdP.
Расширения других интерфейсов
-
CredentialsContainer.get(), опцияidentity. -
identity— это объект, содержащий данные о федеративных IdP, которые веб-сайт доверенной стороны (RP) может использовать для входа пользователей. Он вызывает вызовget()для инициирования запроса на вход пользователя в RP с помощью IdP. -
Предоставляет доступ к объекту браузера
NavigatorLogin.
HTTP-заголовки
Set-Login-
Предоставляет HTTP-механизм для обновления статуса входа через HTTP.
Примеры
Спецификации
| Спецификация |
|---|
| API управления федеративными учётными данными # browser-api-identity-credential-interface |
Совместимость браузеров
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
FedCM_API |
108 | 108 | Нет | 94 | Нет | 108 | Нет | 73 | Нет | 21.0 | Нет |
disconnect_static |
122 | 122 | Нет | 108 | Нет | 122 | Нет | 81 | Нет | 26.0 | Нет |
isAutoSelected |
120 | 120 | Нет | 106 | Нет | 120 | Нет | 80 | Нет | 25.0 | Нет |
token |
108 | 108 | Нет | 94 | Нет | 108 | Нет | 73 | Нет | 21.0 | Нет |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/FedCM_API