- そのアカウントを接続済みアカウントとしてユーザーに関連付けます。
- 接続済みアカウント用の外部プロバイダーのアクセストークンおよびリフレッシュトークンを Token Vault に保存します。
ユーザー認証と Connected Accounts の違い
/authorize エンドポイント)ではなく、Connected Accounts フロー(/me/v1/connected-accounts エンドポイント)を使用して、アクセストークンとリフレッシュトークンを Token Vault に取得・保存します。Connected Accounts フローが正常に完了すると、Auth0 はユーザーアカウントをユーザープロファイル上の connected_accounts 配列に追加します。これに対し、ソーシャルまたはエンタープライズのログインフローの場合、Auth0 はユーザーアカウントをユーザープロファイル上の identities 配列に追加します。
次の表は、ユーザー認証フローと Connected Accounts フローの違いを説明します。
| ユーザー認証 | Connected Accounts | |
|---|---|---|
| フロー | /authorize エンドポイントを使用するログインフロー | My Account API の /me/v1/connected-accounts エンドポイントを使用する Connected Accounts フロー |
| 目的 | ソーシャルまたはエンタープライズのアイデンティティ プロバイダーでユーザーを認証する | サポート対象の外部プロバイダー経由でユーザーがログインし、接続を行い、その接続を承認した際に、接続済みアカウント用のアクセストークンとリフレッシュトークンを Token Vault に保存する |
| Authentication | Connected Accounts | 動作 | スコープ |
|---|---|---|---|
| Enabled | Disabled | この接続は /authorize ログインフローを使用して、正当なアイデンティティ プロバイダーとしてユーザーを認証します。 | Auth0 Dashboard または Management API を使用して、接続に必要なスコープを渡します。実行時には、この一覧に、認可リクエストの connection_scope パラメーターに含まれる追加のスコープが自動的に補完されます。 |
| Disabled | Enabled | この接続は Connected Accounts フローを使用して、この接続用のトークンを Token Vault に取得・保存します。この接続は /authorize ログインフローを使用してユーザーを認証せず、有効なアイデンティティ プロバイダーの一覧には含まれません。 | Auth0 Dashboard または Management API を使用して、接続に必要なスコープを渡します。実行時には、認可リクエストの scopes パラメーターに含まれるスコープが、接続で必要とされ Auth0 Dashboard で有効になっている offline_access を除き、Auth0 Dashboard で選択されたスコープよりも優先されます。注意: 接続で必要な場合、Auth0 は offline_access を有効化するよう促し、クライアントアプリケーションが Auth0 からリフレッシュトークンを取得できるようにします。Auth0 Dashboard でその接続に対して offline_access を有効にする必要があります。 |
| Enabled | Enabled | この接続は /authorize ログインフローを使用して、正当なアイデンティティ プロバイダーとしてユーザーを認証します。また、Connected Accounts フローも使用して、この接続のアクセストークンを Token Vault に取得・保存します。 | Auth0 Dashboard および Management API を使用して、接続に必要なスコープを渡します。実行時には、scopes パラメーターに含まれるスコープが、接続で必要とされ Auth0 Dashboard で有効になっている offline_access を除き、Auth0 Dashboard で選択されたスコープよりも優先されます。注意: 接続で必要な場合、Auth0 は offline_access を有効化するよう促し、クライアントアプリケーションが Auth0 からリフレッシュトークンを取得できるようにします。Auth0 Dashboard でその接続に対して offline_access を有効にする必要があります。 |
仕組み

