【问题标题】:Custom Attributes on an OAuth Authorization Code?OAuth 授权代码上的自定义属性?
【发布时间】:2013-12-26 15:00:52
【问题描述】:

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

【问题讨论】:

    标签: apigee


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!我没有意识到这是自动发生的。
    猜你喜欢
    • 2011-07-01
    • 2012-05-09
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多