將「OpenID Connect 提供者」配置成啟用二方 (2-legged) OAuth 要求

典型的 OAuth 流程由三「方 (leg)」組成,或由用戶端與授權伺服器之間的互動階段組成。 在二方 (2-legged) OAuth 實務中,用戶端使用預先授權的範圍,因此不需要與使用者互動,因而不需要執行典型流程中的其中一方。具體來說,使用者不需要接受授權伺服器的鑑別,或是同意共用所要求範圍指定的資訊。反倒是所有所要求的 scope 參數都會視為預先授權,且會自動新增到要求記號中,之後再將要求記號傳送給授權伺服器。

開始之前

這項作業預期您有一部適當配置成「OpenID Connect 提供者」的 Liberty 伺服器。

關於這項作業

在採取二方 (2-legged) 或二階段的實務中,Open ID Connect 用戶端可以傳送二方 (2-legged) HTTP 要求,且其 grant typeclient_credentialresource owner password。這些要求不會行經授權端點,因此,不會提供範圍同意表單讓使用者確認和核准所要求的範圍;不過,「OpenID Connect 提供者」仍需要處理其 access_token 內容中的授權範圍。

如果 Liberty 伺服器是配置成「OpenID Connect 提供者」,並且有能力處理二方 (2-legged) OAuth 要求,則會使用下列準則來核准預先授權的範圍:

  1. 如果要求的 grant_type 參數值是 client_credentialresource owner password,且要求是 OAuth 2.0 要求,則會核准要求中所定義的所有範圍,並將這些範圍複製到存取記號的內容中。這是 OAuth 2.0 特性的現有行為。
  2. 如果要求是 OpenID Connect 要求或 JWT 記號 OAuth,則會使用下列準則:
    • 如果要求中沒有指定 scope 參數,則「OpenID Connect 提供者」不接受該要求。
    • 所要求的範圍必須存在於用戶端配置 scope 屬性所定義的範圍清單中,也必須指定在用戶端配置的 preAuthorizedScope 清單中。

這項作業示範如何配置 Liberty 伺服器,使其擔任「OpenID Connect 提供者」來啟用二方 (2-legged) OAuth 要求。

程序

如果要為用戶端指定預先授權的範圍清單,請在 server.xml 檔中,將必要範圍新增至適當 <oauthProvider> 元素內之用戶端配置的 scopepreAuthorizedScope 屬性中。在顯示的範例中,範圍 profileemail 都有資格指定在「OpenID Connect 提供者」所傳回的存取記號範圍清單中。不會將 phone 範圍視為預先授權的範圍,這是因為 preAuthorizedScope 清單中沒有它。
<oauthProvider id="OAuthConfigSample" ...>
 ....
           <localStore>
             <client name="client01" secret="{xor}..."
               displayname="client01"
               scope="profile email phone"
               preAuthorizedScope="profile email"
               enabled="true"/>
             ....
           </localStore>
</oauthProvider>
註: 如果所要求的範圍未列在用戶端配置的 scope 屬性中,則傳回的存取記號範圍中會省略它。如果所要求的範圍列在用戶端配置的 scope 屬性中,但是不包含在用戶端配置的 preAuthorizedScope 清單中,它會在「OpenID Connect 提供者」的回應中觸發 invalid_grant 錯誤。

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



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_oidc_2leg_oauth_req
檔名:twlp_oidc_2leg_oauth_req.html