取得 OAuth 2.0 權杖

本頁內容適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

本文說明如何使用 Apigee API 取得 OAuth 2.0 存取憑證和授權碼。我們也會說明如何為各個 OAuth 2.0 授權類型建立政策,以及如何設定 Proxy 端點來接受用戶端要求。

使用授權碼授權類型

本節說明如何使用授權碼授予類型流程取得存取權杖。這個流程的權杖要求需要授權碼。請參閱「取得授權碼」。 另請參閱「什麼是 OAuth 2.0 授權類型」。

要求範例

curl -i -H 'Content-Type: application/x-www-form-urlencoded' \
   -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
   -X POST 'https://apitest.acme.com/oauth/token' \
   -d 'code=I9dMGHAN&grant_type=authorization_code&redirect_uri=http://example-callback.com' 

必要參數

根據預設,這些參數必須為 x-www-form-urlencoded,且在要求主體中指定 (如上例所示);不過,您可以在 OAuthV2 政策中設定 <GrantType><Code><RedirectUri> 元素,變更這項預設值。請參閱 OAuthV2 政策

  • grant_type - 必須設為 authorization_code 值。
  • code - 授權碼。請參閱「 要求授權碼」。
  • redirect_uri - 如果授權碼要求中包含 redirect_uri 參數,您就必須提供這項參數。如果授權碼要求中未包含 redirect_uri 參數,且您未提供此參數,則這項政策會使用註冊開發人員應用程式中提供的「回呼網址」值。

選用參數

  • state - 系統會將這個字串連同回應一併傳回。通常用於防範跨網站偽造要求攻擊。
  • 範圍 - 可讓您篩選可使用所產生權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。

授權

您必須以基本授權標頭 (Base64 編碼) 或表單參數 client_idclient_secret 形式,傳遞用戶端 ID 和用戶端密鑰。您可以從已註冊的開發人員應用程式取得這些值。另請參閱「編碼基本驗證憑證」。

範例端點

以下是產生存取權杖的端點設定範例。這項政策會執行 GenerateAccessToken 政策,且必須設定為支援 authorization_code 授權類型。

...
       <Flow name="generate-access-token">
            <Description>Generate a token</Description>
            <Request>
                <Step>
                    <Name>GenerateAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
        </Flow>
...

範例政策

這是基本的 GenerateAccessToken 政策,設定為接受 authorization_code 授權類型。如要瞭解可透過這項政策設定的選用設定元素,請參閱「OAuthV2 政策」。

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn>
    <RefreshTokenExpiresIn>86400000</RefreshTokenExpiresIn>
    <SupportedGrantTypes>
      <GrantType>authorization_code</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

退貨

啟用 <GenerateResponse> 後,政策會傳回包含存取權杖的 JSON 回應,如下所示。authorization_code 授權類型會建立存取權杖和更新權杖,因此回應可能如下所示:

{
    "issued_at": "1420262924658",
    "scope": "READ",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "refresh_token_issued_at": "1420262924658",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799", //--in seconds
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "refresh_token": "fYACGW7OCPtCNDEnRSnqFlEgogboFPMm",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "2l4IQtZXbn5WBJdL6EF7uenOWRsi",
    "organization_name": "docs",
    "refresh_token_expires_in": "86399", //--in seconds
    "refresh_count": "0"
}

如果將 <GenerateResponse> 設為 False,政策不會傳回回應。而是會填入下列一組流程變數,其中包含與存取權杖授權相關的資料。

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_status

例如:

oauthv2accesstoken.GenerateAccessToken.access_token
oauthv2accesstoken.GenerateAccessToken.expires_in
oauthv2accesstoken.GenerateAccessToken.refresh_token
oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in
oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at
oauthv2accesstoken.GenerateAccessToken.refresh_token_status

使用用戶端憑證授權類型

本節說明如何使用用戶端憑證授權類型流程取得存取權杖。另請參閱「什麼是 OAuth 2.0 授權類型」。

