使用授權程式碼流程設定及使用您組織的自訂OAuth 2應用程式
為了與Workfront整合併允許您的使用者端應用程式代表使用者與Workfront通訊,您必須:
- 建立Oauth2應用程式
- 設定協力廠商應用程式
- 連結至授權使用者頁面
- 設定授權代碼流程:使用者登入Workfront執行個體,並同意允許使用者端應用程式代表他們連線至Workfront。 因此,您會取得授權代碼,以便與存取權杖交換並重新整理Token。
- 設定重新整理Token流程:在此流程中,您可使用重新整理Token,在舊的Token過期時取得新的Access Token。
建立Oauth2應用程式
如需建立OAuth2應用程式的指示,請參閱建立Workfront整合的OAuth2應用程式中的使用使用者認證(授權代碼流程)建立OAuth2應用程式
連結至授權使用者頁面
您的使用者需要登入,才能在其帳戶中授權此整合。 使用者可授權的頁面具有特定格式,如下所述。 使用此資訊來判斷應用程式的授權頁面位址,並提供您的使用者此位址或連結。
-
您組織網域的完整URL。 範例:
code language-none https://myorganization.my.workfront.com
-
client_id
:這是您在Workfront中建立OAuth2應用程式時產生的使用者端ID。 -
redirect_uri
:此URL必須與建立OAuth2應用程式時您在Workfront中輸入的重新導向URL相同。 您的使用者在為其帳戶授權應用程式後,即會被導向此頁面。 -
response_type
:此值必須為code
。
因此,授權頁面的URL為:
https://<URL of your organization's domain>/integrations/oauth2/authorize?client_id=<Your ClientID>&redirect_uri=<Your redirect URL>&response_type=code
設定協力廠商應用程式
協力廠商應用程式可能需要設定。 下表包含設定協力廠商應用程式時可能需要的欄位相關資訊。
設定授權代碼流程
若要使用OAuth2登入使用者,請使用下列程式:
-
使用者開啟授權頁面時,會重新導向至Workfront登入頁面,讓使用者可登入Workfront。 如果使用者有SSO組態,將會開啟識別提供者登入頁面。
如果使用者已在相同瀏覽器上登入Workfront,或使用者已成功登入Workfront,則會將使用者重新導向至同意畫面:
-
如果使用者允許存取,頁面會重新導向至
redirect_url
。 重新導向必須包括下列查詢引數:
-
code
:取得存取/重新整理Token所需的授權碼。 -
domain
:您組織的網域。 範例:在myorganization.my.workfront.com
中,網域為myorganization
。 -
lane
:要求的通道。 範例:在myorganization.preview.workfront.com
中,車道是preview
。note important IMPORTANT code
僅有效2分鐘。 因此,您必須在該時間內取得重新整理和存取權杖。
-
擁有程式碼時,您可以將程式碼連同使用者端應用程式認證傳送至
/integrations/oauth2/api/v1/token
端點,以要求重新整理和存取權杖。完整的權杖請求URL為
code language-none https://<URL of your organization's domain></span>/integrations/oauth2/api/v1/token
範例: 對權杖端點進行CURL呼叫的範例:
範例1
code language-none curl --location --request POST '**<workfront host>**/integrations/oauth2/api/v1/token' \ --header 'Authorization: Basic **<base64(client_id:client_secret)>**' \ --header 'Content-Type: application/json' \ --data-raw '{ "code": "**<code>**", "grant_type": "**authorization_code**", "redirect_uri": "**<redirect_url>**" }'
範例2
code language-none curl --location --request POST '**<workfront host>**/integrations/oauth2/api/v1/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=**authorization_code**' \ --data-urlencode 'redirect_uri=**<redirect_url>**' \ --data-urlencode 'code=**<code>**' \ --data-urlencode 'client_id=**<client_id>**' \ --data-urlencode 'client_secret=**<client_secret>**'
note important IMPORTANT 在Workfront中註冊應用程式時產生使用者端密碼。 您應將其儲存在安全的地方,因為如果遺失則無法復原。 當所有傳遞的引數都正確時,權杖端點會傳回以下裝載:
code language-none { "token_type": "sessionID", "access_token": "string", // the value of sessionID "refresh_token": "string", "expires_in": 0, "wid": "string" }
存取權杖與
sessionID
相同,過期時間與一般sessionID
相同note important IMPORTANT 將重新整理權杖儲存在安全的地方。 舊的Token過期時,您需要它才能取得新的Refresh Token。 Workfront不會儲存您的重新整理Token。 -
現在當您有存取權杖時,可以對Workfront進行API呼叫
code language-none curl --request GET 'https://<workfront host>/attask/api/v14.0/proj/search \ --header 'sessionID: <access_token>'
設定重新整理存取權杖
若要重新整理access_token,我們再次需要對token端點執行「POST」呼叫。 這次我們會傳送不同的表單資料,如下所示:
curl --location --request POST '<workfront host>/integrations/oauth2/api/v1/token' \
--header 'Authorization: Basic <base64(client_id:client_secret)>' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "refresh_token",
"refresh_token": "<refresh_token>"
}'
###### OR
curl --location --request POST '<workfront host>/integrations/oauth2/api/v1/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode 'redirect_uri=<redirect_url>' \
--data-urlencode 'refresh_token=<refresh_token>' \
--data-urlencode 'client_id=<client_id>' \
--data-urlencode 'client_secret=<client_secret>'
它會傳回以下結果:
{
"token_type": "sessionID",
"access_token": "string", // the value of sessionID
"refresh_token": "string",
"expires_in": 0,
"wid": "string"
}
存取權杖同樣是sessionID
,可用於向Workfront提出API請求。