作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 Spring MVC 编写的 REST 服务。该服务器是一个 OAuth2 资源服务器,我使用 JwtAuthenticationProvider 来解析 JWT 并将其转换为主体。这一切正常。
但是,我真正想做的是使用从 JWT 中的 Claim 提供的用户名从数据库加载用户详细信息。然后,新的 Principal 应该替换或(理想情况下)包装 Jwt,以便它可以直接从 SecurityContext 中获得。
我真的很想知道如何做到这一点。 JwtAuthenticationProvider 似乎不适用于 UserDetailsService。我还考虑过使用 Converter 来执行此操作 - 但扩展 JwtAuthenticationConverter 并不容易,因为 convert 方法是最终的(为什么?)。
所以要非常清楚,这是我理想中想要发生的事情:
http.authorizeRequests().antMatchers("/api/*").authenticated().and().oauth2ResourceServer().jwt();
最佳答案
我同意您的担忧 - 我发现覆盖 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/
我是一名优秀的程序员,十分优秀!