從版本 10.4.2 開始,可以將 VMware Cloud Director 用作可識別承租人的身分識別提供者 Proxy 伺服器。
使用 OAuth 2.0 OpenID Connect 標準將 VMware Cloud Director 設定為身分識別提供者 Proxy 伺服器時,信賴憑證者可以使用 VMware Cloud Director 對 VMware Cloud Director 已知的使用者進行可識別承租人的驗證。如需有關 OpenID Connect 標準的詳細資訊,請參閱 OpenID Connect Core 1.0。
作為身分識別提供者 Proxy 伺服器,VMware Cloud Director 會充當用戶端應用程式 (信賴憑證者) 和身分識別提供者之間的仲介,並將實際驗證委派給提供者或承租人使用的相應驗證機制。
系統管理員可以設定與 VMware Cloud Director 整合的信賴憑證者,然後支援個別承租人允許其使用者將 VMware Cloud Director 用作身分識別提供者 Proxy。
驗證流程
與 VMware Cloud Director 的整合透過 OAuth 2.0 OIDC 授權代碼流程標準實作。如需詳細資訊,請參閱使用授權代碼流程進行驗證。
當信賴憑證者將使用者重新導向到 VMware Cloud Director 時,如果沒有現有的用戶端工作階段,系統會提示使用者先識別要登入的組織或提供者入口網站,然後再登入 VMware Cloud Director。使用者透過設定的驗證機制進行驗證,這可能需要進一步重新導向到外部身分識別提供者。如果使用者的瀏覽器偵測到現有的 VMware Cloud Director 使用者工作階段,則驗證流程會提供 SSO 體驗,並且無需使用者互動即可重新進行驗證。成功完成此程序後,VMware Cloud Director 會傳回存取 Token 和識別碼 Token。作為流程一部分發出的授權代碼在 5 分鐘內有效。存取 Token 的有效期為 5 分鐘,識別碼 Token 的有效期為 1 小時。
VMware Cloud Director 不傳回重新整理 Token。
無法使用 VMware Cloud Director 在成功進行驗證後傳回的存取 Token 來存取使用者介面入口網站或進行定期 VMware Cloud Director API 呼叫。
- 識別碼 Token 詳細資料
-
VMware Cloud Director 傳回的識別碼 Token 包含以下 OpenID 標準宣告和 VMware Cloud Director 特定宣告。
宣告
描述
at_hash
(OpenID 標準宣告) 存取 Token 雜湊值。
sub
(OpenID 標準宣告) UUID 格式的 VMware Cloud Director 中的
userId
。iss
(OpenID 標準宣告) VMware Cloud Director 的公用位址。
preferred_username
(OpenID 標準宣告) VMware Cloud Director 中的使用者的使用者名稱
nonce
(OpenID 標準宣告) 用於將用戶端工作階段與識別碼 Token 關聯並緩解重新執行攻擊的字串值。僅當最初包含在信賴憑證者請求中時才存在。
aud
(OpenID 標準宣告) 此 Token 的受眾。該值是請求信賴憑證者的用戶端識別碼。
azp
(OpenID 標準宣告) Token 的授權方。該值是信賴憑證者的用戶端識別碼。其值與
aud
宣告相同。name
(OpenID 標準宣告) VMware Cloud Director 已知的使用者的完整名稱。
phone_number
(OpenID 標準宣告) VMware Cloud Director 已知的使用者的電話號碼。
exp
(OpenID 標準宣告) 到期時間。經過該時間後,不接受識別碼 Token 進行處理。
iat
(OpenID 標準宣告) 識別碼 Token 的核發時間。
email
(OpenID 標準宣告) VMware Cloud Director 已知的使用者的電子郵件地址。
roles
(VMware Cloud Director 自訂宣告) 使用者在 VMware Cloud Director 中擁有的角色的名稱陣列。
groups
(VMware Cloud Director 自訂宣告) VMware Cloud Director 中使用者所屬的群組的名稱陣列。
org_name
(VMware Cloud Director 自訂宣告) 使用者登入的組織的名稱。
org_display_name
(VMware Cloud Director 自訂宣告) 顯示組織的名稱。
org_id
(VMware Cloud Director 自訂宣告) UUID 格式的組織識別碼。
- OpenID 請求範圍
-
OpenID 請求的範圍用於指定為存取 Token 請求的權限。
範圍值
說明。
openid
必要。OpenID 標準範圍。
profile
OpenID 標準範圍。請求存取終端使用者的預設設定檔宣告。
email
OpenID 標準範圍。請求存取終端使用者電子郵件地址宣告。
groups
OpenID 標準範圍。請求存取使用者在 VMware Cloud Director 中所屬的群組。
phone
OpenID 標準範圍。請求存取使用者電話號碼宣告。
vcd_idp
VMware Cloud Director 特定範圍。請求存取 VMware Cloud Director 自訂宣告,例如
roles
、groups
、org_name
、org_display_name
和org_id
。 - 端點
-
可以使用 VMware Cloud Director 傳回的存取 Token 擷取有關在
hostname/oidc/UserInfo
端點上已經過驗證的使用者的宣告。如需詳細資訊,請參閱使用者資訊端點。可以在已知組態 URL
hostname/oidc/.well-known/openid-configuration
擷取提供者組態值,包括 JWKS 端點以及與 OIDC Proxy 組態所需的其他端點和範圍有關的資訊。請參閱在 VMware Cloud Director 中檢視 OIDC Proxy 一般設定。
VMware Cloud Director 身分識別提供者 Proxy 的 Token 交換存取
透過以下詳細說明的 Token 交換流程,可以與 VMware Cloud Director 的身分識別提供者 Proxy 功能進行程式設計整合。此流程不涉及 VMware Cloud Director 使用者介面,適合指令碼式存取,例如 CLI。
透過直接登入或使用 API Token 取得 VMware Cloud Director JWT。
執行 POST 要求。
POST hostname/oidc/oauth2/token
為請求內文選取
x-www-form-urlencoded
。在請求內文中包含以下參數。
{ "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer", "assertion": "VMware_Cloud_Director JWT", "client_id": "Relying_party_ID", "scope": "openid profile email phone groups vcd_idp", }
回應將傳回一個識別碼 Token (包括 OIDC 和 VMware Cloud Director 宣告) 以及一個存取 Token,您可以使用該 Token 擷取有關在
hostname/oidc/UserInfo
端點上已經過驗證的使用者的宣告。
編碼的識別碼 Token 範例:
eyJhbGciOiJSUzI1NiIsInR5NDg4SI6I................4dHnbU1RQ6Y9Yohgw
解碼的識別碼 Token 範例:
{ "at_hash": "1AA1aAA1AAAAAAaAA1A11a", "sub": "111111111-1111-1111-1111-11111111", "roles": [ "Organization Administrator" ], "iss": "https://hostname/oidc", "groups": [ "ALL USERS" ], "preferred_username": "testuser@vcd-ms1", "nonce": "ab123acab", "aud": "33333333-3333-3333-3333-33333333333", "azp": "22222222-2222-2222-2222-22222222", "org_id": "12345678-1234-1234-1234-123456789abc", "org_display_name": "oidcorg", "name": "test user", "phone_number": " ", "exp": 1111111111, "org_name": "oidcorg", "iat": 1111111111, "email": "[email protected]" }
使用者資訊回應範例:
{ "sub": "111111111-1111-1111-1111-11111111", "preferred_username": "administrator", "name": "administrator user", "email": "[email protected]", "phone_number": "0 (111) 222-3333", "roles": [ "system administrator" ], "groups": [], "org_name": "system", "org_display_name": "System Organization", "org_id": "12345678-1234-1234-1234-123456789abc" }
多站台考量事項
在多站台部署中,每個站台充當單一身分識別提供者伺服器。
配對站台不提供聯盟身分識別伺服器支援。這意味著,如果在登入過程中,不屬於充當其身分識別提供者 Proxy 的站台的承租人嘗試透過組織選取的多站台部署的另一個站台登入該站台,則登入會失敗。