要求範例

curl -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \
  -X POST "https://apitest.acme.com/oauth/token" \
  -d "grant_type=client_credentials"

必要參數

  • grant_type - 必須設為值 client_credentials

    根據預設,必要 grant_type 參數必須為 x-www-form-urlencoded,且在要求主體中指定 (如上例所示);不過,您可以在 OAuthV2 政策中設定 <GrantType> 元素,變更這項預設值。舉例來說,您可能會選擇在查詢參數中傳遞 參數。詳情請參閱「OAuthV2 政策」。

選用參數

  • state - 系統會將這個字串連同回應一併傳回。通常用於防範跨網站偽造要求攻擊。
  • 範圍 - 可讓您篩選可使用所產生權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。

授權

您必須以基本授權標頭 (Base64 編碼) 或表單參數 client_idclient_secret 形式,傳遞用戶端 ID 和用戶端密鑰。您可以從與要求相關聯的已註冊開發人員應用程式取得這些值。另請參閱編碼基本驗證憑證

範例端點

以下是產生存取權杖的端點設定範例。這項政策會執行 GenerateAccessToken 政策,後者必須設定為支援 client_credentials 授權類型。

...
       <Flow name="generate-access-token">
            <Request>
                <Step>
                    <Name>GenerateAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
        </Flow>
...

範例政策

這是基本的 GenerateAccessToken 政策,設定為接受 client_credentials 授權類型。如要瞭解可透過這項政策設定的選用設定元素,請參閱「OAuthV2 政策」。

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <SupportedGrantTypes>
      <GrantType>client_credentials</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

退貨

啟用 <GenerateResponse> 後,政策會傳回 JSON 回應。請注意,使用 client_credentials 授權類型時,系統不支援重新整理權杖。系統只會產生存取權杖。例如:

{
    "issued_at": "1420260525643",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "scope": "READ",
    "status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799", //--in seconds
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "XkhU2DFnMGIVL2hvsRHLM00hRWav",
    "organization_name": "docs"
}

如果將 <GenerateResponse> 設為 False,政策不會傳回回應。而是會填入下列一組流程變數,其中包含與存取權杖授權相關的資料。

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in seconds

例如:

oauthv2accesstoken.GenerateAccessToken.access_token
oauthv2accesstoken.GenerateAccessToken.expires_in     //--in seconds

使用密碼授權類型

本節說明如何使用資源擁有者密碼憑證 (密碼) 授權類型流程,取得存取權杖。另請參閱「實作密碼授權類型」。另請參閱「什麼是 OAuth 2.0 授權類型」。

要求範例

curl -v -k -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \
  -X POST "https://apitest.acme.com/oauth/token" \
  -d "grant_type=password&username=a_username&password=a_password"

必要參數

根據預設,這些參數必須為 x-www-form-urlencoded,且在要求主體中指定 (如上例所示);不過,您可以在 OAuthV2 政策中設定 <GrantType><Username><Password> 元素,變更這項預設值。請參閱 OAuthV2 政策

使用者憑證通常會透過 LDAP 或 JavaScript 政策,根據憑證存放區進行驗證。

  • grant_type - 必須設為 password 值。
  • username - 資源擁有者的使用者名稱。
  • password - 資源擁有者的密碼。

選用參數

  • state - 系統會將這個字串連同回應一併傳回。通常用於防範跨網站偽造要求攻擊。
  • 範圍 - 可讓您篩選可使用所產生權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。

授權

您必須以基本授權標頭 (Base64 編碼) 或表單參數 client_idclient_secret 形式,傳遞用戶端 ID 和用戶端密鑰。您可以從與要求相關聯的已註冊開發人員應用程式取得這些值。另請參閱編碼基本驗證憑證

範例端點

以下是產生存取權杖的端點設定範例。系統會執行 GenerateAccessToken 政策,該政策必須設定為支援密碼授權類型。

...
       <Flow name="generate-access-token">
            <Request>
                <Step>
                    <Name>GenerateAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
        </Flow>
