- そのアカウントを 接続済みアカウント としてユーザーに関連付けます。
- 接続済みアカウント用の外部プロバイダーのアクセストークンとリフレッシュトークンを Token Vault に保存します。
ユーザー認証と Connected Accounts の違い
/authorize エンドポイント) ではなく、Connected Accounts フロー (/me/v1/connected-accounts エンドポイント) を使用して、アクセストークンとリフレッシュトークンを取得し、Token Vault に保存します。Connected Accounts フローが正常に完了すると、Auth0 はそのユーザーアカウントをユーザープロファイルの connected_accounts 配列に追加します。これに対して、ソーシャルまたはエンタープライズのログインフローでは、Auth0 はそのユーザーアカウントをユーザープロファイルの identities 配列に追加します。
次の表は、ユーザー認証フローと Connected Accounts フローの違いを説明しています。
サポートされているソーシャル接続またはエンタープライズ接続では、ユーザー認証、Connected Accounts、またはその両方を有効にできます。次の表は、接続にスコープを渡す方法を含め、Purpose 設定ごとの動作を説明しています。
動作の仕組み
アプリケーションで Organizations を使用している場合は、Connected Accounts フローを開始する前に、対象の組織でユーザーを認証してください。Token Vault は接続済みアカウントをユーザーの Auth0 プロファイルに保存するため、各組織メンバーは自分の外部アカウントを接続して認可することになります。

