Поддержка автоматической повторной аутентификации в FedCM

Chrome поддерживает автоматическую повторную аутентификацию в FedCM

API федеративного управления учетными данными (FedCM) — это веб-API для федерации удостоверений, сохраняющей конфиденциальность. При федерации удостоверений RP (проверяющая сторона) полагается на IdP (поставщика удостоверений), чтобы предоставить пользователю учетную запись, не требуя нового имени пользователя и пароля.

FedCM позволяет браузеру понять контекст, в котором RP и IdP обмениваются информацией. Он информирует пользователя о передаваемой информации и уровнях привилегий и предотвращает непреднамеренное злоупотребление. FedCM доступен в Chrome начиная с версии 108.

В Chrome 115 FedCM получает поддержку автоматической повторной аутентификации, которая улучшает взаимодействие с пользователем и обеспечивает более упрощенную повторную аутентификацию для RP после первоначального согласия.

Автоматическая повторная аутентификация

В настоящее время после того, как пользователь создал федеративную учетную запись на RP с IdP через API FedCM , при следующем посещении веб-сайта ему необходимо выполнить те же шаги в пользовательском интерфейсе. Это означает, что пользователю необходимо будет явно и вручную повторно подтвердить повторную аутентификацию и продолжить процесс входа.

Хотя явный пользовательский интерфейс имеет смысл до того, как пользователь создал федеративную учетную запись, чтобы предотвратить отслеживание (что является одной из основных целей FedCM), он становится излишне громоздким после того, как пользователь прошел через это один раз: после того, как пользователь предоставляет разрешение на разрешение связи между RP и IdP, нет никаких преимуществ конфиденциальности или безопасности для принудительного подтверждения другого явного пользователя для чего-то, что он уже ранее подтвердил. Вот почему мы представляем более оптимизированный пользовательский интерфейс, который RP могут выбрать для своих вернувшихся пользователей.

Автоматическая повторная аутентификация FedCM («автоматическая повторная аутентификация» вкратце) может позволить пользователям автоматически проходить повторную аутентификацию, когда они возвращаются после первоначальной аутентификации с использованием FedCM. «Первоначальная аутентификация» здесь означает, что пользователь создает учетную запись или входит на веб-сайт RP, впервые нажав кнопку «Продолжить как...» в диалоговом окне входа FedCM в одном и том же экземпляре браузера.

Диалоговое окно, на которое пользователь нажимает, чтобы создать учетную запись или пройти аутентификацию.
Диалоговое окно, на которое пользователь нажимает, чтобы создать учетную запись или пройти аутентификацию.

Выберите вариант автоматической повторной аутентификации

Хотя мы вводим автоматическую повторную аутентификацию, чтобы обеспечить лучший UX и привести в соответствие со спецификацией, пользовательский интерфейс по умолчанию будет другим без каких-либо изменений кода. При наличии автоматической повторной аутентификации браузер меняет свое поведение в зависимости от параметра, выбранного вами в параметре mediation , который разработчики предоставляют с помощью navigator.credentials.get() .

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
  },
  mediation: 'optional', // this is the default
});

mediation — это свойство API управления учетными данными . Оно ведет себя так же, как и для PasswordCredential и FederatedCredential , а также частично поддерживается PublicKeyCredential . Свойство принимает следующие четыре значения:

  • 'required' : для продолжения всегда требуется посредничество, например нажатие кнопки «Продолжить» в пользовательском интерфейсе. Выберите этот вариант, если ожидается, что ваши пользователи будут явно предоставлять разрешение каждый раз, когда им необходимо пройти аутентификацию.
  • 'optional' (по умолчанию): если возможно, выполняется автоматическая повторная аутентификация, в противном случае требуется посредничество. Мы рекомендуем выбрать эту опцию на странице входа.
  • 'silent' : если возможно, выполните автоматическую повторную аутентификацию, в противном случае — молчаливый сбой, не требуя посредничества. Мы рекомендуем выбирать этот параметр на страницах, отличных от специальной страницы входа, но на которых вы хотите, чтобы пользователи оставались в системе, например на странице товара на веб-сайте доставки или странице статьи на новостном веб-сайте.
  • 'conditional' : используется для WebAuthn и на данный момент недоступен для FedCM.

При этом вызове автоматическая повторная аутентификация происходит при следующих условиях:

  • FedCM доступен для использования. Например, пользователь не отключил FedCM ни глобально , ни для RP в настройках.
  • Пользователь использовал только одну учетную запись с FedCM API для входа на веб-сайт в этом браузере.
  • Пользователь входит в IdP с этой учетной записью.
  • Автоматическая повторная аутентификация не произошла в течение последних 10 минут.
  • RP не вызвал navigator.credentials.preventSilentAccess() после предыдущего входа в систему.

При выполнении вышеуказанных условий попытка автоматической повторной аутентификации пользователя начинается сразу после вызова FedCM navigator.credentials.get() .

Пользователь автоматически проходит повторную аутентификацию через FedCM.

Принудительное посредничество с помощью preventSilentAccess()

Автоматическая повторная аутентификация пользователей сразу после выхода из системы не обеспечит хорошего пользовательского опыта. Вот почему FedCM имеет 10-минутный период молчания после автоматической повторной аутентификации, чтобы предотвратить такое поведение. Это означает, что автоматическая повторная аутентификация происходит не чаще одного раза в 10 минут, если только пользователь не войдет в систему повторно в течение 10 минут. RP должна вызвать navigator.credentials.preventSilentAccess(), чтобы явно запросить у браузера отключить автоматическую повторную аутентификацию, когда пользователь явно выходит из RP, например, нажав кнопку выхода.

function signout() {
  navigator.credentials.preventSilentAccess();
  location.href = '/signout';
}

Пользователи могут отказаться от автоматической повторной аутентификации в настройках.

Пользователи могут отказаться от автоматической повторной аутентификации в меню настроек:

  • В настольном Chrome перейдите в chrome://password-manager/settings > Войти автоматически.
  • В Android Chrome откройте «Настройки» > «Менеджер паролей» > нажмите на шестеренку в правом верхнем углу > «Автоматический вход».

Отключив переключатель, пользователь может полностью отказаться от автоматической повторной аутентификации. Этот параметр сохраняется и синхронизируется на всех устройствах, если пользователь вошел в учетную запись Google на экземпляре Chrome и включена синхронизация.

Поделиться отзывом

Если вы тестируете FedCM, вы можете поделиться своими отзывами или любыми проблемами, с которыми вы столкнулись, на crbug.com в компоненте «Blink>Identity>FedCM» .

Фото Ноа Сэмюэля Франца на Unsplash