ApiGee OAUTH 授权

2024-06-20

我是 Apigee 的新手。我需要在代理中进行标注以从谷歌融合表中获取数据。 FT 服务要求使用誓言 2.0 进行安全呼叫。 我已经使用自定义代理创建了此工作流程(没有任何 OAUTH 策略,并在键值映射中存储令牌、刷新令牌和过期时间)

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

我成功地从 github 部署了 oauth-authcode 示例并让它工作,但是当我更改默认目标端点 URL 时https://accounts.google.com/o/oauth2/auth https://accounts.google.com/o/oauth2/auth并替换我的 client_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
&[email protected] /cdn-cgi/l/email-protection
&state=ANYSTATE

然后谷歌将授权代码重定向到redirect_uri

{redirect_uri}?code=ACCESSCODE&state=ANYSTATE 

好吧,我制作了一个代理/oauth20作为后端并将其指向redirect_uri。

如何在这一端配置 oauth 策略来存储此代码?

我创建产品 Fusion 并将 API 代理“/oauth20”添加为资源 我还创建了 Developer App Fusion。

我必须在开发者应用程序中填充什么 URL 作为回调 URL?

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

那么我的api代理获取授权码。

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

在我的应用程序中,我进行 POST :

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 流来获取令牌吗? (我的意思是硬编码 client_id、client_secret 以及用于获取令牌并将其存储到 apigee 的代码,然后在标注中仅进行 verifyaccesstoken 策略)


您遇到的一些困惑是很自然的。尤其如此,因为您同时使用 2 个 OAuth 系统(Google 和 Apigee 的),而不是单独使用 1 个。也就是说,您仍然可以解决这个问题——只需要一些设计考虑。

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

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

您需要使用 Google OAuth 系统中的 client_id 才能利用 Google 的 OAuth 系统。

如何在这一端配置 oauth 策略来存储此代码?

通常,您会使用 Web 服务器应用程序来处理此代码。如果您想使用 API 代理来执行相同的操作,您可以将授权代码作为查询参数传递(例如,&code=XYZ)。您的 Apigee 代理会将代码引用为request.queryparameter.code.

我必须在开发者应用程序中填充什么 URL 作为回调 URL?

开发者应用程序中回调 URL 的 URL 应为 Web 服务器应用程序回调 URL。在您的情况下,您声明您想要使用 Apigee API 代理,因此您应该使用它。此回调网址需要与您在 Apigee 上生成授权代码时作为 redirect_uri 查询参数传递的网址相匹配。如果它们不匹配,您将从 Apigee 收到错误。正如您可能在最近的文章中读到的那样,出于安全原因进行了此检查。

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

如上所述,重定向 URI 需要与您为开发者应用程序设置的回调 URL 相同。我建议将 Google 的 client_id 和 client_secret 存储在键/值映射 http://apigee.com/docs/api-services/content/persist-data-using-keyvaluemap。然后,当您调用 Google 检索其令牌时,您可以从键/值映射中提取这些值,并在标头中使用它们以供 Google 使用。

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

让我们退后一步,考虑一下 Apigee 的身份验证代码和访问令牌如何适应 Google 的身份验证代码和访问令牌。

For the 开发者应用程序要与 Apigee 交互,您需要确保 Apigee 可以理解任何生成的身份验证代码和访问令牌。为了Apigee为了进一步与 Google 的身份验证代码授予类型 OAuth 系统交互,您需要将 Google 的身份验证代码作为属性存储在 Apigee 的身份验证代码中。您可以通过以下方式实现这一目标<Attributes>生成授权码时的字段。当您的开发者应用与 Apigee 交互时,开发者应用将发送 Apigee 身份验证代码,然后该代码将包含带有 Google 身份验证代码的属性。您可以使用获取authv2信息 http://apigee.com/docs/api-services/content/retrieve-token-attributes-using-getoauthv2info-0从 Apigee 身份验证代码中提取属性。然后您可以使用 Google 自己的授权码调用 Googlethey认出。

当您提交 Google 的授权代码时,您将收到 Google 访问/刷新令牌作为回报。然后,您需要考虑是否要将 Apigee 的访问/刷新令牌替换为 Google 的...。这是一个design考虑。

