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

- クライアントアプリケーションは、外部プロバイダーに送信するスコープやその他のパラメータを渡して、My Account API の
/me/v1/connected-accounts/connectエンドポイントにPOSTリクエストを送信します。詳しくは、Connected Accounts リクエストを開始するを参照してください。 - My Account API は、一意の
auth_sessionと、ユーザーをウェブブラウザーにリダイレクトするためのticketを含むconnect_uriを作成します。クライアントアプリケーションは、後で検証するためにauth_sessionを保存します。DPoP が設定されている場合、My Account API は DPoP Proof JWT を検証します。 - クライアントアプリケーションは、ブラウザーでユーザーの認証と認可を行うため、
ticketをクエリパラメータとして含むconnect_uriにユーザーをリダイレクトします。クライアントアプリケーションは、PKCE を使用した Authorization Code フロー と同様に、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 Authorization Server はアカウントをユーザープロファイルの
connected_accounts配列に追加し、接続済みアカウントのアクセストークンとリフレッシュトークンを Token Vault に保存します。 - My Account API は、アカウントが正常に接続されたことを示す
200ステータスコードをクライアントアプリケーションに返し、フローを完了します。
前提条件
Connected Accounts を設定する前に、次の設定が完了していることを確認してください。- 各接続済みアカウントに関連付けられたアクセストークンとリフレッシュトークンを Token Vault に安全に保存できるよう、クライアントアプリケーションに対して Configure Token Vault を行います。
- 認証済みユーザーがアカウントを接続および管理するために使用する Configure the My Account API を行います。
- My Account API 用のアクセストークンを取得するため、Configure Multi-Resource Refresh Token (MRRT) を行います。
- (任意) My Account API とクライアントアプリケーションに対して Configure DPoP を行い、アクセストークンに送信者制約を適用してトークンの盗難を防止します。デフォルトでは、My Account API は DPoP にバインドされたアクセストークンを受け入れることができます。
My Account API を設定する
Connected Accounts を使用するには、Auth0 Dashboard で My Account API を設定します。- アプリケーション > 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 を使用している場合は、設定 タブに移動します。Access Settings で Allow Skipping User Consent を選択します。
マルチリソース リフレッシュトークンを設定する
マルチリソース リフレッシュトークン (MRRT) を設定すると、ユーザーが再度認証しなくても、新しい My Account API のアクセストークンや他の API 用のアクセストークンと交換できる、単一の長期間有効なリフレッシュトークンを取得できます。 MRRT は、Auth0 Dashboard または Management API で設定できます。- Auth0 Dashboard
- Management API
Auth0 Dashboard で MRRT を設定するには、次の手順を実行します。
- アプリケーション > アプリケーション に移動し、対象のアプリケーションを選択します。
- Multi-Resource Refresh Token で Edit Configuration を選択します。
- My Account API で MRRT を有効にするには、My Account API をオンにします。
Connected Accounts を設定する
接続に Connected Accounts を設定する前に、その接続がクライアントアプリケーションで認可されていることを確認してください。 Auth0 Dashboard では、次のように操作します。- Authentication > Social Connections または Enterprise Connections に移動し、接続を選択します。
- アプリケーション を選択し、クライアントアプリケーションに対してその接続をオンにします。
- 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 のアクセストークンを取得する
Connected Accounts のリクエストを開始する前に、Connected Accounts のスコープが付与された My Account API のアクセストークンを取得します。 以下のセクションでは、Multi-Resource Refresh Token (MRRT) を使用して、My Account API のアクセストークンを取得する方法を説明します。リフレッシュトークンを取得する
クライアントアプリケーションで MRRT を設定した後、認可コードフローを開始し、取得した認可コードをリフレッシュトークンに交換します。 以下は、My Account API の API 識別子https://{yourDomain}/me/ に対して、リフレッシュトークンを返すための offline_scope と、1 回限り使用できる認可コードを含む、機密クライアント向けの認可コードフローのリクエストです。
/tokenエンドポイントで、1回限りの認可コードをリフレッシュトークンに交換します:
リフレッシュトークンを My Account API のアクセストークンに交換する
リフレッシュトークンを取得したら、リフレッシュトークンのグラントタイプを使用して、Connected Accounts のスコープを持つ My Account API のアクセストークンに交換します。Connected Accounts リクエストを開始する
Connected Accounts リクエストを開始するには、次のパラメーターを指定して、My Account API の/me/v1/connected-accounts/connect エンドポイントに POST リクエストを送信します。
Google のソーシャル接続を使用する場合は、接続の設定時に Auth0 Dashboard で
offline_access を選択していることを確認してください。これは、クライアントアプリケーションが Auth0 Authorization Server からリフレッシュトークンを取得するために必要です。ticket をクエリパラメータとして付与した connect_uri にアクセスします。同意画面でスコープの一覧を承認したら、URL フラグメントから connect_code を取り出して保存します。
Connected Accounts リクエストの完了
Connected Accounts リクエストを完了するには、以下のパラメーターを指定して/me/v1/connected-accounts/complete エンドポイントに POST リクエストを送信します。
Connected Accounts の管理
ユーザーの接続済みアカウントを管理するには、/me/v1/connected-accounts コレクションを使用します。
/connected-accounts コレクションを使用する前に、Connected Accounts 用のアクセストークンを取得するを参照してください。
Connected Accounts の接続を照会する
ユーザープロファイルにリンクされている接続の一覧を取得するには、/me/v1/connected-accounts/connections エンドポイントに GET リクエストを送信します。
接続済みアカウントを取得する
ユーザープロファイルにリンクされた接続済みアカウントの一覧を取得するには、/me/v1/connected-accounts/accounts エンドポイントに GET リクエストを送信します。
/users/{userId}/connected-accounts エンドポイントに GET リクエストを送信することで、ユーザープロファイルの接続済みアカウントの一覧を取得することもできます。
- Auth0 CLI
- cURL
特定の接続の接続済みアカウントを取得する
GET リクエストを /me/v1/connected-accounts/accounts エンドポイントに送信し、接続名をクエリパラメータとして渡すと、ユーザープロファイルにリンクされている、指定した接続で絞り込まれた接続済みアカウントの一覧を取得できます。
google-oauth2 の接続でフィルタリングされたものです。
接続済みアカウントを削除
指定した ID の接続済みアカウントを削除するには、/me/v1/connected-accounts/accounts/{connectedAccountId} エンドポイントに DELETE リクエストを送信します。