21.4. アプリケーショントークンの機能
/api/o/
エンドポイントのトークンの場合、トークンに関連付けられた refresh
機能および revoke
機能は、現在、アプリケーショントークンでのみ実行できます。
21.4.1. 既存のアクセストークンの更新
次の例は、リフレッシュトークンが指定された既存のアクセストークンを示しています。
{ "id": 35, "type": "access_token", ... "user": 1, "token": "omMFLk7UKpB36WN2Qma9H3gbwEBSOc", "refresh_token": "AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z", "application": 6, "expires": "2017-12-06T03:46:17.087022Z", "scope": "read write" }
/api/o/token/
エンドポイントは、アクセストークンの更新に使用されます。
curl -X POST \ -d "grant_type=refresh_token&refresh_token=AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z" \ -u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \ http://<controller>/api/o/token/ -i
ここで、refresh_token
は、前述のアクセストークンの refresh_token
フィールドで指定されます。
認証情報の形式は、<client_id>:<client_secret>
です。client_id
と client_secret
は、アクセストークンの基盤となる関連アプリケーションの対応するフィールドに置き換えます。
特別な OAuth 2 エンドポイントは、x-www-form-urlencoded
という Content-type の使用のみをサポートします。したがって、api/o/*
エンドポイントで application/json
を受け入れるものはありません。
成功すると、以前のものと同じスコープ情報を持つ新しい (更新された) アクセストークンを含む応答が、JSON 形式で表示されます。
HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Tue, 05 Dec 2017 17:54:06 GMT Content-Type: application/json Content-Length: 169 Connection: keep-alive Content-Language: en Vary: Accept-Language, Cookie Pragma: no-cache Cache-Control: no-store Strict-Transport-Security: max-age=15768000 {"access_token": "NDInWxGJI4iZgqpsreujjbvzCfJqgR", "token_type": "Bearer", "expires_in": 315360000000, "refresh_token": "DqOrmz8bx3srlHkZNKmDpqA86bnQkT", "scope": "read write"}
更新操作では、元のトークンを削除した直後に、元のトークンと同じスコープと関連アプリケーションを持つ新しいトークンを作成することで、既存のトークンを置き換えます。
/api/v2/tokens/
エンドポイントで、新しいトークンが存在し、古いトークンが削除されていることを確認します。
21.4.2. アクセストークンの取り消し
/api/o/revoke-token/
エンドポイントを使用して、アクセストークンを取り消すことができます。
この方法によるアクセストークンの取り消しは、トークンリソースオブジェクトの削除と同じです。ただしこの方法では、トークン値と、関連付けられた client_id
(アプリケーションが confidential
の場合は加えて client_secret
) を指定することで、トークンを削除できます。以下に例を示します。
curl -X POST -d "token=rQONsve372fQwuc2pn76k3IHDCYpi7" \ -u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \ http://<controller>/api/o/revoke_token/ -i
-
特別な OAuth 2 エンドポイントは、
x-www-form-urlencoded
という Content-type の使用のみをサポートします。したがって、api/o/*
エンドポイントでapplication/json
を受け入れるものはありません。 -
Allow External Users to Create Oauth2 Tokens (API の
ALLOW_OAUTH2_FOR_EXTERNAL_USERS
) の設定は、デフォルトでは無効になっています。外部ユーザーとは、LDAP などのサービスやその他の SSO サービスにより、外部で認証されたユーザーを指します。この設定により、外部ユーザーは独自のトークンを作成できなくなります。有効にしてから無効にすると、その間に外部ユーザーが作成したトークンは残り、自動的には取り消されません。
あるいは、OAuth2 トークンを取り消すために、manage
ユーティリティーを使用できます。oauth2 トークンの取り消し を参照してください。
この設定は、UI からシステムレベルで設定できます。
成功すると、200 OK
という応答が表示されます。トークンが /api/v2/tokens/
エンドポイントに存在するかどうかをチェックして、削除されていることを確認します。