0

“生成授权码”政策 ( 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&client_id=foo&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 与授权代码以及从该授权代码派生的任何访问令牌相关联。任何帮助将不胜感激。

4

1 回答 1

0

当授权码用于生成访问令牌和刷新令牌时,来自授权码的属性将被转移到新令牌。当使用 OAuthV2 策略的 VerifyAccessToken 操作验证访问令牌时,这些属性将作为流变量提供,并且从刷新令牌生成的任何新访问令牌也具有这些相同的属性。

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

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

于 2013-12-29T22:17:31.623 回答