將 OAuth 2.0 型鑑別用於用戶端應用程式

「開放式授權 (OAuth) 2.0」說明了資源擁有者可以向其受保護資源授予存取權的數種方式。 IBM® Cloud Pak for Business Automation as a Service 僅支援資源擁有者密碼認證 (ROPC) 授權類型,用於鑑別用戶端應用程式對雲端環境的存取權。

附註: 依預設,在雲端訂閱上不會啟用 OAuth 2.0 型鑑別。 如果您想要使用它,請透過 IBM 支援中心入口網站提交要求。

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 鑑別,您的應用程式必須併入下列互動。
重要事項: 下列呼叫可能會傳回 PD-S-SESSION-ID 及 PD-ID Cookie 的 Set-Cookie 指令作為回應的一部分。 請勿在後續的呼叫中使用這些 Cookie。
  1. 取得 OAuth 2.0 存取記號。
    使用 OAuth 2.0 /token 端點來獲得存取記號,包括用戶端(用戶端 ID 和用戶端密碼)和服務認證(使用者名稱和密碼)。 例如:
    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
    
    呼叫會傳回要在後續雲端作業 API 呼叫中使用的存取記號、用於重新整理存取記號的重新整理記號以及存取記號的有效期限。 請注意存取記號的有效期通常只有幾分鐘或幾小時,而重新整理記號的有效期可長達數天。 不支援範圍設定。
    {"access_token":"CJ7yDymDAfSRz03W7zdX","refresh_token":"fGAv2qzuLnM030Brs8KFaIuY1Kd2P87sLFXI85lH","scope":"","token_type":"bearer","expires_in":1799}*
    如果呼叫成功,則傳回 HTTP 回應碼 201。 如果用戶端或服務認證無效,則呼叫會傳回 HTTP 回應碼 BAD_REQUEST (400)
  2. 使用該記號來存取雲端作業 API。
    將上一步傳回的存取記號併入雲端作業 API 呼叫的授權標頭中。 例如:
    curl -k -v -H "Authorization: Bearer CJ7yDymDAfSRz03W7zdX" https://<tenantHost>/baw/dev/rest/bpm/wle/v1/user/current
    如果存取記號無效或已過期,則呼叫會傳回 HTTP 回應碼 302。
  3. 使用重新整理記號來重新整理存取記號。
    使用 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
    
    該呼叫會傳回新的記號集。
    {"access_token":"DkhN7gg7mk2gsBjGi8ay","refresh_token":"ToY13V2yfoYaeVbBjTwFLhzwX7GiKd7Y801VfjGC","scope":"","token_type":"bearer","expires_in":1799}
    如果重新整理記號無效或已使用,或用戶端認證無效(例如,已刪除),則呼叫會傳回 HTTP BAD_REQUEST (400) 回應碼。
  4. 在用戶端應用程式處理結束時撤銷重新整理和存取記號

    當用戶端應用程式處理完成時,最好使用 OAuth 2.0 /revoke 端點來撤銷這兩個記號。 請先撤銷重新整理記號,然後再撤銷存取記號。

    例如,使用下列呼叫來撤銷重新整理記號:
    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
    
    呼叫一律傳回成功的 HTTP 回應碼,例如 200。
    注意: 在存取 API 之後,存取記號會保持有效,直到到期為止。

限制

系統對於數以百計的有效並行授權(存取及重新整理記號配對),定義出每日限制。 這會依用戶端應用程式和資源擁有者的使用者名稱,來追蹤授權。 預期應永不會達到授權限制。 不過,如果您看到訊息,指出已達授權限制,請檢查您用戶端應用程式中的授權建立設計,或是聯絡「IBM 支援中心」。