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

Spring Security:如何使用JwtAuthcerationProvider的UserDetailsService?

史修明
2023-03-14

我有一个使用Spring MVC编写的REST服务。该服务器是一个OAuth2资源服务器,我正在使用Jwt验证提供程序来解析JWT并将其转换为主体。这一切都很好。

然而,我真正想做的是使用JWT中声明提供的用户名从数据库加载用户详细信息。然后,新主体应该替换或(理想情况下)包装Jwt,以便它可以直接从SecurityContext获得。

我真的很难看到如何做到这一点。JwtAuthenticationProvider似乎无法与UserDetails服务一起使用。我还研究了如何使用转换器实现这一点,但扩展JwtAuthenticationConverter并不容易,因为转换方法是final(为什么?)。

所以要非常清楚,这是我理想中想要发生的:

  1. 承载令牌被提供给服务

my WebSecurityConfigureAdapter中的配置方法有:

http.authorizeRequests().antMatchers("/api/*").authenticated().and().oauth2ResourceServer().jwt();

我不可能是唯一一个想和OAuth2一起使用用户数据库的人,所以我肯定错过了一些基本的东西?我使用的是Spring Security 5.2.0。

共有1个答案

松建本
2023-03-14

我同意你的担忧——我发现重写Spring的默认处理很有用。我在一些提供商中使用了一种声明扩展性模式,JWT处理只是其中的一部分。

我有一个您可以运行的Spring Boot代码示例——它使用自定义过滤器和Connect2Id类——这里描述了OAuth集成。如果有帮助,很乐意回答任何后续问题

 类似资料:
  • 本文向大家介绍如何使用SpringSecurity保护程序安全,包括了如何使用SpringSecurity保护程序安全的使用技巧和注意事项,需要的朋友参考一下 首先,引入依赖: 引入此依赖之后,你的web程序将拥有以下功能: 所有请求路径都需要认证 不需要特定的角色和权限 没有登录页面,使用HTTP基本身份认证 只有一个用户,名称为user 配置SpringSecurity springsecur

  • 我有一个Spring项目,它使用sping-oaust2和sping-Security使用LDAP身份验证提供程序进行身份验证。 在控制器中,我可以使用< code > @ AuthenticationPrincipal 注释访问当前主体的< code>UserDetails。 然而,当我使用client_credential令牌到达endpoint时,是一个,它是OAuth客户端id。sprin

  • 我正在学习springsecurity(基于java的配置),我无法使注销正常工作。当我点击注销时,我看到URL更改为http://localhost:8080/logout并获取“HTTP 404-/logout”。登录功能工作正常(即使使用自定义登录表单),但问题是注销,我怀疑重定向的url“localhost:8080/logout”应该类似于“localhost:8808/springte

  • 目前,我正在使用以下内容将用户登录到我的应用程序中。然而,我想使用一个角函数来实际执行登录。为此,我想创建一个Rest网络服务来进行身份验证,但是我在SO上看到的所有示例都使用我认为被贬低的用户。我还希望该服务返回有关用户的信息。 我要问的是如何将MyUserDetailsService更改为用作登录的restful服务,或者如何创建一个可用于登录的服务,该服务将在登录后返回用户对象。 这是我的a

  • 主要内容:1.入门,2.设置用户名和密码1.入门 1.启动一个SpringBoot项目 2.导入SpringSecurity相关依赖 3.编写Controller TestController.java 用户是user 密码是刚刚的 2.设置用户名和密码 1.在配置文件中设置 2.在配置类中设置 3.自定义实现类 2.1 配置文件中设置 2.2 在配置类中设置 设置用户名为zZZ,密码为root 2.3 自定义实现类 配置类: 业务类:

  • 问题内容: 我目前正在评估基于Java的安全框架,我是Spring 3.0用户,因此似乎似乎SpringSecurity是正确的选择,但是Spring安全性似乎受到过分复杂的困扰,它似乎并没有使安全性易于实现, Shiro似乎更加连贯,更容易理解。我正在寻找这两个框架之间的利弊清单。 问题答案: 我也同意Spring Security对我来说感觉太复杂了。当然,他们已经做了一些降低复杂性的事情,例