RFC 7592 OAuth 2.0 Dynamic Client Registration Management Protocol
RFC 7592 - OAuth 2.0 Dynamic Client Registration Management Protocol
概要
RFC 7592 は OAuth 2.0 のクライアントが登録情報 (Client Metadata) の参照・更新・削除[1]を行うためのエンドポイント Client Configuration Endpoint の仕様を定義する。
クライアントは Client Configuration Endpoint の URL とこのエンドポイントを用いるためのアクセストークン (Registration Access Token) を Client Registration Endpoint で得る。このため本仕様では Client Registration Endpoint のレスポンス Client Information Response が RFC 7591 から拡張されている。
なお、本仕様は Experimental である。
-
ここでいう「削除」は Client Metadata の中の一部の項目を削除することではなく (それは更新で行う)、クライアントとしての登録を削除することである。 ↩︎
Client Information Response の拡張
Client Information Response ではクライアントが Client Configuration Endpoint を利用するために以下の値を返却する。ともに REQUIRED である。
-
registration_client_uri
: Client Configuration Endpoint の URL -
registration_access_token
: Client Configuration Endpoint を用いるためのアクセストークン (これは Bearer Token)
以下は Section 3 で示されるレスポンスの例である。
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"registration_access_token": "reg-23410913-abewfq.123483",
"registration_client_uri":
"https://server.example.com/register/s6BhdRkqt3",
"client_id": "s6BhdRkqt3",
"client_secret": "cf136dc3c1fc93f31185e5885805d",
"client_id_issued_at": 2893256800,
"client_secret_expires_at": 2893276800,
"client_name": "My Example Client",
"client_name#ja-Jpan-JP":
"\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u540D",
"redirect_uris": [
"https://client.example.org/callback",
"https://client.example.org/callback2"],
"grant_types": ["authorization_code", "refresh_token"],
"token_endpoint_auth_method": "client_secret_basic",
"logo_uri": "https://client.example.org/logo.png",
"jwks_uri": "https://client.example.org/my_public_keys.jwks"
}
Client Configuration Endpoint
Client Configuration Endpoint でクライアントは Client Metadata の参照・更新・削除を行う。URL とこのエンドポイントを用いるのに必要なアクセストークンは上述の通り Client Information Response で得られる。
参照
registration_client_uri
に GET リクエストすればよい。レスポンスは Client Information Response である。このとき client_secret
と registration_access_token
はクライアントが既に得ているものと異なる場合がある。
このエンドポイントはアクセストークン (registration_access_token
) で保護されたものであるから、アクセストークンが不正な場合のレスポンスは RFC 6750 で定義されたものに従う。
更新
registration_client_uri
に PUT リクエストする。リクエストボディは Client Information Response で得られた JSON (変更を所望する値は更新したもの) で、以下の点に留意する必要がある。
- リクエストボディの中で省略された項目に関しては、その値を削除することを意図したものとして扱われる
-
registration_access_token
,registration_client_uri
,client_secret_expires_at
,client_id_issued_at
を含めてはならない。 -
client_secret
をリクエストボディの中に含めてもよいが、これは以前発行されたものと一致しなければならない。仮に異なる値を指定した場合も、client_secret
を更新することはできない。 - 認可サーバーは不正な値がリクエストされた場合、その値を認可サーバーにおけるデフォルト値に置き換えてもよい
レスポンスの仕様は参照の場合と同じ。
削除
registration_client_uri
に DELETE リクエストする。リクエストボディはない。認可サーバーはこのリクエストを受けて client_id
, client_secret
, registration_access_token
を無効化する。また、可能であれば発行済の認可グラント、アクセストークン、リフレッシュトークン、その他トークン[1]を無効化する。認可サーバーはクライアントの削除後にステータスコード 204 (No Conent) でレスポンスを返却する。
認可サーバーとしてクライアントの削除をサポートしない場合は 405 (Method Not Allowed) を返却し、当該クライアントの削除は許可しない場合は 403 (Forbidden) を返却する。その他のエラーに関しては参照の場合と同じ。
-
その他のトークンというのはよくわからないが、今後の OAuth 2.0 の拡張を踏まえての記述だろうか ↩︎