如果您想替换 Apigee 的访问/刷新令牌,您可以利用 Apigee 的<ExternalAccessToken> and <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 的身份验证代码作为属性存储在 Apigee 的身份验证代码中。

希望这可以帮助。如果现场会议可以为您提供更合适的帮助,请随时联系我们的支持人员或 Scrum Master。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ApiGee OAUTH 授权 的相关文章

  • Google API OAuth 2.0 Titanium:缺少必需的参数:response_type

    我正在尝试在 Titanium 应用程序中从 Google 获取 access token 来访问 Google API 我已经注册了一个Android Oauth2 0客户端谷歌 API 控制台 https www rfc editor
  • Netsuite - REST API - 使用基于令牌的身份验证(TBA)进行查询 - (在 Python 中)

    这是使用 Netsuite 基于令牌的身份验证 TBA REST Web 服务成功调用的后续操作 我想获得一些有关如何执行查询的指导 我应该阅读这样的记录 请参见屏幕截图 如何执行特定查询 通过记录列表和特定记录的表 https gist
  • 在 Windows 中使用脚本添加代理设置例外

    我使用的是 Windows 7 并且有一个在启动时初始化的代理配置 每次重新启动电脑时 我都必须重新打开代理设置并手动添加新的代理例外 IP 地址 例如每次重新启动时 www google com www yahoo com www fac
  • 调用 Web 服务时“请求失败,响应为空”

    从 aspx 页面调用服务器中托管的 Web 服务时 收到类似 请求失败 响应为空 的错误 我的页面中的代码 try HttpWebRequest request1 HttpWebRequest WebRequest Create http
  • 将 Google Assistant 与 Firebase Auth 关联

    我正在尝试使用 DialogFlow Api AI 和 Firebase Auth 连接 Google Assistant 应用程序 我的应用程序使用 Firebase Auth 来维护用户帐户和实时数据库来存储数据 我希望能够通过 Goo
  • 无法在 $.ajax 请求上设置 HTTP 主机标头

    之前已经以不同的方式讨论过这个主题 但我还没有找到适合我的解决方案 我正在使用jquery 1 7 1 我有一个 REST 风格的 Web 服务 可以返回 JSON 和 XML 但对于这个项目 我需要使用 XML 端点 为了绕过跨域限制 我
  • Apache 和 Tomcat:ProxyPass 和 ProxyPassReverse

    我在配置 Apache 和 Tomcat 时遇到问题 情况如下 我有一个 Apache Web 服务器 正在正常运行和工作 我只需输入以下内容即可访问该服务器 http localhost 另外 在这个主机中 我有一个 Tomcat 正在运
  • 通过代理从java发送电子邮件

    我使用 Java Mail API 来发送和接收电子邮件 现在我做这个项目的地方有一个代理服务器 我可以知道如何通过代理服务器从java发送电子邮件吗 请参阅此处的常见问题解答 http www oracle com technetwork
  • 仅为我自己的移动应用程序创建 API。我需要 OAuth 吗?

    我即将创建移动应用程序 iOS Android 等 来支持现有的 Web 应用程序 现在正在考虑如何从我的 Web 到我们的移动应用程序提供安全的 API ASP Net Web API OAuth 似乎是最好的方法 据我了解 它旨在支持针
  • node.js http.request 事件流 - 我的 END 事件去了哪里?

    我正在制定一个狡猾的计划 其中涉及使用 node js 作为另一个服务前面的代理服务器 简而言之 将传入请求分派到静态文件 如果存在 否则 将请求分派给另一个服务 我已经掌握了基础知识 但现在尝试使用 Sencha 来完成整个工作Conne
  • 如何使用 Boost 在 C++ 中制作代理服务器 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在制作一个 Web 应用程序模糊
  • Facebook OAuth 登录停止工作

    在我的网站中 我使用 oauth 通过 google twitter 和 facebook 登录 24 小时后 我注意到 Facebook 登录不再有效 当我尝试登录时收到以下错误消息 无法加载 URL 此 URL 的域不包含在应用程序的域
  • 身份验证中的随机数使用

    在基于摘要的身份验证中 随机数由服务器生成 然而 在基于 OAuth 的身份验证中 随机数是由客户端生成的 我想知道是否有人知道差异的原因 随机数用于使请求唯一 在没有随机数的身份验证方案中 恶意客户端可以生成一次请求并重放多次 即使计算成
  • 事件链/原始对象的代理

    我有一个从上下文绑定对象继承的类 类在某些属性上具有属性 当某些属性发生改变时 PostProcess IMessage msg IMessage msgReturn 引发一个事件 并从该事件中再次触发具有相同属性的新属性 第二次改变也应该
  • 使用GoogleAuthUtil时如何获取refreshToken

    我在用着GoogleAuthUtil in Google Play Services在安卓上 打电话后GoogleAuthUtil getToken context userName scope 我得到了这样的令牌 ya29 wQBWzta
  • 但说真的...... ASP.NET WebAPI 实现示例(包括 OAuth)

    我真的对 WCF 示例不感兴趣 我发现的 DotNetOpenAuth 实现也是不完整的 https github com DavidChristiansen DotNetOpenAuth WebAPI 40 or 假设WCF https
  • OAuth2 - 无需用户交互即可授权

    因此 我尝试通过外部应用程序的 API 访问我自己的数据 我只需要访问我自己的数据 不尝试从我的任何用户帐户接收数据 因此他们不需要授权任何内容 显然我需要避免任何重定向 随着我对 OAuth 的研究越多 这似乎是标准流程 该过程被击中 a
  • WSO2 ESB - 代理参数的动态值(传输)

    我需要能够为代理参数指定动态值 实际上 我必须使用完整的 URL 指定每个参数 例如
  • 从 Google/Facebook 帐户重新验证用户身份

    因此 我需要创建一个 REST API 来为 IOS 应用程序提供功能 我们允许用户仅使用普通帐户或使用脸书 谷歌登录 我最近一直在阅读 OAuth 我想我了解在我的情况下如何使用 OAuth 的过程 当用户使用脸书 谷歌登录 在我的应用程
  • HTTP KeepAlive 连接已被服务器关闭,但客户端同时发送了请求

    场景如下 有一个 http 反向代理 它有一个与应用程序服务器的持久连接池 它已收到客户端的请求 并在检查连接打开后向后端发出相同的请求 同时 服务器在收到请求之前关闭连接 代理失败 从后端读取错误 错误被发送到客户端 应如何处理这种竞争条

