我试图建立一个API代理,并使用Google API令牌进行OAuth 2.0验证。我得到了一个用于验证谷歌令牌的Javascript,并切换为true,如果令牌有效,则设置流变量oauth.externel.authorification.status=true。结果总是"errorcode":"oauth.v2.InvalidAccessToken"。
问题是,如何设置flow Variable权限以跳过对内部密钥存储的client_id和secret的验证?或者我如何将tokenvalidation url设置为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>
谢谢。
问题是,如何设置流量变量以跳过是否根据内部密钥存储从client_id和secret进行验证?
<ExternalAuthorization>
用于支持外部授权,是可选的。如果已启用,则流变量的名称oauth_external_authorization_status
应根据实际的外部授权状态设置为true或false。
如果<ExternalAuthorization>
设置为true,oauth_external_authorization_status
流变量设置为true时,将不会验证client_secret(但client_id仍然是请求中预期的,并且将被验证(。您需要将client_id作为x-www-form-urlencoded
发送。这是要在client_id中发送的默认位置。
退一步说,你可能希望用Apigee的代币取代谷歌的代币。我推荐这种方法,因为通过Apigee识别的令牌,您可以利用Apigee的其余对象/功能。这些对象/功能包括开发人员、应用程序(包括client_id/secret(、自定义属性和分析。
如果您想替换Apigee的访问/刷新令牌,您可以利用Apegee的<ExternalAccessToken>
和<ExternalRefreshToken>
字段。当在Apigee上使用这些字段生成访问令牌时,您可以确保Apigee识别谷歌生产的相同访问令牌。
我在这里发布了一个相关问题的答案,你可能会觉得有帮助。