在我们的Spring 5应用程序中,我们有Oauth和Non-Oauth身份验证流,任何一个身份验证流都可以使用设置。
对于oauth,我们使用内部授权服务器并获取jwt访问令牌。
对于非OAuth,我们使用相同的内部授权服务器的不同端点,其获取用户名和密码并返回不是JWT令牌的令牌。
因此,对于授权,我们使用两个不同的流,每个流使用不同的端点来验证令牌。
现在我们正在升级到spring Boot 3和spring webflux,所以我们计划使用spring security来保护端点。
我已经使用Spring Security和Resource Server探索了Oauth,但它只处理Oauth的情况。
我正在阅读https://medium.com/geekculture/jwt-authentication-with-oauth2-resource-server-and-an-external-authorization-server-2b8fd1524fc8文章以了解oauth流程。
我的疑问是如何在spring Boot 3和spring webflux中使用spring security处理Oauth和非Oauth授权?
1条答案
按热度按时间bjp0bcyl1#
从注解中推断,您的遗留系统似乎很容易使用内省集成到OAuth2解决方案中:使用旧的user-info端点来内省不透明令牌。
也就是说,您至少有两种配置资源服务器的选项:
在这两种情况下,“遗留”令牌的配置将是相当standard configuration for resource server with introspection(在Spring的文档中称为“不透明令牌”,即使您可以内省JWT),使用自定义内省器将令牌提交给您在评论中提到的user-info端点。
第二个选项中的
securityMatcher
可能比第一个选项中的AuthenticationManagerResolver
更容易编写。您可以从这个安全匹配器中获得灵感(当然,条件对您来说不会相同,因为您可能匹配的是bearer
模式,而不是basic
字符串)。