呼叫 OpenID Connect 的記號端點
在 OpenID Connect 的「授權碼流程」中,記號端點供用戶端用來取得 ID 記號、存取記號和更新記號。
開始之前
關於這項作業
記號端點會接受用戶端的要求,而要求中含有授權端點簽發給用戶端的授權碼。當授權碼通過驗證時,會將適當的記號放在回應中傳回給用戶端。
在 OpenID Connect 的「隱含流程」中,不使用記號端點。
啟用 OpenID Connect 的 Liberty 伺服器能夠存取位於下列 URL 的 OpenID Connect 記號端點:
https://server.example.com:443/oidc/endpoint/<provider_name>/token
避免問題: 如果您使用出埠 Proxy,請注意,
OpenID Connect RP 不提供任何方法來自動透過 Proxy 主機遞送要求。
如果您必須使用 Proxy 來存取「OpenID Connect 提供者 (OP)」,您針對任何 OP 相關 URL 內容所輸入的值,必須包含 Proxy 主機和埠,而不是包含外部 OP 主機和埠。
在大部分情況下,您可以用 Proxy 主機和埠,取代 OP 主機和埠。RP 和用戶端(瀏覽器或應用程式)必須都能看見您所輸入的 URL。對於如何判斷所要使用的正確 URL,如需進一步指引,請聯絡您的 Proxy 管理者。
在本例中,用戶端預期的 SSL 埠設為 443。
程序
結果
一旦「OpenID Connect 提供者」驗證從用戶端所收到的記號要求,「OpenID Connect 提供者」會將 HTTP 200 回應傳回給用戶端,且其中含有一個 application/json 格式的 JSON 物件。回應中含有 ID 記號、存取記號和更新記號,以及下列的額外參數:
- token_type:OAuth 2.0 記號類型。對於 OpenID Connect,此值是 Bearer。
- expires_in:存取記號自產生回應算起的有效期限(以秒為單位)。
在記號端點所發出的回應中,只要回應含有記號、密碼或其他機密性資訊,都會將其 Cache-Control 標頭值設為 no-store,將 Pragma 標頭值設為 no-cache。
.範例
這裡顯示範例要求:
POST /token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
grant_type=authorization_code
&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
這裡顯示範例回應:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"access_token": "SlAV32hkKG",
"token_type": "Bearer",
"refresh_token": "8xLOxBtZp8",
"expires_in": 3600,
"id_token": "eyJ ... zcifQ.ewo ... NzAKfQ.ggW8h ... Mzqg"
}