OpenID Connect
OpenID Connect 是一種簡式身分通訊協定和開放式標準,以 OAuth 2.0 通訊協定為建置基礎,可讓用戶端應用程式根據「OpenID Connect 提供者」執行的鑑別,來驗證使用者的身分。
OpenID Connect 使用 OAuth 2.0 來進行鑑別和授權,然後建置用來唯一識別使用者的身份。用戶端應用程式也可以採取可交互作業的類 REST 方式,從「OpenID Connect 提供者」取得使用者的基本設定檔資訊。
WebSphere® Application Server Liberty 支援 OpenID Connect 1.0,並擔任「用戶端」或「依賴方」角色,以及在 Web 單一登入中擔任「提供者」角色。支援的 OpenID Connect 規格如下:
OpenID Connect 核心 1.0:如果 Liberty 伺服器是配置成「OpenID Connect 依賴方」,則支援使用「授權碼流程」進行鑑別。
如果 Liberty 伺服器是配置成「OpenID Connect 提供者」,則支援使用「授權碼流程」和「隱含流程」進行鑑別。
如果是以 Liberty 伺服器作為「Web 型依賴方」,OpenID Connect Basic Client Implementer's Guide 1.0 含有一部分的「OpenID Connect 核心」規格,不但易讀,也提供使用「授權碼流程」之「Web 型依賴方」的詳細說明。
- 存取記號
- 用來存取受保護資源的認證。存取記號是一個字串,代表簽發給用戶端的授權。
- 授權端點
- 「OpenID 提供者」上的資源,負責接受用戶端的「執行使用者鑑別和授權」授權要求。在「授權碼流程」中,授權端點會傳回授權許可或授權碼給用戶端。在「隱含流程」中,授權端點會傳回 ID 記號和存取記號給用戶端。
- 授權許可
- 這種認證代表使用者授權存取資源,並且供用戶端用來取得存取記號。
- 聲明
- 實體的相關主張資訊。舉例來說,聲明可以是電話號碼、名字、姓氏和其他。
- ID 記號
- 為「JSON Web 記號 (JWT)」,含有已鑑別使用者的相關聲明。
- 內部檢查端點
- 「OpenID 提供者」上的資源,可讓持有存取記號的用戶端擷取用來建立該存取記號的資訊,例如:使用者名稱、授與的範圍、用戶端 ID 或其他資訊。
- OpenID Connect 提供者 (OP)
- 一種 OAuth 2.0 授權伺服器,能夠提供聲明給用戶端或「依賴方 (RP)」。
- 重新整理記號
- 由 OP 簽發給用戶端,在現行存取記號過期時,用來取得新的存取記號,或者用來取得更多存取記號。
- 依賴方 (RP)
- 可以是配置成「OpenID Connect 用戶端」的 Liberty 伺服器,或是需要從「OpenID 提供者 (OP)」取得聲明的用戶端應用程式。
- 範圍
- 容許存取協力廠商資源的專用權或許可權。
- 記號端點
- OP 上的資源,會接受用戶端提供的授權許可或授權碼,以交換存取記號、ID 記號和重新整理記號。
作為「OpenID Connect 用戶端」的 Liberty 伺服器
您可以將 WebSphere Application Server Liberty 配置成擔任「OpenID Connect 用戶端」。這項設定可讓 Liberty 伺服器依賴擔任 OP(負責使用者鑑別和授權)的另一部 Liberty 伺服器。
當 Liberty 伺服器配置成擔任 「OpenID Connect 用戶端」時,它支援 OpenID Connect 1.0 標準中的「授權碼流程」。
在「授權碼流程」中,所有的記號交換都是利用「OpenID Connect 提供者」的記號端點來處理。首先,用戶端提交授權要求給 OP 的授權端點。在 OP 鑑別和授權成功之後,用戶端會收到 OP 發出的授權許可或授權碼。之後可將這個授權碼放在要求中,傳送給 OP 的記號端點。用戶端會在記號端點的回應中,收到 ID 記號、存取記號和重新整理記號。接著,用戶端驗證 ID 記號,並擷取使用者的主體 ID。這種設定檔流程適用於可以安全維護其本身與 OP 間之用戶端密碼的用戶端。這種流程亦容許用戶端取得重新整理記號。
如果要將 Liberty 伺服器配置成「OpenID Connect 用戶端」,請參閱在 Liberty 中配置「OpenID Connect 用戶端」
作為「OpenID Connect 提供者」的 Liberty 伺服器
您可以將 WebSphere Application Server Liberty 配置成擔任「OpenID Connect 提供者」。這項設定可讓 Liberty 伺服器擔任可供「OpenID Connect 用戶端」使用的授權伺服器。
當 Liberty 伺服器配置成擔任「OpenID Connect 提供者」時,它支援 OpenID Connect 1.0 標準中的「授權碼流程」和「隱含流程」。每一個流程會決定如何將 ID 記號、存取記號和重新整理記號傳回給用戶端。
在「授權碼流程」中,會使用「OpenID Connect 提供者」的記號端點來處理所有的記號交換。「OpenID Connect 提供者」會在 OP 的授權端點接受用戶端的授權要求。如果需要鑑別,「OpenID Connect 提供者」會執行適當的鑑別。「OpenID Connect 提供者」也會從使用者取得任何必要的同意或授權,例如,在瀏覽器中提示使用者提供許可權,以授與對特定範圍的存取權。如果成功或者不需要鑑別,「OpenID 提供者」會傳回授權許可或授權碼給用戶端。接著,「OpenID Connect 提供者」會接受用戶端提交給其記號端點的要求,該要求中含有授權碼。「OpenID 提供者」會驗證含有授權碼的要求。一旦驗證成功,「OpenID Connect 提供者」會將回應傳回給用戶端,其中含有 ID 記號和存取記號。
與「授權碼流程」不同的是,在「隱含流程」中,所有記號全由授權端點傳回;不會使用 OP 的記號端點。首先,用戶端準備並傳送鑑別要求給 OP 的授權端點。接著,「OpenID Connect 提供者」執行任何必要的鑑別,同時從使用者取得任何必要的同意或授權。舉例來說,「OpenID Connect 提供者」會在瀏覽器中提示使用者提供許可權,以授與對特定範圍的存取權。一旦鑑別和授權成功,「OpenID Connect 提供者」會傳回 ID 記號和存取記號給用戶端。接著,用戶端驗證 ID 記號,並擷取使用者的主體 ID。這種設定檔流程適用於無法安全維護其本身與 OP 間之用戶端密碼的用戶端,例如:原生應用程式。
如果要將 Liberty 伺服器配置成「OpenID Connect 提供者」,請參閱在 Liberty 中配置「OpenID Connect 提供者」
授權碼流程
以下說明一般的「OpenID Connect 授權碼流程」:
- 使用者存取 RP 上的應用程式。
- RP 準備鑑別要求,並將使用者重新導向至 OP。
- OP 鑑別使用者,例如,提示使用者提供認證。使用者授權 RP 存取應用程式所需的資訊。OP 產生單次使用的授權碼給 RP。
- OP 將使用者連同授權碼重新導向回 RP。
- RP 呼叫 OP 的記號端點,以便將授權碼交換成存取記號、ID 記號和重新整理記號。
- RP 使用 ID 記號來授權使用者。

隱含流程
只有擔任「OpenID Connect 提供者」的 Liberty 伺服器才支援「隱含流程」。以下說明一般的「OpenID Connect 隱含流程」:
- 使用者存取 RP 上的應用程式。
- RP 準備鑑別要求,並將使用者重新導向至 OP。
- OP 鑑別使用者,例如,提示使用者提供認證。使用者授權 RP 存取應用程式所需的資訊。
- OP 將使用者連同 ID 記號和存取記號,重新導向回 RP。
- RP 使用 ID 記號來授權使用者。