...

範例政策

這是設定為接受密碼授權類型的基本 GenerateAccessToken 政策。如要瞭解可透過這項政策設定的選用設定元素,請參閱 OAuthV2 政策

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

退貨

啟用 <GenerateResponse> 後,政策會傳回 JSON 回應。請注意,使用密碼授權類型時,系統會產生存取權杖和更新權杖。例如:

{
    "issued_at": "1420258685042",
    "scope": "READ",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "refresh_token_issued_at": "1420258685042",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799", //--in seconds
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6",
    "organization_name": "docs",
    "refresh_token_expires_in": "28799", //--in seconds
    "refresh_count": "0"
}

如果將 <GenerateResponse> 設為 False,政策不會傳回回應。而是會填入下列一組流程變數,其中包含與存取權杖授權相關的資料。

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in   //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in  //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_status

例如:

oauthv2accesstoken.GenerateAccessToken.access_token
oauthv2accesstoken.GenerateAccessToken.expires_in
oauthv2accesstoken.GenerateAccessToken.refresh_token
oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in
oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at
oauthv2accesstoken.GenerateAccessToken.refresh_token_status

使用隱含授權類型

本節說明如何使用隱含授權類型流程取得存取權權杖。 另請參閱「什麼是 OAuth 2.0 授權類型」。

要求範例

$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
  'https://apitest.acme.com/oauth/implicit?response_type=token&client_id=c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ&redirect_uri=http://callback-example.com'

必要參數

根據預設,這些參數必須是查詢參數 (如上例所示),但您可以透過設定附加至這個 /token 端點的 OAuthV2 政策中的 <ResponseType><ClientId><RedirectUri> 元素,變更這項預設設定。詳情請參閱「OAuthV2 政策」。

通常會使用 LDAP 服務呼叫或 JavaScript 政策,根據憑證存放區驗證使用者憑證。

  • response_type - 必須設為 token 值。
  • client_id - 已註冊開發人員應用程式的用戶端 ID。
  • redirect_uri - 如果註冊用戶端開發人員應用程式時未提供回呼 URI,這個參數就必須提供。如果是在用戶端註冊時提供回呼網址,系統會將該網址與這個值進行比較,兩者必須完全相符。

選用參數

  • state - 系統會將這個字串連同回應一併傳回。通常用於防範跨網站偽造要求攻擊。
  • 範圍 - 可讓您篩選可使用所產生權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。

授權

不需授權標頭,但您必須傳遞用戶端 ID 做為要求參數。

範例端點

以下是產生存取權杖的端點設定範例。系統會執行 GenerateAccessTokenImplicitGrant 政策。

...
       <Flow name="generate-access-token-implicit">
            <Request>
                <Step>
                    <Name>GenerateAccessTokenImplicitGrant</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/implicit") and (request.verb = "POST")</Condition>
        </Flow>
...

範例政策

這是基本的 GenerateAccessTokenImplicitGrant 政策,可處理隱含授權類型流程的權杖要求。如要瞭解可透過這項政策設定的選用設定元素,請參閱「OAuthV2 政策」。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 name="GenerateAccessTokenImplicit">
    <DisplayName>GenerateAccessTokenImplicit</DisplayName>
    <Operation>GenerateAccessTokenImplicitGrant</Operation>
    <GenerateResponse enabled="true"/>
</OAuthV2>

退貨

啟用 <GenerateResponse> 後,政策會在回應標頭中傳回 302 Location 重新導向。重新導向會指向 redirect_uri 參數中指定的網址,並附加存取權杖和權杖到期時間。請注意,隱含授權類型不支援重新整理權杖。例如:

https://callback-example.com#expires_in=1799&access_token=In4dKm4ueoGZRbIYJhC9yZCmTFw5

如果將 <GenerateResponse> 設為 False,政策不會傳回回應。而是會填入下列一組流程變數,其中包含與存取權杖授權相關的資料。

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in  //--in seconds

