本頁適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本文將說明如何使用 Apigee API 取得 OAuth 2.0 存取權憑證和授權碼。我們也會說明如何為每種 OAuth 2.0 授權類型建立政策,以及設定代理程式端點來接受用戶端要求。
使用授權碼授權類型
本節說明如何使用授權碼授權類型流程取得存取權權杖。這個流程的符記要求需要授權碼。請參閱「取得授權碼」。另請參閱「什麼是 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 - 系統會隨回應傳回此字串。通常用於防範跨網站要求偽造攻擊。
- scope:可讓您篩選可使用鑄造權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。
授權
您必須將用戶端 ID 和用戶端密鑰做為基本授權標頭 (Base64 編碼) 或表單參數 client_id
和 client_secret
傳遞。您可以從已註冊的開發人員應用程式取得這些值。另請參閱「編碼基本驗證憑證」。
範例端點
以下是產生存取權杖的端點設定範例。系統會執行 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 - 系統會隨回應傳回此字串。通常用於防範跨網站要求偽造攻擊。
- scope:可讓您篩選可使用鑄造權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。
授權
您必須將用戶端 ID 和用戶端密鑰做為基本授權標頭 (Base64 編碼) 或表單參數 client_id
和 client_secret
傳遞。您可以從與要求相關聯的已註冊開發人員應用程式取得這些值。另請參閱「編碼基本驗證憑證」。
範例端點
以下是產生存取權杖的端點設定範例。系統會執行 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 - 系統會隨回應傳回此字串。通常用於防範跨網站要求偽造攻擊。
- scope:可讓您篩選可使用鑄造權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。
授權
您必須將用戶端 ID 和用戶端密鑰做為基本授權標頭 (Base64 編碼) 或表單參數 client_id
和 client_secret
傳遞。您可以從與要求相關聯的已註冊開發人員應用程式取得這些值。另請參閱「編碼基本驗證憑證」。
範例端點
以下是產生存取權杖的端點設定範例。系統會執行 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 - 系統會隨回應傳回此字串。通常用於防範跨網站要求偽造攻擊。
- scope:可讓您篩選可使用鑄造權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。
授權
不需要 Authorization 標頭,但您必須將用戶端 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 - 系統會隨回應傳回此字串。通常用於防範跨網站要求偽造攻擊。
- scope:可讓您篩選可使用鑄造權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。
授權
不需要 Authorization 標頭,但要求中必須提供已註冊用戶端應用程式的用戶端 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 - 系統會隨回應傳回此字串。通常用於防範跨網站要求偽造攻擊。
- scope:可讓您篩選可使用鑄造權杖的 API 產品清單。如要進一步瞭解範圍,請參閱「使用 OAuth2 範圍」。
授權
不需要 Authorization 標頭,但要求中必須提供已註冊用戶端應用程式的用戶端 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 呼叫來要求權杖或授權碼時,建議您依循 OAuth 2.0 規格,將 client_id 和 client_secret 值傳遞為 HTTP-Basic Authorization 標頭,如 IETF RFC 2617 所述。為此,您必須將兩個值連接起來,並以半形冒號分隔,然後使用 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 會根據資料庫中的雜湊版本驗證這些權杖。
相關主題
- 實作用戶端憑證授權類型
- 實作授權碼授權類型
- API 安全性線上課程 (包含 OAuth)
- OAuthV2 政策:提供許多範例,說明如何向授權伺服器提出要求,以及如何設定 OAuthV2 政策。