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

Spring Keycloak身份验证-服务于web应用程序和web服务

汲时铭
2023-03-14
  • react中的前端
  • 基于Spring Boot“resource-service”的后端服务
  • keycloak
  • 其他后端服务(使用者)

前端和使用者服务都使用REST API与后端通信。我们使用Keycloak作为我们的用户管理和身份验证服务。

我们希望通过提供web应用程序和服务流来将基于Spring的服务“资源服务”与Keycloak集成:

>

  • 基于web application-react的front-send应该从“resource-service”获得重定向302,并发送用户/浏览器登录到Keycloak站点,然后返回以获得请求的资源。

      null

    我注意到Keycloak文档中有一个“AutoDetect-Bearer-only”,它似乎正好支持这种情况。但是--有很多集成选项,我不确定对于一个新的Spring启动服务来说,什么是最好的方法。此外,我没有找到在哪里配置该属性。

  • 共有1个答案

    危寒
    2023-03-14

    我已经使用了方法一和方法二,在我看来,如果您使用Spring Boot,请使用相应的适配器,如果您仍然使用普通的Spring MVC,请使用Spring Security适配器。我从来没有看到第三种方法的必要性,因为你基本上必须自己做任何事情,为什么有人不使用前两种方法?

    至于使用Spring Bood适配器,唯一必要的配置如下:

    keycloak:
      bearer-only: true
      auth-server-url: your-url
      realm: your-realm
      resource: your-resource
    

    你就完蛋了。只有承载才能返回401,如果客户机到达时没有承载令牌,并且没有像您希望的那样重定向到登录页面。至少这是对我们有效的:-)

     类似资料:
    • 我需要在我们的Web应用程序中使用LDAP/AD服务器实现SSO身份验证和验证用户。Web应用程序是使用Spring(Java)/Hibernate制作的,应用程序服务器是UAT中的Jboss和生产中的Webphere。 我正在寻找一些好的简单的解决方案,可以帮助我实现它,从几个朋友那里听说华夫饼是一个很好的解决方案,但是在网上搜索并尝试了几天之后,我不确定我是否朝着正确的方向前进。我在这方面很幼

    • 我正在使用C#实现一个REST web服务,它将作为云服务托管在Azure上。因为它是一个REST服务,所以它是无状态的,因此没有cookie或会话状态。 Web服务只能通过HTTPS(由StartSSL. com提供的证书)访问。 用户成功登录服务后,他们将获得一个安全令牌。该令牌将在未来的通信中提供身份验证。 令牌将包含客户端的时间戳、用户ID和ip地址。 所有通信都只能通过HTTPS进行,所

    • 问题内容: 简短的问题: 我在.NET中有一个Web API服务,而一个站点仅由HTML和AngularJS组成。 如何仅对我的网站授权给我的服务? 我正在寻找一个似乎很常见但不是常见问题的安全答案。在最近的日子里,我读了很多答案,想法和各种各样的东西,但是找不到解决方案。 假设我有一个来自MS的Web Api服务(最新的)。所以我必须要消耗它的应用程序。让我们定义两个方案。 方案1: 在同一个I

    • 问题内容: 我正在使用以下过滤器在我的Web应用程序中启用NTLM身份验证。 我得到Windows浏览器身份验证提示。运行正常。除了以下事实外- 我无法确定身份验证是成功还是失败! * 两种情况均无错误。 *在每种情况下都将打印用户名(正确或相反),工作站等。 web.xml很简单: 问题答案: 您收到的是Type 3消息,但是除了打印出详细信息之外,您什么都没做。此时,您需要验证客户的响应,并发

    • 问题内容: 我正在尝试制作一个服务器应用程序,以定期从自己的GA帐户提取Google Analytics(分析)数据。请注意,它是访问我自己的数据的个人服务器端应用程序,即 没有最终用户访问此应用程序。 因此,我在Google API控制台中将我的应用程序注册为 服务应用程序 ,这给了我一个 客户端ID 和一个 私钥 。据我了解,服务应用程序不使用 应用程序密钥 和 重定向URL, 因为此服务器到

    • 我在决定如何为一个RESTful API实现身份验证时遇到了一些麻烦,该API既可供web应用程序使用,也可供移动应用程序使用。 首先,我想研究HTTPS上的HTTP基本身份验证作为一种选择。对于移动应用程序来说,用户名和密码可以安全地存储在操作系统钥匙链中,并且在传输过程中无法被拦截,因为请求是通过HTTPS发出的。对于API来说,它也很优雅,因为它将是完全无状态的。问题在于web应用程序。将无