例如:

oauthv2accesstoken.GenerateAccessToken.access_token
oauthv2accesstoken.GenerateAccessToken.expires_in   //--in seconds

取得授權碼

在授權碼授權類型流程中,您必須提供授權碼才能取得存取權杖。請參閱「使用授權碼授權類型」。 另請參閱「什麼是 OAuth 2.0 授權類型」。

要求範例

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \
  "https://apitest.acme.com/oauth/authorize?response_type=code&client_id=c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ&redirect_uri=http://my-callback.com"

必要參數

根據預設,這些參數必須是查詢參數 (如上例所示),但您可以在 OAuthV2 政策中設定 <ResponseType><ClientId><RedirectUri> 元素,變更這項預設設定。詳情請參閱「OAuthV2 政策」。

  • redirect_uri - 如果已在註冊的用戶端應用程式中指定完整 (而非部分) 的回呼 URI,這個參數為選用;否則為必要參數。回呼是 Apigee 傳送新核發授權碼的網址。另請參閱「註冊應用程式及管理 API 金鑰」。
  • response_type - 必須設為 code 值。
  • client_id - 已註冊開發人員應用程式的用戶端 ID。

選用參數

  • redirect_uri - 如果已在註冊的用戶端應用程式中指定完整 (而非部分) 的回呼 URI,這個參數為選用;否則為必要參數。回呼是 Apigee 傳送新核發授權碼的網址。另請參閱「註冊應用程式及管理 API 金鑰」。
  • state - 系統會將這個字串連同回應一併傳回。通常用於防範跨網站偽造要求攻擊。
  • 範圍 - 可讓您篩選可使用所產生權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。

授權

不需要授權標頭,但必須在要求中提供已註冊用戶端應用程式的用戶端 ID。

範例政策

這是基本的 GenerateAuthorizationCode 政策。如需更多設定選項,請參閱 OAuthV2 政策

<OAuthV2 name="GenerateAuthorizationCode">
    <Operation>GenerateAuthorizationCode</Operation>
    <GenerateResponse enabled="true"/>
</OAuthV2>

退貨

啟用 <GenerateResponse> 後,政策會將 ?code 查詢參數連同授權碼,傳回至 redirect_uri (回呼 URI) 位置。系統會透過 302 瀏覽器重新導向傳送,網址位於回應的 Location 標頭中。例如:?code=123456

如果 <GenerateResponse> 設為 false,政策不會傳回回應。而是會填入下列一組流程變數,其中包含授權碼的相關資料。

oauthv2authcode.{policy-name}.code
oauthv2authcode.{policy-name}.scope
oauthv2authcode.{policy-name}.redirect_uri
oauthv2authcode.{policy-name}.client_id

例如:

oauthv2authcode.GenerateAuthorizationCode.code
oauthv2authcode.GenerateAuthorizationCode.scope
oauthv2authcode.GenerateAuthorizationCode.redirect_uri
oauthv2authcode.GenerateAuthorizationCode.client_id

重新整理存取權杖

更新權杖是一種憑證,通常用於存取權杖過期或失效後取得存取權杖。當您收到存取權杖時,回應中會傳回更新權杖。

要求範例

如要瞭解如何編碼下列呼叫中的基本驗證標頭,請參閱「編碼基本驗證憑證」。

$ curl -X POST \
  -H "Content-type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \
  https://apitest.acme.com/oauth/refresh \
  -d "grant_type=refresh_token&refresh_token=yVSL38WpuN3Kzn1UTMoE6AQ4ANZM"

必要參數

根據預設,政策會尋找要求主體中指定的 x-www-form-urlencoded 參數,如上例所示。如要為這些輸入內容設定替代位置,可以在 OAuthV2 政策中使用 <GrantType><RefreshToken> 元素。詳情請參閱「OAuthV2 政策」。

  • grant_type - 必須設為 refresh_token 值。
  • refresh_token - 與您要更新的存取權杖相關聯的更新權杖。

