【问题标题】:APIGEE external OAuth 2.0 AuthorizationAPIGEE 外部 OAuth 2.0 授权
【发布时间】:2014-07-20 04:48:56
【问题描述】:

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

问题是,如何设置流变量权限以跳过对内部密钥存储的 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>

谢谢。

【问题讨论】:

  • 您能否提供您用于进行身份验证的实际代码?这里没什么可说的。
  • 我在 APIGEE API 上苦苦挣扎,如果我在没有 APIGEE 代理的情况下尝试它,一切正常。 Apigee 政策是用 XML 编写的,代码不多,但我会发布它只是一个 sek。
  • 您是否尝试使用 Apigee 的 Oauth 政策验证 Google 的访问令牌(而不是 Apigee 铸造新令牌)?
  • 是的,有点...我的问题是,如果我使用 javascript Apigee 继续页面,如果令牌有效与否。只是抛出一个异常而不捕获它可能会中断该过程,但这是一个丑陋的解决方案。所以我找到了github.com/DinoChiesa/dpchiesa-elisp/blob/master/apigee.el 第 667 行,他解释了如何通过将 ExternalAuthorization 设置为 true 来使用字段变量触发转发

标签: api oauth-2.0 google-api apigee


【解决方案1】:

问题是,如何设置流变量右跳过 从 client_id 和 secret 对内部密钥库进行验证?

&lt;ExternalAuthorization&gt;用于支持外部授权,可选。 如果启用,则应根据实际的外部授权状态,将名称为 oauth_external_authorization_status 的流变量设置为 true 或 false。

如果&lt;ExternalAuthorization&gt; 设置为true 并且oauth_external_authorization_status 流变量设置为true,client_secret 将不会被验证(但是client_id 仍然在请求中是预期的并且将被验证)。您需要将 client_id 作为x-www-form-urlencoded 发送。这是在 client_id 中发送的默认位置。

退后一步,您可能希望将 Google 的令牌全部替换为 Apigee 的。我推荐这种方法,因为通过 Apigee 可识别的令牌,您可以利用 Apigee 的其余对象/功能。这些对象/功能包括开发人员、应用程序(包括 client_id/secret)、自定义属性和分析。

如果您想替换 Apigee 的访问/刷新令牌,可以利用 Apigee 的 &lt;ExternalAccessToken&gt;&lt;ExternalRefreshToken&gt; 字段。在 Apigee 上使用这些字段生成访问令牌时,您可以确保 Apigee 识别出 Google 生成的相同访问令牌。

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

【讨论】:

  • APIGEE 如何期望流变量?在 URL 中还是有另一个机会来传递变量?
  • 不管你想提供什么:queryparam、hardcoded、header等
  • 另外,您需要将 client_id 作为 x-www-form-urlencoded 发送。这是在 client_id 中发送的默认位置
猜你喜欢
  • 2014-07-05
  • 2012-06-19
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 2014-05-05
  • 2021-05-08
相关资源
最近更新 更多