- クライアントアプリケーションは、外部プロバイダーに送信するスコープやその他のパラメーターを渡して、My Account API の
/me/v1/connected-accounts/connectエンドポイントにPOSTリクエストを送信します。詳しくは、Connected Accounts リクエストを開始するを参照してください。 - My Account API は、一意の
auth_sessionと、ユーザーを Web ブラウザーにリダイレクトするためのticketを含むconnect_uriを作成します。クライアントアプリケーションは、後で検証するためにauth_sessionを保存します。DPoP が構成されている場合、My Account API は DPoP Proof JWT を検証します。 - クライアントアプリケーションは、ブラウザーでユーザー認証と認可を行うため、クエリーパラメーターとして
ticketを含むconnect_uriにユーザーをリダイレクトします。クライアントアプリケーションは、Authorization Code Flow with PKCE と同様に、code_challengeまたはcode_challenge_methodを URL に渡すこともできます。 - ユーザーは同意画面で接続を行い、その接続に必要な権限を認可します。
- ユーザーが接続を正常に認可すると、外部プロバイダーはユーザーを My Account API にリダイレクトし、My Account API は単回使用の
connect_codeを含むredirect_uriを使ってユーザーをクライアントアプリケーションにリダイレクトします。 - クライアントアプリケーションは、
/me/v1/connected-accounts/completeエンドポイントにPOSTリクエストを送信して、connect_code、code_verifier(該当する場合) 、および元のauth_sessionを My Account API に提示します。詳しくは、Connected Accounts リクエストを完了するを参照してください。 - My Account API は、次の点を確認してリクエストを検証します。
auth_sessionが、そのユーザーに対して元々発行された ID と一致すること- リクエストが Connected Accounts フローを開始したときと同じデバイスから送信されていること
- DPoP Proof JWT (構成されている場合)
- 単回使用の
connect_code code_verifier(PKCE フローを使用している場合)
- 検証に成功すると、Auth0 認可サーバーはユーザープロファイルの
connected_accounts配列にアカウントを追加し、接続済みアカウントのアクセストークンとリフレッシュトークンを Token Vault に保存します。 - My Account API は、アカウントが正常に接続されたことを示す
200ステータスコードをクライアントアプリケーションに返して、フローを完了します。
前提条件
- 各接続済みアカウントに関連付けられたアクセストークンとリフレッシュトークンを Token Vault に安全に保存できるよう、クライアントアプリケーションの Token Vault を設定 します。
- 認証済みユーザーがアカウントの接続と管理に使用する My Account API を設定 します。
- My Account API のアクセストークンを取得できるよう、Multi-Resource Refresh Token (MRRT) を設定 します。
- (任意) アクセストークンに sender constraint を適用してトークンの盗難を防ぐため、My Account API とクライアントアプリケーションの DPoP を設定 します。My Account API は、デフォルトで DPoP にバインドされたアクセストークンを受け入れることができます。
My Account API を設定する
- Applications > APIs に移動し、My Account API を有効化します。
- 有効化したら、Auth0 My Account API を選択し、Application Access タブを開きます。
- 対象のクライアントアプリケーションを見つけて Edit を選択し、アプリケーションアクセスポリシーを設定します。
- User Access を選択し、Authorization で Authorized を選択します。
- 権限については、そのアプリケーションに対して Connected Accounts スコープ を All で選択します。
- Save を選択します。これにより、クライアントアプリケーションがユーザーに代わって Connected Accounts のスコープで My Account API にアクセスできるようにするクライアントグラントが作成されます。
- Multi-Resource Refresh Token を使用している場合は、Settings タブに移動します。Access Settings で Allow Skipping User Consent を選択します。
Multi-Resource Refresh Token を設定する
- Auth0 Dashboard
- Management API
Auth0 Dashboard で MRRT を設定するには、次の手順に従います。
- Applications > Applications に移動し、対象のアプリケーションを選択します。
- Multi-Resource Refresh Token で Edit Configuration を選択します。
- My Account API で MRRT を有効にするには、My Account API をオンにします。
Connected Accounts を設定する
- Authentication > Social Connections または Enterprise Connections に移動し、接続を選択します。
- Applications を選択し、クライアントアプリケーションに対してその接続をオンにします。
- Auth0 Dashboard
- Management API
Auth0 Dashboard を使用して Connected Accounts を設定するには:
- Authentication > Social Connections または Enterprise Connections に移動します。
- Create Connection を選択するか、既存の接続を選択します。
- Purpose で Connected Accounts for Token Vault をオンにします。Purpose の設定によっては、Auth0 Dashboard で
offline_accessを有効にする必要があります。これにより、クライアントアプリケーションは Connected Accounts フロー中に外部プロバイダーからリフレッシュトークンを取得できるようになります。詳しくは、ユーザー認証と Connected Accounts の違い を参照してください。 - Save をクリックします。
Connected Accounts のアクセストークンを取得する
リフレッシュトークンを取得する
offline_scope と、My Account API 識別子 https://{yourDomain}/me/ に対する使い捨ての認可コードを含む、コンフィデンシャルクライアント向けの認可コードフローリクエストです。
/token エンドポイントでリフレッシュトークンに交換します。
リフレッシュトークンを My Account API のアクセストークンに交換する
Connected Accounts リクエストを開始する
/me/v1/connected-accounts/connect エンドポイントに POST リクエストを送信します。
Google のソーシャル接続では、接続の設定時に Auth0 Dashboard で
offline_access を選択していることを確認してください。これは、クライアントアプリケーションが Auth0 認可サーバーからリフレッシュトークンを取得するために必要です。ticket をクエリパラメーターとして指定した connect_uri にアクセスします。同意画面でスコープの一覧を承認し、URL フラグメントから connect_code を抽出して保存します。
Connected Accounts リクエストを完了する
/me/v1/connected-accounts/complete エンドポイントに POST リクエストを送信します。
接続済みアカウントの管理
/me/v1/connected-accounts コレクションを使用します。
/connected-accounts コレクションを使用する前に、接続済みアカウント用のアクセストークンを取得してください。
接続済みアカウントの接続を照会する
/me/v1/connected-accounts/connections エンドポイントに GET リクエストを送信します:
接続済みアカウントを照会する
/me/v1/connected-accounts/accounts エンドポイントに GET リクエストを送信します。
/users/{userId}/connected-accounts エンドポイントに GET リクエストを送信すると、ユーザープロファイルに紐付けられたアカウントの一覧を取得することもできます。
指定した接続の接続済みアカウントを照会する
GET リクエストを /me/v1/connected-accounts/accounts エンドポイントに送信し、クエリパラメーターとして接続名を指定すると、ユーザープロファイルに関連付けられた指定の接続でフィルタリングされた接続済みアカウントの一覧が返されます。
google-oauth2 接続で絞り込まれた、次のようなレスポンスを返します。
接続済みアカウントを削除
/me/v1/connected-accounts/accounts/{connectedAccountId} エンドポイントに DELETE リクエストを実行します。