OAuth授权码上的自定义属性?

时间:2013-12-26 15:00:52

标签: apigee

“生成授权代码”策略(http://apigee.com/docs/gateway-services/api/oauth-flow-variables)的文档表明可以通过声明在授权代码上设置自定义属性。

如何访问这些属性?我的目标是将用户ID与授权代码相关联,以便在交换访问令牌时,可以将用户ID设置为访问令牌的自定义属性。我的GenerateAuthorizationCode策略配置如下:

<!-- language xml -->
<OAuthV2 enabled="true" continueOnError="false" async="false" name="GenerateAuthorizationCode">
    <Operation>GenerateAuthorizationCode</Operation>
    <ExpiresIn>120000</ExpiresIn>
    <Attributes>
        <Attribute name="user_id" ref="request.queryparam.user_id" display="false"/>
    </Attributes>
    <GenerateResponse/>
</OAuthV2>

我的目的是通过调用以下URL来生成代码:/ authorization_code?response_type = code&amp; client_id = foo&amp; user_id = bar。这似乎可以正常工作,因为它生成代码并返回重定向到预期的URL。

但是,我在创建令牌时不知道如何访问此属性。我尝试在令牌端点上配置GetOAuthV2Info策略,如下所示:

<!-- language xml -->
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetAuthorizationCodeAttributes">
    <AuthorizationCode>request.formparam.code</AuthorizationCode>
</GetOAuthV2Info>

希望它能将我的代码属性带入范围。但是这导致了Apigee的一个神秘的500响应:{“fault”:{“faultstring”:“NullPointerException”,“detail”:{“errorcode”:“Internal Server Error”}}}

这是正确的方法吗?我的最终目标是将用户ID与授权代码以及从该授权代码派生的任何访问令牌相关联。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当授权代码用于生成访问令牌和刷新令牌时,授权代码中的属性将传输到新令牌。当使用OAuthV2策略的VerifyAccessToken操作验证访问令牌时,属性可用作流变量,并且从刷新令牌生成的任何新访问令牌也具有这些相同的属性。

GetOAuthV2Info策略还可用于检索与访问令牌关联的属性。

有关在每种情况下生成的流变量的详细信息,请参阅http://apigee.com/docs/gateway-services/api/oauth-flow-variables