呼叫 OpenID Connect 的 UserInfo 端點
UserInfo 端點會針對接受 OpenID Connect 鑑別程序鑑別的使用者,傳回其相關聲明。
關於這項作業
為了取得使用者的聲明,用戶端以存取記號作為認證,對 UserInfo 端點發出要求。存取記號必須是透過 OpenID Connect 鑑別所取得的存取記號。存取記號所代表之使用者的聲明,會以 JSON 物件形式傳回,其中含有聲明的名稱/值配對集合。UserInfo 端點是一種 OAuth 2.0 受保護資源,也就是說,存取端點所需的認證就是存取記號。
UserInfo 端點傳回的聲明可以使用「OpenID Connect 提供者」配置來自訂;請參閱配置 UserInfo 端點所傳回的聲明。
啟用 OpenID Connect 的 WebSphere® Application Server 傳統版 伺服器能夠存取位於下列 URL 的 OpenID Connect UserInfo 端點:
https://server.example.com:443/oidc/endpoint/<provider_name>/userinfo
避免問題: 如果您使用出埠 Proxy,請注意,
OpenID Connect RP 不提供任何方法來自動透過 Proxy 主機遞送要求。
如果您必須使用 Proxy 來存取「OpenID Connect 提供者 (OP)」,您針對任何 OP 相關 URL 內容所輸入的值,必須包含 Proxy 主機和埠,而不是包含外部 OP 主機和埠。
在大部分情況下,您可以用 Proxy 主機和埠,取代 OP 主機和埠。RP 和用戶端(瀏覽器或應用程式)必須都能看見您所輸入的 URL。對於如何判斷所要使用的正確 URL,如需進一步指引,請聯絡您的 Proxy 管理者。
在本例中,用戶端預期的 SSL 埠設為 443。
程序
- 使用透過 OpenID Connect 鑑別取得的存取記號,來設定鑑別。可以在 HTTP Basic Authorization 標頭中或使用 access_token 要求參數,來提供存取記號。無論何者,存取記號都不需要編碼。
- 將 GET 或 POST 要求傳送給 UserInfo 端點 URL。
結果
如果是有效的要求,UserInfo 端點會傳回 HTTP 200 回應,內含一個 application/json 格式的 JSON 物件,該物件會包含配置給「OpenID Connect 提供者」的聲明。
範例
下列範例說明具有有效記號和無效記號的要求。
- 使用 HTTP Bearer Authorization 標頭來傳遞存取記號的要求
- 對於有效存取記號的回應
- 無效的存取記號
使用 HTTP Bearer Authorization 標頭來傳遞存取記號的範例要求:
POST /register HTTP/1.1
Accept: application/x-www-form-urlencoded
Authorization: Bearer fAAdLO1c6QWDbPs9HrWHz5e7nRWVAnxqTTP7i88G
也可以使用
access_token 要求參數來傳遞記號:
POST /register HTTP/1.1
Accept: application/x-www-form-urlencoded
access_token=fAAdLO1c6QWDbPs9HrWHz5e7nRWVAnxqTTP7i88G
最佳作法是使用 HTTP Authorization 標頭,而不使用 access_token 要求參數,這是因為可能含有機密性資訊的 HTTP 要求參數可以儲存在瀏覽器歷程或快取中。
這裡是有效存取記號的範例回應。一律會傳回 sub 和 groupIds 聲明。這裡顯示的其他聲明,是「OpenID Connect 提供者」的預設聲明。
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"sub" : "bob",
"groupIds" : [ "bobsdepartment","administrators" ],
"given_name" : "Bob",
"name" : "Bob Smith",
"email" : "bob@mycompany.com",
"phone_number" : "+1 (604) 555-1234;ext5678",
"address" : { "formatted" : "123 Main St., Anytown, TX 77777" },
"picture" : "http://mycompany.com/bob_photo.jpg"
}
如果是無效的存取記號,UserInfo 端點會傳回
HTTP 401 狀態碼,且 WWW-AUTHENTICATE 標頭中會有一則錯誤訊息。
HTTP/1.1 401 Unauthorized
CONTENT-LENGTH : 0
WWW-AUTHENTICATE : Bearer error=invalid_token,
error_description=CWWKS1617E: 使用無法辨識的存取記號提出 userinfo 要求。要求 URI 是 /oidc/endpoint/MyOAuthProvider/userinfo。