將 OAuth 2.0 型鑑別用於用戶端應用程式
「開放式授權 (OAuth) 2.0」說明了資源擁有者可以向其受保護資源授予存取權的數種方式。 IBM® Cloud Pak for Business Automation as a Service 僅支援資源擁有者密碼認證 (ROPC) 授權類型,用於鑑別用戶端應用程式對雲端環境的存取權。
ROPC 授權類型
在 OAuth 2.0 術語中, Cloud Pak for Business Automation as a Service 用戶端應用程式是機密用戶端。 對於 ROPC 授權類型,他們需要一組用戶端認證(包含用戶端 ID 和用戶端密碼)以及資源擁有者使用者名稱和密碼。 若要取得用戶端認證,請使用 Credentials API 來產生它們。 若要取得使用者名稱與密碼,請以「帳戶管理者」身分登入雲端入口網站,產生一組服務認證,然後將用戶端應用程式所需要的許可權指派給它們。 許可權用來控制雲端環境的 OAuth 2.0 記號型存取權。
如需 OAuth 及 ROPC 授權類型的相關資訊,請參閱 OAuth 2.0 授權架構。 如需 Credentials API 的相關資訊,請參閱 用於 OAuth 2.0 型鑑別的範例: 認證 REST API ,以及取得服務認證的相關資訊,請參閱 建立及管理服務帳戶。
管理 OAuth 2.0 用戶端認證
OAuth 2.0 用戶端必須提供用戶端認證以識別呼叫用戶端環境定義。 您決定您需要的認證集數量。 例如,您可以將一個認證集用於所有 OAuth 2.0 用戶端,或者為每個用戶端提供單獨的認證集。
- 取得 OAuth 2.0 存取記號。使用 OAuth 2.0 /token 端點來獲得存取記號,包括用戶端(用戶端 ID 和用戶端密碼)和服務認證(使用者名稱和密碼)。 例如:
呼叫會傳回要在後續雲端作業 API 呼叫中使用的存取記號、用於重新整理存取記號的重新整理記號以及存取記號的有效期限。 請注意存取記號的有效期通常只有幾分鐘或幾小時,而重新整理記號的有效期可長達數天。 不支援範圍設定。curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' -d grant_type=password -d client_id=<clientId> -d client_secret=<clientSecret> -d username=<serviceCredId> -d password=<svcCredSecret> https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/token
如果呼叫成功,則傳回 HTTP 回應碼 201。 如果用戶端或服務認證無效,則呼叫會傳回 HTTP 回應碼{"access_token":"CJ7yDymDAfSRz03W7zdX","refresh_token":"fGAv2qzuLnM030Brs8KFaIuY1Kd2P87sLFXI85lH","scope":"","token_type":"bearer","expires_in":1799}*
BAD_REQUEST (400)
。 - 使用該記號來存取雲端作業 API。將上一步傳回的存取記號併入雲端作業 API 呼叫的授權標頭中。 例如:
如果存取記號無效或已過期,則呼叫會傳回 HTTP 回應碼 302。curl -k -v -H "Authorization: Bearer CJ7yDymDAfSRz03W7zdX" https://<tenantHost>/baw/dev/rest/bpm/wle/v1/user/current
- 使用重新整理記號來重新整理存取記號。使用 OAuth 2.0 /token 端點。
該呼叫會傳回新的記號集。curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' -d grant_type=refresh_token -d refresh_token=fGU3UjAHG0XKTdnInU8ihqTLf48XJIzQtRUjNFVo -d client_id=<clientId> -d client_secret=<clientSecret> https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/token
如果重新整理記號無效或已使用,或用戶端認證無效(例如,已刪除),則呼叫會傳回 HTTP{"access_token":"DkhN7gg7mk2gsBjGi8ay","refresh_token":"ToY13V2yfoYaeVbBjTwFLhzwX7GiKd7Y801VfjGC","scope":"","token_type":"bearer","expires_in":1799}
BAD_REQUEST (400)
回應碼。 - 在用戶端應用程式處理結束時撤銷重新整理和存取記號
當用戶端應用程式處理完成時,最好使用 OAuth 2.0 /revoke 端點來撤銷這兩個記號。 請先撤銷重新整理記號,然後再撤銷存取記號。
例如,使用下列呼叫來撤銷重新整理記號:
呼叫一律傳回成功的 HTTP 回應碼,例如 200。curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' -d client_id=<clientId> -d client_secret=<clientSecret> -d token=ToY13V2yfoYaeVbBjTwFLhzwX7GiKd7Y801VfjGC https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/revoke
注意: 在存取 API 之後,存取記號會保持有效,直到到期為止。
限制
系統對於數以百計的有效並行授權(存取及重新整理記號配對),定義出每日限制。 這會依用戶端應用程式和資源擁有者的使用者名稱,來追蹤授權。 預期應永不會達到授權限制。 不過,如果您看到訊息,指出已達授權限制,請檢查您用戶端應用程式中的授權建立設計,或是聯絡「IBM 支援中心」。