選用參數

  • state - 系統會將這個字串連同回應一併傳回。通常用於防範跨網站偽造要求攻擊。
  • 範圍 - 可讓您篩選可使用所產生權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。

授權

不需要授權標頭,但必須在要求中提供已註冊用戶端應用程式的用戶端 ID。

更新存取權杖時,系統不會重新驗證使用者。

以下是使用更新權杖產生存取權杖的範例端點設定。 並執行 RefreshAccessToken 政策。

 ...
       <Flow name="generate-refresh-token">
            <Request>
                <Step>
                    <Name>RefreshAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/refresh") and (request.verb = "POST")</Condition>
       </Flow>
...

範例政策

這是基本的 RefreshAccessToken 政策,設定為接受 refresh_token 授權類型。如要瞭解可透過這項政策設定的選用設定元素,請參閱「OAuthV2 政策」。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 name="RefreshAccessToken">
    <Operation>RefreshAccessToken</Operation>
    <GenerateResponse enabled="true"/>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours -->
</OAuthV2>

退貨

啟用 <GenerateResponse> 後,政策會傳回包含新存取權杖的 JSON 回應。refresh_token 授權類型支援鑄造存取權和新的更新權杖。例如:

{
    "issued_at": "1420301470489",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "scope": "READ",
    "refresh_token_issued_at": "1420301470489",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799", //--in seconds
    "developer.email": "tesla@weathersample.com",
    "token_type": "BearerToken",
    "refresh_token": "8fKDHLryAD9KFBsrpixlq3qPJnG2fdZ5",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "jmZ2Hqv3iNsABUtAAsfWR3QGNctw",
    "organization_name": "docs",
    "refresh_token_expires_in": "28799", //--in seconds
    "refresh_count": "2"
}

請注意,新的更新權杖核發後,原權杖就會失效。

如果 <GenerateResponse> 設為 true,就會收到上述回應。 如果將 <GenerateResponse> 設為 False,政策不會傳回回應。 而是會填入下列一組情境 (流程) 變數,其中包含與存取權杖授權相關的資料。

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in   //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in  //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_status

例如:

oauthv2accesstoken.RefreshAccessToken.access_token
oauthv2accesstoken.RefreshAccessToken.expires_in
oauthv2accesstoken.RefreshAccessToken.refresh_token
oauthv2accesstoken.RefreshAccessToken.refresh_token_expires_in
oauthv2accesstoken.RefreshAccessToken.refresh_token_issued_at
oauthv2accesstoken.RefreshAccessToken.refresh_token_status

編碼基本驗證憑證

當您發出 API 呼叫來要求權杖或授權碼時,建議您按照 IETF RFC 2617 的說明,將 client_id 和 client_secret 值做為 HTTP 基本授權標頭傳遞,這是 OAuth 2.0 規格建議的做法。如要執行這項操作,您必須先將兩個值以半形冒號分隔並串連在一起,然後對結果進行 base64 編碼。

虛擬程式碼:

result = Base64Encode(concat('ns4fQc14Zg4hKFCNaSzArVuwszX95X', ':', 'ZIjFyTsNgQNyxI'))

其中:ns4fQc14Zg4hKFCNaSzArVuwszX95X 是 client_id,ZIjFyTsNgQNyxI 是用戶端密鑰。

範例

這個範例指令適用於 Linux 和 macOS:

export CREDENTIALS=$(echo -n 'ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI' | base64)

接著,您可以按照下列方式提出權杖要求:

$ curl -i -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic $CREDENTIALS" \
  -X POST "https://apitest.acme.com/oauth/token" \
  -d "grant_type=client_credentials"

雜湊處理資料庫中的權杖

Apigee 會將所有 OAuth 存取和重新整理權杖雜湊化,以防資料庫發生安全漏洞。您在 API 呼叫中使用未經雜湊處理的權杖,Apigee 會根據資料庫中經過雜湊處理的版本驗證這些權杖。

相關主題