使用 oauth2 从防火墙后的 Wildfly/Keycloak 安全 Web 应用程序调用 oauth2 保护 google 应用程序引擎应用程序

Posted

技术标签:

【中文标题】使用 oauth2 从防火墙后的 Wildfly/Keycloak 安全 Web 应用程序调用 oauth2 保护 google 应用程序引擎应用程序【英文标题】:Securing a google app engine application with oauth2 on call from a Wildfly/Keycloak secured web application behind a firewall 【发布时间】:2016-03-11 12:10:41 【问题描述】:

要求

我的要求是编写一个在防火墙后运行并通过 OAuth2 协议访问谷歌应用引擎应用程序的安全 Web 应用程序。谷歌应用引擎应该不能以任何其他方式访问(由开发人员/管理员保存)。编程语言是Java。授权是服务器到服务器。

部署

我将在 WildFly (JBoss) 上使用 Keycloak 运行一个“看门人”应用程序,并将使用 Active Directory 登录我的用户在这个运行在防火墙后面的 Web 应用程序。通过这种方式,在我所服务的企业拥有帐户的每个人都应该可以访问谷歌应用引擎应用程序。同样,此处理作为部署到 WildFly 的 Java EE Web 应用程序在企业防火墙后面运行。

成功登录后的下一步是将用户重定向到谷歌应用引擎正在服务的网页。 我不希望任何其他用户(我的开发者帐户/所有者帐户除外)能够访问此网址。

我已经为我的 google 应用引擎项目创建了 JSON 用户凭证文件并从 google 开发者控制台下载。 我还在网守项目的 maven pom 文件中包含了 google-api-client。 <dependency> <groupId>com.google.api-client</groupId> <artifactId>google-api-client</artifactId> <version>1.20.0</version> </dependency> 来自https://developers.google.com/api-client-library/java/google-api-java-client/setup

问题

我如何使用 google api 客户端编写 (Java) OAuth 2.0 的精彩世界? 我想我将在“Gate keeper Web 应用程序”(Java) 上编写代码,并且可能还有一些配置 xml我的 appengine-web.xml。 我的应用引擎应用程序是否需要任何其他代码?有没有人有分步说明或示例代码/配置?我已阅读https://developers.google.com/identity/protocols/OAuth2ServiceAccount,但不知道如何申请。

提前感谢您的帮助。我猜这对于 SaaS 提供商来说是一个非常常见的场景?

【问题讨论】:

欢迎来到***。请参阅how to write a good *** question,尤其是这个问题太宽泛了。显示您尝试过的内容和具体问题。 感谢您访问这个精美的网站。我的问题并不是那么广泛。我正在寻找一个例子,一个快速启动的东西来集中我的实施。我认为对 google api 客户端的调用将具有某种格式,appengine-web.xml 是另一种格式。我在文献中没有发现这一点。我想其他人已经解决了这个问题。我正在寻找这种专业知识。 1.如何使用谷歌客户端api调用服务到服务。 2. appengine-web.xml 的样子。 3. 本优秀网站的人员可以提供的任何其他专业知识。谢谢。 将特定信息放在您的问题中,而不是在这里。仍然过于广泛,因为许多教程和文档都涵盖了这一点。关注一个并显示具体问题。 只是检查我的理解:您有一个内部 Keycloak 服务器和一个外部 Google Apps Engine。您希望通过 Keycloak 服务器对用户进行身份验证来保护您的 Google Apps Engine 应用程序。这是对的吗? 你的理解是正确的!谢谢。 【参考方案1】:

如前所述,您至少要问 2 个问题。首先,如何针对防火墙后面的 OpenID Connect 1.0 身份验证服务器(在本例中为 Keycloak)对应用程序进行身份验证。其次,如何使用google-api-client

我建议查看OAuth Bible 以了解如何实现 OAuth 2.0 两腿和三腿流程。三足身份验证更安全,但您的防火墙会带来问题。

此外,如果您将google-api-client 部分分解为更具体定义的问题,您将更有可能获得帮助。

【讨论】:

感谢您的意见。 google api 客户端是最简单的部分。配置 KeyCloak 更有趣。我必须在防火墙后面加入白名单,这很有意义。

以上是关于使用 oauth2 从防火墙后的 Wildfly/Keycloak 安全 Web 应用程序调用 oauth2 保护 google 应用程序引擎应用程序的主要内容,如果未能解决你的问题,请参考以下文章

升级后的 Spring Boot Oauth2 自动配置周期

从 Wildfly 11 升级到 Wildfly 15 时的日期序列化问题

从 Wildfly 10 中排除所有模块

从wildfly发送jms消息

从 JBoss 7 迁移到 WildFly 9 时使用 CMT 的 EJB

从 Wildfly 服务器使用 HTTP 访问文件