FedCM の最新情報: 自動再認証のオリジン トライアル

自動再認証の新しいオリジン トライアルなど、FedCM のアップデートがいくつか導入されました。

Federated Credential Management API(FedCM)は、プライバシー保護 ID 連携のためのウェブ API です。ID 連携では、RP(リライング パーティ)は IdP(ID プロバイダ)を使用して、新しいユーザー名とパスワードを必要とせずにユーザーにアカウントを提供します。

FedCM は専用 API です。これにより、ブラウザは RP と IdP が情報を交換するコンテキストを理解し、共有される情報と権限レベルをユーザーに通知して、意図しない不正使用を防ぐことができます。

更新

Chrome の FedCM 実装が一部更新されました。

API の過去のすべての更新については、Federated Credential Management API の更新をご覧ください。

最新バージョンの FedCM には新しい自動再認証機能が含まれています。この機能により、ユーザーが FedCM を使用した初回認証の後に戻ってきたときに、ユーザーを自動的に再認証できます。Chrome 112 以降、オリジン トライアルとして自動再認証を利用できます。

自動再認証

現在、ユーザーが FedCM を介して IdP を使用して RP に連携アカウントを作成した後、次回ウェブサイトにアクセスするときに、ユーザー インターフェースで同じ手順を実施する必要があります。つまり、ログインフローを進めるには、明示的な確認と再認証を行う必要があります。FedCM の主な目標の 1 つは隠れたトラッキングを防ぐことであるため、このユーザー エクスペリエンス(UX)は、ユーザーがフェデレーション アカウントを作成する前は理にかなっていますが、ユーザーがフェデレーション アカウントを作成した後は不要で面倒なものになります。ユーザーが RP と IdP 間の通信を許可した後は、すでに確認済みであることに対して別の明示的なユーザー確認を強制しても、プライバシーやセキュリティ上のメリットはありません。そのため Chrome では、RP がリピーター向けに選択できる、より合理的な UX を導入しています。

FedCM 自動再認証(略して「自動再認証」)は、ユーザーが FedCM を使用した初回認証の後で戻ってきたときに、(RP のオプトイン時に)ユーザーを自動的に再認証します。ここでの「初回認証」とは、ユーザーがアカウントを作成するか、同じブラウザ インスタンスで FedCM のログイン ダイアログで [Continue as...] ボタンをタップして RP のウェブサイトにログインすることを意味します。

アカウントの作成または認証を行うためにユーザーがタップするダイアログ。
アカウントの作成または認証を行うためにユーザーがタップするダイアログ。

RP は、autoReauthn: true を指定して navigator.credentials.get() を呼び出すことで、自動再認証をリクエストできます。

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
    // NOTE: We are exploring different API options to expose this
    // functionality here:
    // https://github.com/fedidcg/FedCM/issues/429#issuecomment-1426358523
    // You should expect that, as a result of the origin trial, we'll
    // learn more from developers and browser vendors what works best here.
    autoReauthn: true, // default to false
  },
});

この呼び出しでは、次の条件で自動再認証が行われます。

  • FedCM を使用できる。たとえば、ユーザーがグローバルでも RP でも FedCM を無効にしていない。
  • ユーザーは 1 つの FedCM アカウントのみを使用して、このブラウザでウェブサイトにログインしました。
  • ユーザーはそのアカウントで IdP にログインしています。
  • 自動再認証が過去 10 分以内に行われていません。

上記の条件が満たされると、FedCM navigator.credentials.get() が呼び出されるとすぐにユーザーの自動再認証の試行が開始されます。

ユーザーが FedCM を使用して RP に対して自動再認証を行っている

試してみる

Chrome 112 以降で Chrome フラグ chrome://flags#fedcm-auto-re-authn を有効にすると、FedCM の自動再認証をローカルで試すことができます。

テスト目的で、ブラウザデータを削除して 10 分間の保留期間をリセットできます。

  1. chrome://history に移動します。
  2. 検索履歴ボックスに、RP の送信元を入力します。
  3. その他アイコン ⋮ をクリックして、[履歴から削除] を選択します。
  4. Chrome を再起動します。

オリジン トライアルに参加する

Chrome 112 ~ Chrome 114 で利用可能なサードパーティ オリジン トライアルに参加することで、ウェブサイトでこの機能を有効にすることもできます。

オリジン トライアルでは、新しい機能を試し、そのユーザビリティ、実用性、有効性をウェブ標準コミュニティにフィードバックできます。詳しくは、ウェブ デベロッパー向けのオリジン トライアル ガイドをご覧ください。 このオリジン トライアルまたは別のオリジン トライアルに登録するには、登録ページにアクセスしてください。

サードパーティのオリジン トライアルに登録し、サードパーティでこの機能を有効にするには:

  1. オリジン トライアルの登録ページに移動します。
  2. [登録] ボタンをクリックし、フォームに記入してトークンをリクエストします。
  3. 配信元を「ウェブオリジン」と入力します。
  4. 他の生成元の JavaScript でトークンを挿入するには、[サードパーティ マッチング] をオンにします。
  5. [送信] をクリックします。
  6. 発行されたトークンをサードパーティに埋め込みます。

トークンをサードパーティに埋め込むには、登録されているウェブサイトのオリジンから提供される JavaScript ライブラリまたは SDK に、次のコードを追加します。

const tokenElement = document.createElement('meta');
tokenElement.httpEquiv = 'origin-trial';
tokenElement.content = 'TOKEN_GOES_HERE';
document.head.appendChild(tokenElement);

TOKEN_GOES_HERE は、独自のトークンに置き換えます。

交流とフィードバックの共有

テスト中にフィードバックがある場合や問題が発生した場合は、crbug.com[Blink] > [Identity] > [FedCM] コンポーネントから共有できます。

写真撮影: Alex PerzUnsplash