FedCM の更新: パソコン版 Multi IdP API、Android 版 Chrome の Button Mode API と Continuation Bundle のオリジン トライアル

Natalia Markoborodova
Natalia Markoborodova

Chrome 128 以降、パソコンでは Multi-IdP API のオリジン トライアルが開始され、Android では Button Mode APIContinuation バンドルのオリジン トライアルが開始されます。マルチ IdP 機能を使用すると、デベロッパーは 1 回の get() 呼び出しで、サポートされている複数の ID プロバイダの配列を指定できます。Button Mode API は新しい UI を追加します。Button Mode API を使用すると、ID プロバイダは、API 呼び出し時にユーザーにアクティブな IdP セッションがなくても、FedCM API を使用できます。Continuation バンドルは Continuation API と Parameters API で構成されます。これらは IdP から提供される権限ダイアログを使用した OAuth 認証フローのような操作を可能にします。このバンドルには、Fields API、複数の configURL、カスタム アカウント ラベルなど、その他の変更も含まれています。

オリジン トライアル: Multi IdP API

この機能により、ユーザーはサポートされている一連の IdP からアカウントを選択でき、RP はログイン率と登録率が高くなるというメリットがあります。ユーザーが複数の IdP でログインしている場合は、いずれかの IdP を使用して RP にログインするよう求められます。

ユーザーがマルチ IdP API を使用して異なる IdP でログインしている。

IdP は、ユーザーの既存のアカウントとそれらに関連付けられたタイムスタンプに基づいて優先順位付けされます。

  • ユーザーが以前に特定の IdP を使用して RP にログインしたことがあれば(つまり「リピーター アカウント」がある場合)、その IdP が最初に表示されます。
  • 戻りアカウント内では、IdP は最後に使用されたタイムスタンプでさらに並べ替えられ、リストの先頭に最後に使用された IdP が表示されます。場合によっては、復帰したアカウントのタイムスタンプ データが Chrome にないことがあります。これは、FedCM にタイムスタンプ ログが実装される前にユーザーがログインしたためと考えられます。これらのアカウントは、タイムスタンプのあるアカウントの下に表示されます。
  • ユーザーが IdP でリピート アカウントを持っていない場合、RP が指定した順序が尊重されます。

FedCM では、デベロッパーがリクエストし、リピーター アカウントが 1 つある場合に、自動再認証が許可されます。複数の IdP の場合、複数の IdP の戻りアカウントが存在する場合、ユーザーは自動的に再認証されません。自動再認証では、再利用するアカウントが必須です。ブラウザは、アカウントを明示的に認識した場合にのみ、自動再認証を開始します。これは、ユーザーがこの RP でこの特定のアカウントで以前に FedCM を使用している必要があることを意味します。

ユーザーのログイン ステータスが IdP に対してログアウトに設定されている場合、FedCM を呼び出しても、その IdP のアカウントは取得されません。同様に、使用可能なすべての IdP でユーザーのステータスが「ログアウト」の場合、ウィジェット モードでは FedCM ログイン メッセージが自動的に表示されません。

IdP のブラウザに保存されているログイン ステータスがログイン済みであるにもかかわらず、取得リクエストによってこの IdP のアカウントが返されなかった場合(ユーザー セッションが期限切れになったが、ログイン ステータスがブラウザによってまだ更新されていない場合など)、IdP に不一致の UI が表示され、不一致の IdP でログインするようユーザーに提案されます。

ユーザーのログイン ステータスはログイン中だが、セッションが期限切れの場合、不一致の UI が表示されます。

ログイン ステータスの詳細については、ドキュメントをご覧ください。実装について詳しくは、デベロッパー ガイドをご覧ください。

オリジン トライアル: Multi IdP API

Multi IdP API は、デモ RP でユーザーとして、または Chrome 128 以降を使用しているデベロッパーとして試すことができます。

ユーザーとして試す

ユーザーとして試してみることもできます。次の点をご確認ください。

  • Chrome は、ページ chrome://settings/content/federatedIdentityApi でサードパーティのログイン プロンプトをブロックするように設定されていません。
  • 複数のデモ IdP にログインしている。デモページの手順に沿って操作します。

なお、オリジン トライアルに登録されていないサイトでマルチ IdP を試すには、chrome://flags/#fedcm-multi-idp でフィーチャー トグルを有効にする必要があります。

デベロッパーとして試す

ログイン プロバイダが RP に JavaScript SDK を埋め込んでいる場合(推奨)、複数の IdP を有効にする navigator.credentials.get() 呼び出しをプロバイダが実装できるため、RP デベロッパーはコードを変更する必要はありません。それ以外の場合は、RP が FedCM API を直接呼び出す必要があります。

RP で複数の IdP をテストするには、次のようにサポートされているプロバイダの配列を指定します。

try {
  const cred = await navigator.credentials.get({
    identity: {
      providers: [
        {
          configUrl: "https://idp1.example/foo.json", // first IdP
          clientId: "123",
        },
        {
          configUrl: "https://idp2.example/bar.json", // second IdP
          clientId: "456",
        }
      ]
    }
  });

  const token = cred.token;
  const currentConfigFileUrl = cred.configURL;

  if (cred.configURL === 'https://idp1.example/foo.json')  {
    // handle the token for idp1.example
  } else if (cred.configURL === 'https://idp2.example/bar.json') {
    // handle the token for idp2.example
  }
} catch (error) {
  console.error("Error during credential retrieval:", error);
}

