本页面适用于 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 范围。
授权
您必须以基本身份验证标头(Base64 编码)或形式参数 client_id
和 client_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 - 随响应一起发回的字符串。通常用于防止跨网站请求伪造攻击。
- scope - 允许您过滤可与生成的令牌结合使用的 API 产品列表。要了解范围的详细信息,请参阅使用 OAuth2 范围。
授权
您必须以基本身份验证标头(Base64 编码)或形式参数 client_id
和 client_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 - 随响应一起发回的字符串。通常用于防止跨网站请求伪造攻击。
- scope - 允许您过滤可与生成的令牌结合使用的 API 产品列表。要了解范围的详细信息,请参阅使用 OAuth2 范围。
授权
您必须以基本身份验证标头(Base64 编码)或形式参数 client_id
和 client_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 - 随响应一起发回的字符串。通常用于防止跨网站请求伪造攻击。
- 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
获取授权代码
在授权代码授权类型流中,必须提供授权代码才能获取访问令牌。请参阅使用授权代码授权类型。另请参阅什么是 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 范围。
授权
不需要授权标头,但必须在请求中提供已注册客户端应用的客户端 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 范围。
授权
不需要授权标头,但必须在请求中提供已注册客户端应用的客户端 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 规范也推荐以 HTTP-Basic 身份验证标头的形式传递 client_id 和 client_secret 值,如 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 政策的许多示例。