首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ApiGee OAUTH授权

ApiGee OAUTH授权
EN

Stack Overflow用户
提问于 2014-05-17 11:39:27
回答 1查看 2.9K关注 0票数 2

我是新来的。我需要在代理中做一个标注,从google融合表中获取数据。FT服务需要使用宣誓2.0的安全呼叫。我已经使用自定义代理(没有任何OAUTH策略,并在键值映射中存储令牌、刷新令牌和到期)创建了这个工作流。

此外,我还使用js来计算过期时间,并使用条件标注来刷新令牌。我知道这不是正确的方法,但我仍然不知道如何使用building策略进行调用。:(我很清楚,oauth过程来自谷歌,但不知道我在哪里有存储价值,以及如何配置oauth作为本机方式.

我成功地从github部署了oauth-authcode示例并使其正常工作,但是当我在https://accounts.google.com/o/oauth2/auth上更改默认的目标端点URL并替换client_id时,会得到错误“无效的客户端id : XXXXX.apps.googleusercontent.com. ClientId是无效的”。

据我所知,第一个问题是获得授权代码,我必须打个电话给google,如下所示:

代码语言:javascript
复制
https://accounts.google.com/o/oauth2/auth
?response_type=code
&redirect_uri={URL that obtain access code}
&client_id=XXXXX.apps.googleusercontent.com
&scope=https://www.googleapis.com/auth/fusiontables 
&access_type=offline
&approval_prompt=force
&login_hint=MYEMAIL@gmail.com
&state=ANYSTATE

然后google将授权代码重定向到redirect_uri,如

代码语言:javascript
复制
{redirect_uri}?code=ACCESSCODE&state=ANYSTATE 

我制作了一个代理/oauth20作为面包师,并将其命名为redirect_uri。

如何在此端配置oauth策略以存储此代码?

我创建了产品融合,并添加了API代理'/oauth20‘作为参考资料,我还创建了。

在Developer中,我需要填充什么url作为回调URL?

我必须使用哪个url作为oauth策略的重定向url,以及如何存储我为google使用的客户端id和客户端机密和范围?我不能在开发者应用程序中编辑用户密钥和消费者秘密

我的api代理获得授权代码。

如何将此代码更改为访问令牌?

在我的应用程序中,我写了一篇文章:

代码语言:javascript
复制
https://accounts.google.com/o/oauth2/token 
code={code} 
client_id={ClientID} 
client_secret={ClientSecret} 
redirect_uri=https://vatsenko-test.apigee.net/v1/oauth20/oauth/authorize
grant_type=authorization_code 

然后提取令牌

代码语言:javascript
复制
$.access_token 
$.refresh_token 
$.expires_in

是否有任何方式手动配置oauth流以获取令牌?(我的意思是硬编码client_id、client_secret和代码,用于获取令牌并将其存储到apigee,然后在标注中只使用verifyaccesstoken策略)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-17 18:14:56

你遇到的一些困惑是很自然的。这一点尤其正确,因为您使用的是两个OAuth系统(谷歌和阿皮吉的),而不是单独使用1。尽管如此,你还是可以解决这个问题的--它只需要一些设计上的考虑。

我将采取的方法是在你写问题的时候回答你的问题,但你也可能希望与Apigee一起进行更深入的设计讨论。

我成功地从github部署了oauth-authcode示例并使其正常工作,但是当我在https://accounts.google.com/o/oauth2/auth上更改默认的目标端点URL并替换client_id时,会得到错误“无效的客户端id : XXXXX.apps.googleusercontent.com. ClientId是无效的”。

为了利用谷歌的client_id系统,您需要使用谷歌的OAuth系统中的OAuth。

如何在此端配置oauth策略以存储此代码?

通常,您会使用web服务器应用程序来处理这些代码。如果您想使用API代理进行同样的操作,可以将授权代码作为查询参数(例如,&code=XYZ)传入。您的远地点代理会将代码称为request.queryparameter.code

在Developer中,我需要填充什么url作为回调URL?

Developer中回调URL的URL应该是web服务器应用回调URL。在您的示例中,您表示希望使用Apigee代理,因此您应该使用该代理。当您在redirect_uri上生成授权代码时,此回调URL将需要匹配作为查询参数传递的URL。如果他们不匹配,你会得到一个错误从阿皮吉。正如您在最近的文章中所读到的,出于安全原因,此检查已经到位。

我必须使用哪个url作为oauth策略的重定向url,以及如何存储我为google使用的客户端id和客户端机密和范围?我不能在开发者应用程序中编辑用户密钥和消费者秘密

如上所述,重定向URI需要与您为开发人员应用程序设置的回调URL相同。我建议将谷歌的client_id和client_secret存储在键/值映射中。然后,当您调用Google检索它们的令牌时,您可以从键/值映射中提取这些值,并在标题中使用它们供Google使用。

如何将此代码更改为访问令牌?

让我们退一步,考虑Apigee的auth代码和访问令牌将如何与Google的auth代码和访问令牌相匹配。

对于开发人员应用程序来说,要与Apigee接口,您需要确保Apigee能够理解任何生成的auth代码和访问令牌。为了进一步与谷歌的auth代码授予类型OAuth系统进行接口,您需要将Google的auth代码作为属性存储在Apigee的auth代码中。在生成auth代码时,可以通过<Attributes>字段实现这一点。当您的开发者应用程序与Apigee接口时,开发者应用程序将发送Apigee代码,该代码将包含一个带有Google auth代码的属性。您可以使用getoauthv2info从Apigee代码中提取属性。然后,你可以使用谷歌自己的自动识别代码呼叫谷歌。

当您提交Google的auth代码时,您将收到Google/刷新令牌作为回报。然后,您需要考虑是否要用Google的.或者不是。这是设计上的考虑。

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

或者,如果Google和Apigee令牌不需要匹配,那么您可以将Google的访问令牌和刷新令牌作为属性存储在Apigee的访问令牌中。通过这种方式,当开发人员应用程序与Apigee接口时,必须使用Apigee的访问/刷新令牌(以及client_id和机密)。然后,我们可以通过访问存储的Apigee令牌属性来查找Google的访问令牌。在VerifyAccessToken之后,可以以accesstoken.<custom attribute>的形式访问这些属性。

是否有任何方式手动配置oauth流以获取令牌?(我的意思是硬编码client_id、client_secret和代码,用于获取令牌并将其存储到apigee,然后在标注中只使用verifyaccesstoken策略)

如前所述,键/值映射将在这里帮助您。在调用Google之前,您可以根据需要设置标题信息。正如前面讨论过的,您可以将Google的auth代码作为属性存储在Apigee的auth代码中。

希望这能有所帮助。如果现场会议对您有更好的帮助,请随时联系我们的支持或Scrum。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23710888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档