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 で構成されます。これらの API を使用すると、IdP から提供された権限ダイアログを使用した OAuth 認証フローのような操作が可能になります。このバンドルには、Fields API、複数の configURL、カスタム アカウント ラベルなど、その他の変更も含まれています。

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

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

<ph type="x-smartling-placeholder">
</ph>
あるユーザーが multi-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 でログインすることをユーザーに提案します。

<ph type="x-smartling-placeholder">
</ph>
ユーザーのログイン ステータスがログイン中であるが、セッションの有効期限が切れている場合は、不一致の 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 が処理方法を決定できます。

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

オリジン トライアルでは、新機能を試して、ユーザビリティ、実用性、有効性に関するフィードバックを提供できます。詳しくは、オリジン トライアルのスタートガイドをご覧ください。

Chrome 128 以降、オリジン トライアルに登録することで、マルチ IdP 機能を試すことができます。

複数の IdP を試すには、RP で送信元を登録し、ファーストパーティのオリジン トライアルを実行します。また、IdP をサードパーティのオリジン トライアルに登録し、JavaScript SDK を使用してすべての RP でマルチ IdP 機能を利用することもできます。

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

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

Android 版 Chrome 用 Button Mode API

Chrome バージョン 128 以降、Button Mode API のオリジン トライアルは、Android 版 Chrome で開始されます。これは、最初のパソコン版トライアルに続いて行われます。Button Mode API を使用すると、ユーザーが API 呼び出しで IdP からログアウトされていても、ID プロバイダは 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
   }]
<ph type="x-smartling-placeholder">
</ph> IdP と RP のロゴアイコン。
モバイルの開示 UI に表示される IdP と RP のロゴアイコン。

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

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

<ph type="x-smartling-placeholder">
</ph>
ユーザーがモバイルでボタンモードでログインしようとしている。

ユーザーがリピーター アカウントで再認証されている場合、開示 UI は表示されません。

<ph type="x-smartling-placeholder">
</ph>
ユーザーがリピーター アカウントを使用してログインしています。開示 UI は表示されません。

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

Android 版 Chrome 用 Continuation API バンドル

Chrome バージョン 128 以降、Android 版 Chrome では、パソコンでの最初のトライアル後、オリジン トライアルの一部として Continuation API バンドルを利用できるようになります。このバンドルは、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 デベロッパー ガイドは、蓄積された更新ログのページとともに、常に最新の状態に保たれます。