查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
本主題將說明如何要求存取權杖和授權碼 OAuth 2.0 端點,以及為每個支援的授予項目設定政策 類型。
程式碼範例
為方便起見,本主題討論的政策和端點請見: oauth-doc-examples 專案中的 GitHub 找到相關資訊您可以部署程式碼範例,並嘗試 詳列這個主題中的要求範例詳情請參閱 README 專案。
要求存取權杖: 授權碼授權類型
本節說明如何使用授權碼授權類型要求存取權杖 流程如需 OAuth 2.0 授權類型的簡介,請參閱 OAuth 2.0 簡介。
範例 要求
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'code=I9dMGHAN&grant_type=authorization_code&redirect_uri=http://example-callback.com'
必要 參數
根據預設,這些參數必須是 x-www-form-urlencoded
,且必須在
要求主體 (如上例所示);不過,您可以將這個預設設定
請設定 <GrantType>
、<Code>
和
附加至這個 OAuthV2 政策中的 <RedirectUri>
個元素
/accesstoken
端點。詳情請參閱 OAuthV2 政策。
- grant_type:必須設為值
authorization_code
。 - code:來自
/authorize
的授權碼 端點 (或是任何您命名的端點)。在授權中要求存取權杖 代碼授權類型流程,您必須先取得授權碼。請參閱下方的「索取授權碼」。另請參閱導入 授權碼授權類型 - redirect_uri - 如果
redirect_uri
參數包含在先前的授權碼要求中。如果redirect_uri
參數未包含在授權碼要求中,且 如未提供這個參數,這項政策就會使用 是開發人員應用程式註冊時提供的 ID。
選用 參數
- state - 將與回應一起傳送的字串。常用 以防範跨網站要求的偽造攻擊
- scope - 可讓您篩選要使用的 API 產品清單, 可以使用的如要進一步瞭解範圍,請參閱使用 OAuth2 範圍。
驗證
您必須以「基本驗證」標頭的形式傳遞用戶端 ID 和用戶端密鑰
(Base64 編碼) 或表單參數 client_id
和 client_secret
。個人中心
從已註冊的開發人員應用程式中取得這些值。另請參閱基本編碼
驗證憑證」。
端點範例
以下是產生存取權杖的端點設定範例。該指令碼會執行 GenerateAccessToken 政策,必須設為支援 License_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 授權類型的簡介,請參閱 OAuth 2.0 簡介。
範例 要求
如要瞭解如何在下列呼叫中編碼基本驗證標頭,請參閱 「編碼基本驗證憑證」。
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHoAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
必要 參數
根據預設,必要的 Grant_type 參數必須是 x-www-form-urlencoded
和
所指定的內容 (如上方範例所示);不過,您可以
即可預設值,方法是在 OAuthV2 政策中設定 <GrantType>
元素,
已附加至這個 /accesstoken
端點。舉例來說,您可以選擇將
參數。詳情請參閱 OAuthV2 政策。
- grant_type:必須設為值
client_credentials
。
選用 參數
- 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 授權類型簡介,請參閱 OAuth 2.0 簡介。
密碼授權的詳細說明,包括 4 分鐘影片 說明如何 請參閱實作密碼 授權類型。
範例 要求
如要瞭解如何在下列呼叫中編碼基本驗證標頭,請參閱 「編碼基本驗證憑證」。
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST https://docs-test.apigee.net/oauth/token \ -d 'grant_type=password&username=the-user-name&password=the-users-password'
必要 參數
根據預設,這些參數必須是 x-www-form-urlencoded
,且必須在
要求主體 (如上例所示);不過,您可以將這個預設設定
請設定 <GrantType>
、<Username>
和
附加至這個 OAuthV2 政策中的 <Password>
個元素
/token
端點。詳情請參閱 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 授權類型簡介,請參閱 OAuth 2.0 簡介。
範例 要求
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'https://docs-test.apigee.net/oauth/implicit?response_type=token&client_id=ABC123&redirect_uri=http://callback-example.com'
必要 參數
根據預設,這些參數必須為查詢參數 (如上方範例所示);不過
您可以設定 <ResponseType>
、
OAuthV2 中的 <ClientId>
和 <RedirectUri>
元素
附加至這個 /token
端點的政策。詳情請參閱 OAuthV2 政策。
系統通常會使用 LDAP 服務,透過憑證存放區驗證使用者憑證 呼叫或 JavaScript 政策。
- response_type - 必須設為
token
值。 - client_id - 已註冊開發人員應用程式的用戶端 ID。
- redirect_uri:如果不是回呼 URI,則此為必要參數 。如果在用戶端提供回呼網址 註冊時,這個值會和這個值進行比較,且必須完全相符。
選用 參數
- state - 將與回應一起傳送的字串。常用 以防範跨網站要求的偽造攻擊
- scope - 可讓您篩選要使用的 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 定位重新導向
。重新導向指向 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
申請授權碼
如果您使用授權碼授權類型流程,就需要先取得授權 才能要求存取權杖
要求範例
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'http://myorg-test.apigee.net/oauth/authorize?client_id={consumer_key}&response_type=code'
當中附加 OAuthV2 GenerateAuthorizationCode 政策
/oauth/authorize
Proxy 端點 (參閱下方範例端點)。
必要 參數
根據預設,這些參數必須為查詢參數 (如上方範例所示);不過
您可以設定 <ResponseType>
、
OAuthV2 中的 <ClientId>
和 <RedirectUri>
元素
附加至這個 /authorize
端點的政策。詳情請參閱 OAuthV2 政策。
- response_type - 必須設為
code
值。 - client_id - 已註冊開發人員應用程式的用戶端 ID。
選用 參數
- redirect_uri - 如果指定 註冊的用戶端應用程式,此為選用參數。否則就必須是必填欄位。回呼 是 Edge 傳送新壓縮驗證碼的網址。另請參閱註冊應用程式及管理 API 金鑰。
- state - 將與回應一起傳送的字串。常用 以防範跨網站要求的偽造攻擊
- scope - 可讓您篩選要使用的 API 產品清單, 可以使用的如要進一步瞭解範圍,請參閱使用 OAuth2 範圍。
驗證
不需要基本驗證,但已註冊的用戶端應用程式的用戶端 ID 必須 。
端點範例
以下是產生授權碼的端點設定範例:
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <!-- ExpiresIn, in milliseconds. The ref is optional. The explicitly specified value is the default, when the variable reference cannot be resolved. 60000 = 1 minute 120000 = 2 minutes --> <ExpiresIn>60000</ExpiresIn> <GenerateResponse enabled="true"/> </OAuthV2>
範例政策
這是基本的 GenerateAuthorizationCode 政策。選用設定的相關資訊 您可利用這項政策設定的元素,請參閱 OAuthV2 政策。
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
退貨
如果啟用 <GenerateResponse>
,政策會傳回 ?code
方法是授權給 redirect_uri
(回呼 URI) 位置的查詢參數
請見附件。以 302 瀏覽器重新導向傳送,並附上
回應。例如:?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://myorg-test.apigee.net/my_oauth_endpoint/refresh_accesstoken \ -d 'grant_type=refresh_token&refresh_token=my-refresh-token'
必要參數
- grant_type - 必須設為
refresh_token
值。 - refresh_token - 與存取權杖相關聯的更新權杖 想要續訂。
根據預設,政策會尋找這些做為 x-www-form-urlencoded
參數
,如上方範例所示。設定替代位置
針對這些輸入內容,您可以使用 <GrantType>
和
OAuthV2 政策中的 <RefreshToken>
個元素。詳情請參閱 OAuthV2 政策。
選用參數
- state - 將與回應一起傳送的字串。常用 以防範跨網站要求的偽造攻擊
- scope - 可讓您篩選要使用的 API 產品清單, 可以使用的如要進一步瞭解範圍,請參閱使用 OAuth2 範圍。
驗證
- client_id
- client_secret
您必須以「基本驗證」標頭的形式傳遞用戶端 ID 和用戶端密鑰
(Base64 編碼) 或表單參數 client_id
和 client_secret
。詳情請見
「編碼基本驗證憑證」。
重新整理存取權杖時,系統不會重新驗證使用者,
以下是使用更新權杖產生存取權杖的端點設定範例。 這會執行 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 驗證標頭,如 IETF RFC 2617 中所述。如要這麼做,您必須 使用 Base64 編碼,將兩個值彙整在一起的結果,並以冒號分隔。
在虛擬程式碼中:
result = Base64Encode(concat('ns4fQc14Zg4hKFCNaSzArVuwszX95X', ':', 'ZIjFyTsNgQNyxI'))
在這個範例中,ns4fQc14Zg4hKFCNaSzArVuwszX95X
是 client_id
ZIjFyTsNgQNyxI
是用戶端密鑰。
無論您使用哪種程式設計語言計算 Base64 編碼的值,
指定用戶端憑證的 base64 編碼結果如下:
bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==
接著,您可以按照下列步驟提出權杖要求:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
如果您使用curl
-u 選項。下列項目等同於上述:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -u 'ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
其他程式設計環境可能也有類似的捷徑,可自動產生 Base64 編碼標頭。
資料庫中的雜湊權杖
在資料庫發生安全性漏洞時,保護 OAuth 存取權並更新權杖,您可以 在 Edge 機構中啟用自動權杖雜湊功能。啟用這項功能後,Edge 會自動為新產生的 OAuth 存取權和更新權杖建立雜湊版本 指定的演算法(大量雜湊現有符記的資訊請見下方)。 未經雜湊處理的權杖會用於 API 呼叫,Edge 會根據 資料庫
下列機構層級屬性可控制 OAuth 權杖雜湊。
features.isOAuthTokenHashingEnabled = true features.OAuthTokenHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN
若您已有雜湊權杖,且想保留這些權杖直到過期為止,請將 下列屬性,而雜湊演算法與現有屬性相符 演算法 (例如 SHA1 先前的 Edge 預設值)。如果權杖未經雜湊處理,請使用 PLAIN。
features.isOAuthTokenFallbackHashingEnabled = true features.OAuthTokenFallbackHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN
如果您是 Edge 雲端客戶,請聯絡 Apigee Edge 支援以進行設定 並視需求大量雜湊處理現有符記。
相關主題
- 實作 用戶端憑證授權類型
- 導入 授權碼授權類型
- API 安全線上課程 (包括 OAuth)
- OAuthV2 政策 -- 有 顯示如何向授權伺服器發出要求,以及如何設定 OAuthV2 政策。