生成されたオブジェクト内の configURL 属性には、ユーザーが認証した IdP の構成ファイルの URL が保存されます。結果の token の処理方法は IdP によって異なるため、RP が決定できます。

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

オリジン トライアルでは、新機能を試して、その使いやすさ、実用性、効果についてフィードバックを送信できます。詳しくは、オリジン トライアルのスタートガイドをご覧ください。

マルチ ID プロバイダ機能は、Chrome 128 以降のオリジン トライアルに登録することでお試しいただけます。

RP は、マルチ ID プロバイダを試すためにオリジンを登録し、ファーストパーティのオリジン トライアルを実施できます。IdP は、サードパーティのオリジン トライアルに登録し、Javascript SDK を使用するすべての RP でマルチ IdP 機能を利用することもできます。

オリジン トライアルへの参加手順:

  1. Multi IdP API オリジン トライアルの登録ページに移動します。
  2. [登録] ボタンをクリックし、フォームに記入してトークンをリクエストします。
  3. ファーストパーティのオリジン トライアルに登録するには、[ウェブオリジン] フィールドに RP のオリジンを入力します。サードパーティのオリジン トライアルの場合は、IdP の JavaScript SDK のオリジンを入力し、[サードパーティ マッチング] チェックボックスをオンにします。
  4. [送信] をクリックします。
  5. RP ページで発行されたトークンを指定します。
    • ファーストパーティ オリジン トライアルの参加者の場合:
      • <head> 内のメタタグとして: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
      • HTTP ヘッダーの場合: Origin-Trial: TOKEN_GOES_HERE
    • サードパーティのオリジン トライアルの参加者の場合:
      • プログラムによってトークンを提供する。

Android 版 Chrome 用 Button Mode API

Chrome バージョン 128 以降、Button Mode API のオリジン トライアルは、Android 版 Chrome で開始されます。これは、最初のパソコン版トライアルに続いて行われます。Button Mode API を使用すると、ID プロバイダは、ユーザーが API 呼び出し時に IdP からログアウトしている場合でも、FedCM API を使用できます。ログインフローはユーザー操作によって開始されるため、ユーザーの意図をより正確に反映できます。

Chrome 128 では、IdP が RP の公式ロゴアイコンを クライアント メタデータ エンドポイント レスポンスに直接含めることができる新機能が導入されます。これにより、ボタンモードのモバイル デバイスの UI が改善されます。

構成ファイル内の IdP ブランディングと同様に、RP のアイコンは IdP 側で構成し、次のように client_metadata_endpoint レスポンスで返すことができます。

  "privacy_policy_url": "https://rp.example/privacy_policy.html",
  "terms_of_service_url": "https://rp.example/terms_of_service.html",
  "icons": [{
      "url": "https://idp.example/rp-icon.ico",
      "size": 40
   }]
IdP と RP のロゴアイコン。
モバイルの開示 UI にある IdP と RP のロゴアイコン。

アイコンのサポートについて詳しくは、デベロッパー向けドキュメントをご覧ください。

ユーザーがまだログインしていない場合、FedCM は Chrome カスタムタブ(CCT)を通じて IdP から提供される login_url を使用して IdP にログインするようユーザーに求めます。

ユーザーがモバイルでボタンモードでログインしています。

ユーザーが以前に使用したアカウントで再認証する場合、開示 UI は表示されません。

ユーザーが以前に使用したアカウントでログインしている。開示 UI は表示されません。

オリジン トライアルに登録するには、パソコン版 Button Mode API の手順をご覧ください。パソコンでオリジン トライアルにすでに登録している場合は、Chrome 128 以降、Android 版 Chrome で自動的にこの機能を利用できるようになります。

Android 版 Chrome 用 Continuation API バンドル

Chrome バージョン 128 以降、Continuation API バンドルが、パソコンでの最初のトライアルに続いて、オリジン トライアルの一環として Android 版 Chrome で利用可能になります。このバンドルは、Continuation APIParameters APIFields API複数の configURLカスタム アカウント ラベルなど、FedCM の複数の機能で構成されています。

Continuation API を使用すると、複数ステップのログインフローが可能になります。Parameters API を使用すると、追加のパラメータを IdP に渡すことができます。Fields API を使用すると、RP は FedCM ダイアログの開示 UI の特定のアカウント属性をリクエストできます。また、複数の configURL は IdP 用の複数の構成ファイルをサポートしています。カスタム アカウント ラベルを使用すると、IdP がアカウントにアノテーションを付け、RP がこれらのラベルでアカウントをフィルタできるようになります。

Continuation API バンドルについて詳しくは、パソコン版 Continuation API バンドルに関するブログ投稿をご覧ください。オリジン トライアルに登録するには、こちらの手順に沿って操作してください。パソコンでオライジナル トライアルにすでに登録している場合は、Chrome 128 以降、Android 版 Chrome で自動的にこれらの機能をご利用いただけるようになります。

意見交換とフィードバックの提供

フィードバックがある場合や問題が発生した場合は、問題を報告してください。正規の FedCM デベロッパー ガイドは、蓄積された更新ログのページとともに、常に最新の状態に保たれます。