Dynamic Client Registration
Dynamic Client Registration 由 RFC 7591 定義,提供了以動態或程式化方式向 Authorization Server 註冊 Client 的機制。
此規範源自 OpenID Connect Dynamic Client Registration 規範,並與 OpenID Connect 伺服器相容。
解決什麼問題
Section titled “解決什麼問題”傳統的 Client 註冊流程需要開發者手動到 Authorization Server 的管理介面建立 Client、取得 client_id 與 client_secret。這種方式在以下場景會遇到困難:
- 大量 Client 需要自動化部署——例如微服務架構中,每個服務都是獨立的 Client
- 第三方平台整合——需要在執行期間動態建立 Client
- 跨組織協作——無法預先到對方的 Authorization Server 手動註冊
- AI 工具整合——MCP(Model Context Protocol)讓 AI 應用程式連接不特定數量的 Server,手動註冊不切實際,因此 MCP 規範直接採用 Dynamic Client Registration 作為解決方案
Dynamic Client Registration 讓 Client 可以透過標準化的 API 自動完成註冊。
Client 向 Authorization Server 的 Registration Endpoint 發送 POST 請求:
POST /register HTTP/1.1Host: auth.example.comContent-Type: application/json
{ "redirect_uris": ["https://app.example.com/callback"], "client_name": "My Application", "grant_types": ["authorization_code"], "response_types": ["code"], "token_endpoint_auth_method": "client_secret_basic"}常見 Client Metadata
Section titled “常見 Client Metadata”| 欄位 | 說明 |
|---|---|
redirect_uris | Client 的 Redirect URI 列表(必填) |
client_name | Client 的顯示名稱 |
grant_types | 支援的授權類型(如 authorization_code、client_credentials) |
response_types | 支援的回應類型(如 code、token) |
token_endpoint_auth_method | Token Endpoint 的認證方式 |
scope | 請求的授權範圍 |
Authorization Server 回傳新建立的 Client 資訊:
{ "client_id": "s6BhdRkqt3", "client_secret": "cf136dc3c1fc93f31185e5885805d", "client_id_issued_at": 1711929600, "client_secret_expires_at": 0, "redirect_uris": ["https://app.example.com/callback"], "client_name": "My Application", "grant_types": ["authorization_code"], "response_types": ["code"], "token_endpoint_auth_method": "client_secret_basic"}| 欄位 | 說明 |
|---|---|
client_id | 新建立的 Client ID |
client_secret | Client Secret(僅 Confidential Client) |
client_id_issued_at | Client ID 核發時間(Unix timestamp) |
client_secret_expires_at | Client Secret 到期時間(0 代表不過期) |
Registration Endpoint 可以是開放註冊或需要認證:
- 開放註冊:任何人都可以註冊 Client,適合公開平台
- 需要 Initial Access Token:Client 必須持有預先取得的 Token 才能註冊,適合受控環境
POST /register HTTP/1.1Host: auth.example.comAuthorization: Bearer INITIAL_ACCESS_TOKENContent-Type: application/json應用場景:MCP Authorization
Section titled “應用場景:MCP Authorization”MCP(Model Context Protocol)的授權機制是 Dynamic Client Registration 的典型應用場景。MCP Client(如 AI 助理)可能隨時連接全新的 MCP Server,無法事先逐一手動註冊。透過 Dynamic Client Registration,Client 在首次連接時自動註冊取得 client_id,隨即進入 Authorization Code + PKCE 授權流程。
詳細的 MCP 授權流程請參考 MCP Authorization 與 OAuth 2.1。
與 OpenID Connect 的關係
Section titled “與 OpenID Connect 的關係”OpenID Connect Dynamic Client Registration 1.0 是此規範的前身。RFC 7591 將其中的 Client 註冊機制通用化,使其不限於 OpenID Connect,也能用於一般的 OAuth 2.0 場景。兩者使用相同的註冊端點格式,OpenID Connect 伺服器通常同時支援兩種規範。