我正在创建自己的OAuth 2.0端点,并使用Apigee的OAuth 2.0策略来生成和管理授权码和令牌。 当OAuth 2.0策略失败时(http://apigee.com/docs/gateway-services/api/oauth-error-code-reference),该文档指定了所有可能的错误代码和错误描述,但它没有说明哪些流变量将包含相应的错误代码和错误说明。 http://apigee.com/docs/api-services/api/oauth-flow-variables上的文档也无济于事......它只是解释了成功上设置的流量变量。
我不想在OAuth策略中使用GenerateResponse
标记,因此我需要在OAuth策略失败时访问错误代码和错误说明。
OAuth策略失败时设置了哪些变量? 如何知道OAuth策略失败了?
到目前为止,我知道变量fault.name
似乎有错误代码,但错误描述不在error.message
变量中。
示例政策:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-Exchange-Code-with-Token">
<DisplayName>OAuth Exchange Code with Token</DisplayName>
<Operation>GenerateAccessToken</Operation>
<!-- This is in millseconds, so expire in an hour -->
<ExpiresIn>3600000</ExpiresIn>
<ReuseRefreshToken>false</ReuseRefreshToken>
<RefreshTokenExpiresIn>3600000</RefreshTokenExpiresIn>
<SupportedGrantTypes>
<GrantType>authorization_code</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="false"/>
</OAuthV2>
如果上述策略失败,由于<GenerateResponse enabled="false"/>
被禁用,我希望自己在<FaultRules>
中生成一个响应并访问实际的错误描述,例如“需要客户端凭据”。但是没有流变量来访问错误描述。
答案 0 :(得分:1)
OAuth策略,如果使用属性continueOnError =&#34; false&#34;设置,将在发生错误时中止处理并跳转到FaultRules。
使用以下OAuthV2策略验证令牌(注意GenerateResponse为false且continueOnError为false):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 async="false" continueOnError="false" enabled="true" name="VerifyToken">
<DisplayName>VerifyToken</DisplayName>
<Attributes/>
<ExternalAuthorization>false</ExternalAuthorization>
<Operation>VerifyAccessToken</Operation>
<SupportedGrantTypes/>
<GenerateResponse enabled="false"/>
<Tokens/>
</OAuthV2>
当没有出现访问令牌时,处理跳转到FaultRules。在FaultRule中,我能够访问以下变量:
fault.name = "InvalidAccessToken"
fault.category = "Step"
fault.subcategory = "Execution"
error.state = PROXY_REQ_FLOW
error.content = {"fault":{"faultstring":"Invalid access token","detail":{"errorcode":"oauth.v2.InvalidAccessToken"}}}
因此,即使GenerateResponse为false,您也可以使用JSONPath提取$.fault.faultstring
和$.fault.detail.errorcode
。