- クライアント アプリケーションは、My Account API の
/me/v1/connected-accountsエンドポイントに対して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 を構成 します。この API は、認証済みユーザーがアカウントを接続および管理するために使用します。
- Multi-Resource Refresh Token (MRRT) を構成 し、My Account API 用のアクセストークンを取得できるようにします。
- (オプション)My Account API とクライアント アプリケーションで DPoP を構成 し、送信者制約を適用したアクセストークンによってトークンの盗難を防止します。デフォルトでは、My Account API は DPoP にバインドされたアクセストークンを受け付けます。
My Account API を構成する
- Applications > APIs に移動し、My Account API を有効化します。
- 有効化したら、Auth0 My Account API を選択し、Applications タブを開きます。
- クライアントアプリケーションのトグルをオンにして、My Account API へのアクセスを許可します。
- ドロップダウンメニューから、このアプリケーションに対して Connected Accounts スコープ を選択します。
- Update を選択します。これにより、クライアントアプリケーションがユーザーに代わって Connected Accounts スコープ付きで My Account API にアクセスできるようにする クライアントグラント が作成されます。
- Multi-Resource Refresh Token を使用している場合は、Settings タブに移動します。Access Settings セクションで Allow Skipping User Consent を選択します。
マルチリソース リフレッシュトークンを設定する
- 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 で Use for Connected Accounts for Token Vault をトグルで有効にします。Purpose の設定によっては、Connected Accounts フロー中にクライアントアプリケーションが外部プロバイダーからリフレッシュトークンを取得できるように、Auth0 Dashboard で
offline_accessを有効にする必要があります。詳細については、User authentication vs Connected Accounts を参照してください。 - Save をクリックします。
Connected Accounts 用のアクセストークンを取得する
リフレッシュトークンを取得する
https://{yourDomain}/me/ に対するリフレッシュトークンと一度だけ使用できる認可コードを返すために offline_scope を含めたものです。
/token エンドポイントで、1回限りの認可コードをリフレッシュトークンに交換します。
リフレッシュトークンを My Account API アクセストークンに交換する
refresh_token グラントタイプを使用して、Connected Accounts のスコープを持つ My Account API のアクセストークンに交換します。
Connected Accounts リクエストの開始
/me/v1/connected-accounts/connect エンドポイントに対して、以下のパラメーターを指定して POST リクエストを送信します。
Google ソーシャル接続の場合、接続を設定する際に Auth0 Dashboard で
offline_access を必ず選択してください。これは、クライアントアプリケーションが Auth0 認可サーバーからリフレッシュトークンを取得するために必要です。| パラメーター | 説明 |
|---|---|
connection | 接続の名前。Google ソーシャル接続の場合は、google-oauth2 を指定します。 |
redirect_uri | クライアントアプリケーションのコールバック URL。 |
state | 攻撃を防ぐためにリクエストに関連付けられた、一意のランダムな文字列。 |
scopes | (任意) 外部プロバイダーに文字列の配列として渡されるスコープ。 Google ソーシャル接続のスコープを渡すために使用する場合は、最低でも openid と profile を含めてください。実行時には、scopes パラメーターに含まれるスコープが、接続で必要とされ Auth0 Dashboard で有効化されている場合の offline_access を除き、Auth0 Dashboard で選択されたスコープより優先されます。 |
| Parameter | Description |
|---|---|
auth_session | プライマリーユーザーの現在の認証済みセッションを表すセッション ID。クライアントアプリケーションは、後で検証するためにこのセッション ID を保存します。 |
connect_uri | クライアントアプリケーションがユーザーをリダイレクトする URL。外部プロバイダーとの認可を処理するために Web ブラウザーを開きます。 |
connect_params | connect URI に必要な追加パラメーター。My Account API がリクエストを検証するために使用する一時チケットを含みます。 |
expires_in | セッションの有効期限(秒)。 |
ticket を付与した connect_uri にアクセスします。コンセント画面で表示されるスコープ一覧を承認し、URLフラグメントに含まれる connect_code を抽出して保存します。
Connected Accounts リクエストの完了
/me/v1/connected-accounts/complete エンドポイントに POST リクエストを送信します。
| パラメーター | 説明 |
|---|---|
auth_session | プライマリーユーザーの現在の認証済みセッションを表すセッション ID です。クライアントアプリケーションは、このセッション ID を後で検証するために保存します。 |
connect_code | 外部プロバイダーの認可プロセスから受け取る、1 回限り・短時間のみ有効なコードです。このコードは、外部 API 用の最終的なアクセストークンを取得するために、サーバー側で安全に交換されます。 |
redirect_uri | 外部プロバイダーとの接続を正常に認可した後にユーザーが送られた、アプリケーションの正確なコールバック URL です。この値は、フローを開始する際に使用した redirect_uri と一致している必要があります。 |
| パラメーター | 説明 |
|---|---|
id | 接続済みアカウントの一意の識別子。 |
connection | 接続の名前。 |
created_at | 接続済みアカウントが作成され、ユーザープロファイルにリンクされた日時。 |
scopes | ユーザーが外部プロバイダーへの接続時に、アプリケーションへのアクセスを許可した特定の OAuth スコープ(権限)。これらのスコープによって、アプリケーションが外部 API に対して実行できるアクションが決まります。 |
access_type | 付与されたアクセスの種類を示します。一般的な値は offline で、これはリフレッシュトークンが正常に取得および保存されており、ユーザーがオフラインの場合でもアプリケーションがアクセスを維持できることを意味します。 |
連携アカウントを管理する
/me/v1/connected-accounts コレクションを使用します。
/connected-accounts コレクションを使用する前に、Connected Accounts 用のアクセストークンを取得してください。
接続済みアカウントの Connection を取得する
/me/v1/connected-accounts/connections エンドポイントに GET リクエストを送信して、ユーザープロファイルにリンクされている接続の一覧を取得します。
接続済みアカウントをクエリする
/me/v1/connected-accounts/accounts エンドポイントに GET リクエストを送信して、ユーザー プロファイルにリンクされた接続済みアカウントの一覧を取得します。
GET リクエストを /users/{userId}/connected-accounts エンドポイントに送信すると、ユーザープロファイルの接続済みアカウント一覧を取得することもできます。
特定の接続に対する接続済みアカウントのクエリ
/me/v1/connected-accounts/accounts エンドポイントに GET リクエストを送信し、クエリパラメータとして接続名を指定して、ユーザープロファイルにリンクされている接続済みアカウントのうち、指定した接続に属するものだけの一覧を取得します。
google-oauth2 接続でフィルタリングされた次のようなレスポンスを返します。
連携済みアカウントを削除する
DELETE リクエストを /me/v1/connected-accounts/accounts/{connectedAccountId} エンドポイントに送信します。