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_idclient_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 からシステムレベルで設定できます。

image

成功すると、200 OK という応答が表示されます。トークンが /api/v2/tokens/ エンドポイントに存在するかどうかをチェックして、削除されていることを確認します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.