gpt4 book ai didi

Spring 安全 : How to use a UserDetailsService with JwtAuthenticationProvider?

转载 作者:行者123 更新时间:2023-12-03 21:00:07 28 4
gpt4 key购买 nike

我有一个使用 Spring MVC 编写的 REST 服务。该服务器是一个 OAuth2 资源服务器,我使用 JwtAuthenticationProvider 来解析 JWT 并将其转换为主体。这一切正常。

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

我真的很想知道如何做到这一点。 JwtAuthenticationProvider 似乎不适用于 UserDetailsS​​ervice。我还考虑过使用 Converter 来执行此操作 - 但扩展 JwtAuthenticationConverter 并不容易,因为 convert 方法是最终的(为什么?)。

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

  • 不记名 token 被提供给服务。
  • 解析 Jwt 并提取声明
  • 使用这些声明之一作为我的用户数据库的 key ,我可以在其中查找属性、权利等
  • 将这些转换为一个新的 Principal 对象,该对象在 SecurityContext 的 Authentication 对象中可用。

  • 我的 WebSecurityConfigurerAdapter 中的 configure 方法有这个:
    http.authorizeRequests().antMatchers("/api/*").authenticated().and().oauth2ResourceServer().jwt();

    我不能是唯一一个想要将用户数据库与 OAuth2 一起使用的人,所以我一定错过了一些基本的东西吗?我正在使用 Spring Security 5.2.0。

    最佳答案

    我同意您的担忧 - 我发现覆盖 Spring 的默认处理很有用。有一个claims extensibility pattern我与一些提供程序一起使用,其中 JWT 处理只是其中的一部分。
    我有一个可以运行的 Spring Boot 代码示例 - 它使用自定义过滤器和 Connect2Id 类 - OAuth 集成描述 here .如果有帮助,很乐意回答任何后续问题

    关于 Spring 安全 : How to use a UserDetailsService with JwtAuthenticationProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58685218/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com