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>

/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 に答える