ApiGee OAUTH授权

ApiGee OAUTH授权,oauth,proxy,apigee,Oauth,Proxy,Apigee,我是阿皮吉的新手。我需要在我的代理中进行调出,以便从google fusion表中获取数据。FT服务要求使用誓言2.0进行安全呼叫。 我已经使用自定义代理创建了此工作流(没有任何OAUTH策略,并且在键值映射中存储令牌、刷新令牌和到期) 我还制作了js来计算过期时间和条件调用来刷新令牌。 我知道这不是正确的方法,但我仍然不知道如何使用building Oauth策略进行此调用:( 我很清楚google端的oauth进程,但无法理解我的存储值在哪里,以及如何将oauth配置为本机方式 我成功地从g

我是阿皮吉的新手。我需要在我的代理中进行调出,以便从google fusion表中获取数据。FT服务要求使用誓言2.0进行安全呼叫。 我已经使用自定义代理创建了此工作流(没有任何OAUTH策略,并且在键值映射中存储令牌、刷新令牌和到期)

我还制作了js来计算过期时间和条件调用来刷新令牌。 我知道这不是正确的方法,但我仍然不知道如何使用building Oauth策略进行此调用:( 我很清楚google端的oauth进程,但无法理解我的存储值在哪里,以及如何将oauth配置为本机方式

我成功地从github部署了oauth authcode示例并使其工作,但当我在上更改默认目标端点URL并替换我的客户端id时,我得到错误“无效的客户端id:XXXXX.apps.googleusercontent.com.ClientId无效”

据我所知,第一个问题是获取授权码 我必须给google oauth打个电话,比如:

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}?code=ACCESSCODE&state=ANYSTATE 
我将proxy/oauth20作为一个backkend,并将其作为重定向uri

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

我创建产品融合并添加API代理'/oauth20'作为资源 我还创建了开发者应用程序融合

我必须在开发者应用程序中填充哪个url作为回调url

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

我的api代理获得授权代码

如何更改此代码以访问令牌

在我的应用程序中,我发布了以下帖子:

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 
然后提取令牌

$.access_token 
$.refresh_token 
$.expires_in
有没有办法手动配置oauth流以获取令牌?
(我的意思是硬编码客户端id、客户端密码和获取令牌并将其存储到apigee的代码,然后在callout中只执行verifyaccesstoken策略)

您遇到的一些困惑是自然的。这尤其正确,因为您使用的是两个OAuth系统(Google和apigee的)一起使用,而不是单独使用1。也就是说,您仍然可以解决这个问题——它只需要一些设计考虑

我将采用的方法是在您编写问题时回答您的问题,但您也可能希望与Apigee合作,进行更深入的设计讨论

我成功地从github部署了oauth authcode示例并使其工作,但当我在上更改默认目标端点URL并替换我的客户端id时,我得到错误“无效的客户端id:XXXXX.apps.googleusercontent.com.ClientId无效”

您需要使用来自Google的OAuth系统的客户端id,以便利用Google的OAuth系统

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

通常,您会使用web服务器应用程序来处理此代码。如果您想使用API代理来处理此代码,您可以将授权代码作为查询参数传入(例如,
&code=XYZ
)。您的Apigee代理将代码称为
请求.queryparameter.code

我必须在开发者应用程序中填充哪个url作为回调url

开发者应用程序中回调URL的URL应为web服务器应用程序回调URL。在您的情况下,您声明要使用Apigee API代理,因此应使用该代理。在Apigee上生成授权代码时,此回调URL需要与作为重定向uri查询参数传递的URL相匹配。如果它们不匹配h、 您将从Apigee收到一个错误。正如您可能在最近的文章中所读到的,出于安全原因,此检查已经到位

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

如上所述,重定向URI将需要与您为开发者应用程序设置的回调URL相同。我建议将Google的客户端id和客户端机密存储在a中。然后,当您呼叫Google检索其令牌时,您可以从键/值映射中提取这些值,并将其用于Google的头中,以便使用我

如何更改此代码以访问令牌

让我们后退一步,考虑Apigee的Authcode和Access令牌将如何适应谷歌的Authcode和访问令牌。

要使开发者应用程序与Apigee交互,您需要确保Apigee能够理解任何生成的身份验证代码并访问令牌。要使Apigee进一步与Google的身份验证代码授权类型OAuth系统交互,您需要将Google的身份验证代码作为属性存储在Apigee的身份验证代码中。您可以通过
从Apigee认证代码中提取属性。然后,您可以使用谷歌自己的认证代码调用谷歌,谷歌可以识别这些属性

当您提交谷歌的Authcode时,您将收到谷歌Access /刷新令牌作为回报。然后,您将考虑是否要用谷歌的Apgee替换Apigee的访问/刷新令牌。这是一个设计考虑。 如果您想替换Apigee的访问/刷新令牌,您可以利用Apigee的

功能。在Apigee上使用这些字段生成访问令牌时,您可以确保Apigee识别Google生成的相同访问令牌

或者,如果Google和Apigee令牌不需要匹配,那么您可以将Google的访问令牌和刷新令牌作为属性存储在Apigee的访问令牌中。这样,当开发者应用程序与Apigee交互时,它是Apigee的访问/刷新令牌(以及客户端id和机密)必须使用它。然后,我们可以通过访问您存储的Apigee访问令牌属性来查找Google的访问令牌。在验证AccessToken之后,您可以通过
acces访问这些属性