当前位置: 首页 > 知识库问答 >
问题:

使用Google Directory API和SSH隧道

澹台景辉
2023-03-14

错误:

com.google.api.client.auth.oauth2.TokenResponseException:400错误请求{“error”:“invalid_scope”,“error_description”:“https://www.googleapis.com:22230/auth/admin.directory.user不是有效的作用域。”}

我们在WAS中部署了一个Java应用程序,它将使用Google Directory API。WAS放在应用层,不允许在Internet上访问Google API。因此,网络团队打开了一个SSH隧道,以便WAS可以通过与默认ssl端口443不同的端口(22230)访问Google API。更新了Java代码,将作用域值与新端口一起使用,但最终出现了上面提到的“invalid_scope”错误。

SCOPES=arrays.ashtml" target="_blank">list(https://www.googleapis.com:22230/auth/admin.directory.user);credential=new GoogleCredential.builder().SetTransport(httpTransport).SetJsonFactory(jsonFactory)。

谷歌搜索并没有帮助我找到很多关于SSH隧道&;Google API用法。如有任何帮助,我们将不胜感激。当SSH隧道完成时,有没有推荐使用Google Directory API的方法?

共有2个答案

时才俊
2023-03-14

据我所知,作用域不会改变客户机库发出的网络请求的目的地,它们只是告诉Google您试图授权您的服务的作用域,因此将端口放置在作用域URL中会改变它,它将无法与已知列表匹配。由于您必须更改客户端库才能更改目标,因此我将选择网络请求的执行环境重定向来满足您的需要。例如,对于给定的地址,您可以使用主机重定向到环回,其中您有一个corkscrew代理等待请求,并且SSH将它们通过隧道传输到您的端点。因为您显示了来自Google的400响应,所以您的流量似乎已经正确地路由了,您所要做的就是从作用域URL中删除

轩辕天佑
2023-03-14

您需要覆盖GoogleCredential对象中的“TokenServerEncodeDurl”参数值和Directory对象中的“RooTurl”参数值,以便使用非标准SSH隧道端口进行GoogleAPI客户端通信。

使用以下代码段来实现:

GoogleCredential凭证=(new com.google.api.client.googleapis.auth.oauth2.GoogleCredential.builder()).setTransport(httpTransport).setJsonFactory(jsonFactory).setTokenServerURL(new

目录服务=(new com.google.api.services.admin.Directory.Directory.builder(httpTransport,jsonFactory,null)).SetHttpRequestInitializer(credential).SetRooTurl(https://www.googleapis.com:22230/).SetApplicationName(APP_NAME).build();

上面的代码片段将覆盖Google API客户端库(Jar文件)设置的默认服务URL值。

 类似资料:
  • 问题内容: 我正在学习python。我需要使用隧道创建者来从数据库中读取信息并关闭隧道。我使用paramiko,但是我没有使用tonelem示例。请举一个创建隧道的简单代码示例。 提前致谢! 问题答案: 在工作中,我们通常创建ssh隧道转发端口。我们的方法是使用标准命令,使子进程在单独的线程中运行。我找到了这个有用的链接:https : //github.com/paramiko/paramiko

  • 我想通过SSH隧道访问jupyter笔记本,并遵循以下方法 要总结-: 1.登录远程机器 2.在新航站楼: 3.然后转到浏览器,然后转到 现在我的问题是:我只能在两个步骤中访问远程机器 jupyter笔记本电脑只安装在我的电脑上。 当我用较长的登录过程替换第一步的第一行时,第二步应该写什么? 当我插入remote_user=username和remote_user=my_pc_name时,我从ju

  • 问题内容: 我最近开始学习Hibernate技术,不得不使用Hibernate从数据库中获取数据。问题是我只能通过SSH隧道连接到数据库。我可以在文件中使用任何属性来解决此问题吗?或者,您可以建议另一种新手可以理解的方式。 问题答案: 也许使用Jsch。一些示例可以为您提供解决之道。 另一种方法是使用HTTP代理处理程序和端口转发功能来实现自己的SSH SocketFactory。起点可以是: 您

  • 本文向大家介绍python3 使用ssh隧道连接mysql的操作,包括了python3 使用ssh隧道连接mysql的操作的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧~ 补充知识:Python 使用SSHTunnel 连接内网mysql数据库 准备: 主要模块 sshtunnel, pip install sshtunnel 其余模块 pymysql,playh

  • 我试图将JProfiler连接到运行在服务器上的JVM,我称之为remote。这台服务器只能通过另一台我称之为middle的服务器从我的工作站(本地)访问。我将JProfiler连接到remote的计划是: > 在远程计算机上安装JProfiler仪表 从本地、中间到远程建立SSH隧道:

  • 问题内容: 我的目的是连接到位于防火墙后面的服务器(主机)。我可以通过连接到网络中的另一台服务器(隧道)然后通过SSH到该服务器来访问此服务器。但是,我无法通过JSch实现相同的方案。 我无法为此编写以下代码。如果我在这里做任何愚蠢的事情,请告诉我。 上面的代码在行中给出了以下异常。 问题答案: jsch上的代理设置允许您连接到远程端上 正在运行的 代理服务器。一个在远程端将 不 被视为一个代理。