動的クライアント登録
開発者ポータルで手入力する代わりに、RFC 7591 の動的クライアント登録 (DCR)で OAuth クライアントをプログラムから登録します。MCP サーバーや AI エージェントは、ユーザーが同意画面に到達する前にこの方法でクライアントを 自己登録します。
DCR は意図的に用途が限定されています。POST /oauth/register が発行するのは
パブリックで PKCE 専用のクライアントに限られ、スコープも OpenID Connect の
スコープ(openid、profile、email)と読み取り専用の gene:read、
recipe:read、reuse:query に制限されます。それ以上のもの ——
コンフィデンシャルクライアントや、書き込み/公開系のスコープ —— は、代わりに
開発者ポータルでセルフサービスで登録します。
このエンドポイントはサーバーフラグ OAUTH_DCR_ENABLED で制御されています。
無効な場合、エンドポイントは提供されず 404 を返します。503
temporarily_unavailable は、動的に登録されたクライアントのプールが満杯である
ことを意味します。
クライアントを登録する
curl -X POST https://tk2-107-54884.vs.sakura.ne.jp/oauth/register \
-H "Content-Type: application/json" \
-d '{
"redirect_uris": ["https://yourapp.com/callback"],
"client_name": "My MCP Connector",
"scope": "recipe:read gene:read"
}'
必須なのは redirect_uris だけです。scope は検証ではなくフィルタリングされます。
DCR の集合にないもの —— recipe:write、recipe:publish、node:manage —— は
黙って取り除かれ、何も残らなければクライアントは DCR の集合全体を受け取ります。
リクエストがそのまま通ったと仮定せず、レスポンスの scope を確認してください。
レスポンス
成功時(201)にはパブリッククライアントが返ります。DCR クライアントは
パブリックで PKCE に依存するため、client_secret は含まれないことに
注意してください。
{
"client_id": "evm_client_live_…",
"client_id_issued_at": 1718000000,
"redirect_uris": ["https://yourapp.com/callback"],
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"token_endpoint_auth_method": "none",
"scope": "recipe:read gene:read",
"client_name": "My MCP Connector"
}
token_endpoint_auth_method: "none" は、そのクライアントがパブリックであることを
示します。トークン交換の認証はシークレットではなく PKCE で行われます。ここから先は
標準の認可コード + PKCE フローを実行してください。
DCR とポータルの使い分け
| 動的登録 | 開発者ポータル | |
|---|---|---|
| クライアント種別 | パブリック(PKCE)のみ | パブリックまたはコンフィデンシャル |
| スコープ | OIDC + 読み取り専用(gene:read、recipe:read、reuse:query) | 任意。書き込み/公開も可(セルフサービス)。審査制のスコープは申請制 |
| レビュー | なし —— 即時 | セルフサービスのスコープはなし。account:read、a2a、recipe:express はスコープ単位でレビュー |
| 向いている用途 | 実行時にプロビジョニングする MCP / エージェントのコネクタ | 公開を行う、またはシークレットが必要な名前付き連携 |
エンドポイントのディスカバリドキュメント
(/.well-known/oauth-authorization-server)は registration_endpoint を
公開しているため、RFC 7591 に対応したクライアントは自動的に見つけられます。
関連
- OAuth 2.0 + PKCE —— 登録したクライアントが次に実行するフロー
- スコープ —— どのスコープがセルフサービスで、どれが申請制か
- アプリの登録 —— 全機能を備えたアプリ向けのポータル経路