随机推荐

  • 使用 javax.sound.midi 接收 MIDI 输入

    我想要一个程序 当它获得 MIDI 输入时可以做一些事情 例如 当我单击控制器上的按钮 1 时 它应该打印 您单击了 btn 1 当我单击按钮 2 时 它应该打印 您单击了 btn 2 我尝试使用 javax sound midi 库 但论
  • 如何在 64 位中构建 Boost 1.64?

    我运行的是 Windows 10 并在我的笔记本电脑上安装了 Visual Studio 2017 Community Edition 我有一些旧程序在 64 位 Boost 1 62 0 的 VS 2015 中编译得很好 由于一些非常奇怪
  • SWT 表:如何设置/获取“焦点”行

    On Windows and Linux when holding down the Ctrl key one can move up and down using the caret keys without changing the s
  • 使用 Spring AOP 记录方法条目[重复]

    这个问题在这里已经有答案了 任何人都知道如何在跟踪级别使用 Spring AOP 和 log4j 记录方法条目 包括参数值 并退出 它应该能够记录多个包中的类 您可以使用 大约 用于此类目的的方面 Component Aspect Orde
  • 图像处理以提高 tesseract OCR 准确性

    我一直在使用 tesseract 将文档转换为文本 文档的质量参差不齐 我正在寻找有关哪种图像处理可以改善结果的提示 我注意到高度像素化的文本 例如由传真机生成的文本 对于超正方体来说尤其难以处理 大概所有这些字符的锯齿状边缘都会混淆形状识
  • 不使用 BuildContext 预加载图像

    有没有办法在函数中加载 Flutter 中的图像而无需访问 BuildContext Flutter 可以预加载图像precacheImage 需要BuildContext 使用起来不方便 我想加载图像initState StatefulW
  • PhoneGap for Windows Phone - 文件扩展名“.js”没有脚本引擎

    我使用 Microsoft Visual Studio 创建了新项目 但出现编译错误 如下所示 文件扩展名 js 没有脚本引擎 命令 CScript c users raja documents visual studio 2010 Pro
  • 我应该对 ObjectContext 使用 using 关键字吗?

    我在这个网站或 CodeProject 的某个地方读到 好的规则是 如果某个类已经实现了 IDisposable 接口 那么您应该使用 using 关键字 因为使用翻译成 MSIL 的关键字会尝试 最终阻止如下内容 try some log
  • 使用 Libgdx 更新适用于 64 位设备的 Android 应用程序

    我在 Google Play 上有一些 Android 应用程序 我只需要根据谷歌最近提到的以下要求更新应用程序 即 所有应用程序都必须与 64 位兼容 https android developers googleblog com 201
  • 相对文件路径的区别:Qt Creator的调试模式和发布模式

    QFile file test txt if file open QIODevice ReadOnly qDebug lt lt You got me 我在用 Qt 4 8 6 与 MSVC 2010 Qt 创建者 3 1 1 Window
  • 函数模板在另一个类/命名空间中的专业化?

    注意 这个问题与tinyxml只是松散相关 但是包括这样的细节可能有助于更好地说明这个概念 我编写了一个函数模板 它将迭代父 XML 节点子节点 检索子元素的值 然后将该子元素值推送到向量 检索值 部分也写为函数模板 i e templat
  • 通过 JavaScript 检测浏览器换行

    我需要 javascript 来检测每个浏览器包装的文本行并将其包装到 span class line 我读过一些关于测量每个单词的 y 轴的文章 但还没有看到可靠的解决方案 这是我到目前为止所拥有的 看到它Jsfiddle http js
  • 寻找公共子集的算法

    I have N number of sets Si of Numbers each of a different size Let m1 m2 mn be the sizes of respective sets mi Si and M
  • SQL Server 连接其他表中不存在的位置

    Service Asset AssetService Id Name Id Name AssetId ServiceId
  • UITableView Separator 出现在 Cell 视图的中间

    我正在使用默认的 iOS 7 的 TableView Separator 我有不同高度的自定义单元格 当频繁地上下滚动时 一些较小的单元格会留下分隔符 也许不确定这是否是原因 因此 大多数情况下 较大的电池会被分离器从中间切割 我尝试将单元
  • C语言中使用POSIX使二进制信号量在多个进程(不是线程,仅限进程)之间共享

    我正在使用 C 语言中的 POSIX 使二进制信号量在多个进程 不是线程 仅进程 之间共享 如果我使用互斥体创建二进制信号量 typedef struct BIN SEMA pthread cond t cv cond variable u
  • 为什么java中LinkedList没有initialCapacity?

    我想知道为什么LinkedList没有initialCapacity 我知道什么时候使用ArrayList什么时候LinkedList 定义集合最终大小的好习惯是 List
  • VB6/VBA 中对象清除/数组释放真的有必要吗(优点/缺点?)[重复]

    这个问题在这里已经有答案了 我从使用静态代码分析 特别是 Aivosto 的项目分析器 中学到了很多关于 VB 的知识 它检查的一件事是您是否清除了所有对象和数组 我以前只是盲目地这样做 因为PA这么说 但现在我对 VB 释放资源的方式有了
  • 使用 NTL 库的编译器错误

    我正在尝试使用 NTL 库 但总是收到有关未定义符号的编译器错误 示例 取自 NTL 文档 include
  • ApiGee OAUTH 授权

    我是 Apigee 的新手 我需要在代理中进行标注以从谷歌融合表中获取数据 FT 服务要求使用誓言 2 0 进行安全呼叫 我已经使用自定义代理创建了此工作流程 没有任何 OAUTH 策略 并在键值映射中存储令牌 刷新令牌和过期时间 我还制作