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