呼叫 OpenID Connect 的記號端點

在 OpenID Connect 的「授權碼流程」中,記號端點供用戶端用來取得 ID 記號、存取記號和更新記號。

開始之前

例如,從瀏覽器內的用戶端應用程式,或從用 Scripting 語言(例如 Javascript)來實作的用戶端應用程式,來啟動記號端點時,不需要將 Liberty 伺服器配置成「OpenID Connect 用戶端」。

關於這項作業

記號端點會接受用戶端的要求,而要求中含有授權端點簽發給用戶端的授權碼。當授權碼通過驗證時,會將適當的記號放在回應中傳回給用戶端。

在 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。

程序

  1. 準備具有下列參數的 HTTP POST 要求。
    • grant_type:這個參數的值必須是 authorization_code
    • code:從授權端點收到的授權碼。

    必須以 application/x-www-form-urlencoded 格式來新增這些參數。

  2. 使用 POST 將要求公佈到記號端點 URL。

結果

完成這些步驟之後,您已具有有效的 HTTP POST 要求,且將傳送給記號端點。記號端點依「範例」區段所述傳回回應。

一旦「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

.

範例

下列顯示 HTTP POST 要求和回應範例

這裡顯示範例要求:

 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"
 }

指示主題類型的圖示 作業主題

檔名:twlp_oidc_token_endpoint.html