單一登入
讓人員與服務使用來自您身分識別提供者的權杖呼叫您自行託管的 Claude Managed Agents 伺服器。
根據預設,您的伺服器會接受一把共用金鑰,即伺服器 API 金鑰。啟用單一登入後,每個人員或服務也能使用來自您 OpenID Connect (OIDC)「identity provider」(身分識別提供者)的權杖呼叫伺服器。伺服器會根據權杖中的群組為呼叫者指派角色。伺服器 API 金鑰仍可作為管理員憑證使用。
本頁面說明如何新增您的身分識別提供者、各角色可執行的操作,以及如何讓開發人員從終端機登入。
新增您的身分識別提供者
在您的身分識別提供者中註冊伺服器
將伺服器註冊為一個 API,並使用如
api://cma-server的識別碼,然後讓用戶端為其請求權杖。在設定檔中列出身分識別提供者
在設定檔中的
auth.issuers下新增一個項目:auth: issuers: - name: okta issuer_url: https://login.example.com/oauth2/default audiences: [api://cma-server] roles: - group: cma-admins role: admin - group: "eng-*" role: developername在記錄行中標示該簽發者,伺服器也會將它記錄為每項資源建立者的一部分。一旦有人建立了資源,就不要再變更它。issuer_url必須等於您權杖的iss宣告。audiences列出權杖的aud宣告可攜帶的值,例如第一個步驟中的識別碼。roles將群組對應至admin、developer或user。最高的相符角色勝出。
如需其他欄位,請參閱簽發者項目。如果您的提供者是 Microsoft Entra ID,另請參閱 Microsoft Entra ID。
重新啟動伺服器並檢查登入
重新啟動伺服器。呼叫者在任何接受伺服器 API 金鑰的路由上,都以
Authorization: Bearer <token>傳送權杖。對於每個經權杖驗證的請求,伺服器都會記錄
auth=oidc、簽發者的name,以及呼叫者的主體(sub=)。
如果登入失敗
| 回應 | 原因 | 伺服器的記錄行中包含 |
|---|---|---|
401,與錯誤 API 金鑰的回應相同 | 權杖未通過檢查。記錄行中會說明原因。 | oidc token |
403 | 權杖的群組未符合任何 roles 項目 | token holds no role |
Microsoft Entra ID
Entra ID 在兩方面與其他提供者不同。這兩項設定都放在簽發者項目中:
- 人員: Entra ID 會在每個用戶端應用程式中給同一個人不同的
sub,因此預設值會將同一個人記錄為多個建立者。請設定subject_claim: oid。 - 群組: 如果某人隸屬於許多群組,Entra ID 會在權杖中省略
groups宣告。該人員因此不會符合任何roles項目。為避免此情況,請讓 Entra ID 只發出指派給該應用程式的群組。或者在 Entra ID 中將應用程式角色指派給人員,並設定groups_claim: roles,讓伺服器讀取應用程式角色來取代群組。
各角色可執行的操作
| 角色 | 代理、技能、工作階段、vault 與記憶體儲存區 | 環境 |
|---|---|---|
admin,以及伺服器 API 金鑰 | 可檢視與變更所有項目 | 可建立、變更與刪除環境,並建立其金鑰 |
developer 或 user | 只能檢視與變更該呼叫者所建立的項目 | 可列出、讀取環境,並在其中執行工作階段 |
developer 與 user 擁有相同的存取權限。具備其中任一角色的呼叫者:
- 無法看到由其他人建立的資源。 該資源不會出現在清單中,而對其 ID 的請求所得到的回應,與對未知 ID 的請求相同。這包括在您啟用單一登入之前使用伺服器 API 金鑰建立的所有資源。
- 無法與其他呼叫者或群組共用資源。
請將 admin 對應至確切的群組名稱。管理員也可以啟動使用任何使用者之 vault 的工作階段。因此請只將此角色授予您信任可存取每位使用者 MCP 權杖的群組。
讓開發人員從終端機登入
開發人員可以透過您的身分識別提供者登入,然後以自己的身分使用 ant CLI,而不需要伺服器 API 金鑰。前兩個步驟由您執行,第三個步驟由每位開發人員執行。
在您的身分識別提供者中註冊應用程式
註冊一個具備以下條件的原生(「public」)應用程式:
- 不含用戶端密鑰
- 搭配 PKCE 的授權碼授與
- 重新導向 URI
http://127.0.0.1/callback
部分提供者需要使用其他重新導向 URI 之一。
將應用程式新增至簽發者項目
在簽發者項目中加入
login_client_id與login_scopes,然後重新啟動伺服器:login_client_id: 0oa1b2c3d4e5f6g7h8i9 login_scopes: [openid, cma-server.access]login_scopes列出您的提供者為核發aud宣告位於簽發者項目audiences清單中的權杖所需的範圍。登入
每位開發人員從解壓縮後的封存檔頂層執行登入:
./cma-server-admin login https://cma.example.com伺服器的 URL 必須是
https://,或是指向localhost、127.0.0.1或::1的http://。若使用其他重新導向 URI 之一,請在指令中加入其旗標。此指令會在瀏覽器中開啟提供者的登入頁面,然後寫入一個名為
cma-server的antCLI 設定檔。對任何ant指令傳入--profile cma-server,或執行ant profile activate cma-server將該設定檔設為預設值。
權杖過期時,開發人員再次執行 login 即可。若要改由 ant CLI 更新權杖,請將 offline_access 加入 login_scopes。
其他重新導向 URI
| 提供者 | 要註冊的重新導向 URI | 開發人員在 login 指令中加入的旗標 |
|---|---|---|
| Microsoft Entra ID | http://localhost/callback | -listen localhost:0 |
| 要求重新導向 URI 中包含連接埠的提供者 | 具固定連接埠的 URI,例如 http://127.0.0.1:8123/callback | -listen 127.0.0.1:8123 |
若要列出其他旗標,請在 login 指令中加入 -h。
讓使用者登入您伺服器上的主控台
這個頁面有幫助嗎?