- ダッシュボード内
- 認証
/oauth/revoke
エンドポイントにPOST要求を行う /api/v2/device-credentials
エンドポイントにPOST要求を行う
トークンと付与を更新する
付与により、アプリケーションはユーザー資格情報を公開することなく、別のエンティティ上のリソースにアクセスできるようになります。トークンは付与の文脈で発行され、付与が無効化されると、その付与の文脈で発行されたすべてのトークンも無効化されます。一方、トークンが無効化された場合、必ずしも付与が無効化されるわけではありません。 DashboardまたはManagement APIを使用して、デバイスがAuth0のユーザーからリンク解除されたときに、Dashboardのテナント設定で取り消し動作を選択できます。この機能は、既存のテナントに対しては、これまでの動作を維持するためにデフォルトで有効になっています。新しいテナント(2021年1月13日現在)に対しては、リフレッシュトークンを取り消しても付与が取り消されないように、この機能がデフォルトで無効化されます。付与の取り消しが必要な場合は、付与取り消しエンドポイントを使用して個別に要求を送らなければなりません。
- Go to [Dashboard] > [Tenant Settings(テナント設定)] > [Advanced(詳細)]に移動し、[Settings(設定)] セクションにスクロールします。
-
失効をどのように動作させたいかに応じて、リフレッシュトークン失効削除許可トグル を有効または無効にします。
- リフレッシュトークンを無効化する際に基礎となる許可を削除するには、トグルを有効にします。取り消し要求ごとに、特定のトークンだけでなく、同じ認可付与に基づくその他すべてのトークンを無効にします。つまり、同じユーザー、アプリケーション、オーディエンスに発行されたリフレッシュトークンがすべて取り消されます。
- リフレッシュトークンを無効化する際に基礎となる許可を保持するには、トグルを無効にします。デバイスのリンクが解除されると、関連付けられたリフレッシュトークンのみが取り消され、許可はそのまま残ります。
Dashboardの使用
Dashboardを使用して、トークンを発行したアプリケーションへのユーザーの承認済みアクセスを取り消すことができます。これにより、リフレッシュトークンが無効になります。これは、トークン自体を取り消すのと機能的に同じです。- [Dashboard]>[User Management(ユーザー管理)]>[Users(ユーザー)]に移動し、ユーザー名をクリックして表示します。
- [Authorized Application(認可アプリケーション)] タブを選択します。このページには、ユーザーがアクセスを許可したすべてのアプリケーションが一覧表示されます。
- 承認済みアプリケーションへのユーザーのアクセスを取り消して、リフレッシュトークンを無効にするには、[Revoke(取り消し)] をクリックします。
Authentication APIを使用する
リフレッシュトークンを取り消すには、https://{yourDomain}/oauth/revoke
にPOST
要求を送信します。
/oauth/revoke
エンドポイントは、特定のトークンだけでなく、許可全体を取り消します。リフレッシュトークンを取り消すには、/api/v2/device-credentials
エンドポイントを使用します。APIは最初にアプリケーションの資格情報を検証し、次にトークンが取り消し要求を行ったアプリケーションに発行されたかどうかを確認します。この検証が失敗すると、要求は拒否され、アプリケーションにエラーが通知されます。次に、APIはトークンを無効にします。無効化は直ちに行われ、取り消し後はトークンを再び使用することはできません。取り消し要求ごとに、同じ承認許可に対して発行されたすべてのトークンが無効になります。
属性 | 説明 |
---|---|
client_id 必須 | アプリケーションのクライアントID。アプリケーションは、リフレッシュトークンが発行されたものと一致する必要があります。 |
client_secret | アプリケーションのクライアントシークレット。に必要です。 |
token 必須 | 取り消したいリフレッシュトークン。 |
クライアントシークレットなしでトークンを取り消す
クライアントシークレットを安全に保管できないアプリケーション(ネイティブアプリなど)の場合、/oauth/revoke
エンドポイントはクライアントシークレットなしでのアクセスをサポートします。ただし、アプリケーション自体のtokenEndpointAuthMethod
プロパティがnone
に設定されている必要があります。tokenEndpointAuthMethod
値は、[Dashboard] > [Applications(アプリケーション)] > [Applications(アプリケーション)]から、またはManagement APIを使用して変更できます。
要求が有効な場合、リフレッシュトークンは取り消され、応答はHTTP 200
で、応答本文は空です。それ以外の場合、応答本文にはエラーコードと説明が含まれます。
HTTPステータス | 説明 |
---|---|
200 | リフレッシュトークンが取り消された、存在しない、または取り消し要求を行うアプリケーションに対して発行されていません。応答本文は空欄のままです。 |
400 | 必要なパラメーターが要求で送信されませんでした("error":"invalid_request" )。 |
401 | 要求は承認されていません("error": "invalid_client" )。アプリケーションの資格情報(client_id とclient_secret )が要求に存在し、有効な値が指定されていることを確認します。 |
Management APIの使用
Auth0 Management APIを使用してリフレッシュトークンを取り消すには、取り消すリフレッシュトークンのid
が必要です。既存のリフレッシュトークンのリストを取得するには、/api/v2/device-credentials
エンドポイントを呼び出し、type=refresh_token
とuser_id
を指定して、read:device_credentials
スコープを含むアクセス トークンを使用します。結果を絞り込むには、トークンに関連付けられたclient_id
(わかっている場合)を指定することもできます。
delete:device_credentials
スコープを含むアクセス トークンと上記で取得した ID の値を使用して、/api/v2/device-credentials
エンドポイントを呼び出します。
HTTP 204: The credential no longer exists
(認証情報はもう存在しません)になります。
考慮事項と制限
デバイス認可フローでは、デバイスに再認証を強制する唯一の方法は、デバイスに割り当てられたリフレッシュトークンを取り消すことです。詳細については、ユーザーからデバイスのリンクを解除するを参照してください。デバイスは、現在有効なアクセストークンの期限が切れて、アプリケーションが失効したリフレッシュトークンを使おうとするまでは、再認証が強制されないことに注意してください。 リフレッシュトークンのローテーション使用中に以前無効になったトークンが使用されている場合は、その無効になったトークンが発行された以降に発行されたリフレッシュトークンの全セットが付与と同様に直ちに失効され、ユーザーの再認証が必要になります。- リフレッシュトークンを取り消すには、Authentication APIの
/oauth/revoke
エンドポイントを使用します。このエンドポイントは、基礎となる許可を削除しません。この動作を変更して、Dashboardで基礎となる許可も削除できます。[Dashboard] > [Tenant Settings(テナント設定)] > [Advanced(詳細)]。Settings(設定) までスクロールし、リフレッシュトークンの取り消しによる許可の削除 のトグルを有効にします。 - ローテーション用に構成されたリフレッシュトークンを取り消すには、Management API
/api/v2/device-credentials
エンドポイントを使用します。