首页 文章

APIGEE外部OAuth 2.0授权

提问于
浏览
1

我尝试设置API代理,并使用Google API令牌执行OAuth 2.0身份验证 . 我得到了一个用于验证google令牌的Javascript并且swiched为true,如果令牌无效,则设置flowvariable oauth.externel.authorization.status = true . 结果总是“errorcode”:“oauth.v2.InvalidAccessToken” .

问题是,如何设置流变量权限以跳过client_id的验证和内部密钥存储的秘密?或者我如何将tokenvalidation网址设置为https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

编辑:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-v20-1">
<DisplayName>OAuth v2.0 1</DisplayName>
<FaultRules/>
<Properties/>
<Attributes/>
<ExternalAuthorization>true</ExternalAuthorization>

<Operation>VerifyAccessToken</Operation>
<SupportedGrantTypes/>
<GenerateResponse enabled="true"/>
<Tokens/></OAuthV2>

谢谢 .

1 回答

  • 2

    问题是,如何设置流变量权限以跳过client_id的验证和内部密钥存储的秘密?

    <ExternalAuthorization> 用于支持外部授权,它是可选的 . 如果已启用,则根据实际外部授权状态,预期将流量变量名称_1459009设置为true或false .

    如果 <ExternalAuthorization> 设置为true且 oauth_external_authorization_status flow变量设置为true,则不会验证client_secret(但仍会在请求中预期client_id并将进行验证) . 您需要将client_id作为 x-www-form-urlencoded 发送 . 这是在client_id中发送的默认位置 .

    退一步,您可能希望将Apigee的所有标记替换为Google的标记 . 我推荐这种方法,因为通过Apigee识别的标记,您可以利用Apigee的其余对象/特征 . 这些对象/功能包括开发人员,应用程序(包括client_id / secret),自定义属性和Analytics .

    如果要替换Apigee 's access/refresh token, you can leverage Apigee' s <ExternalAccessToken><ExternalRefreshToken> 字段 . 在Apigee上使用这些字段生成访问令牌时,您可以确保Apigee识别出Google生成的访问令牌 .

    我在相关问题here上发布了一个答案,您可能会觉得有帮助 .

相关问题