【发布时间】:2019-10-21 14:42:26
【问题描述】:
我们的应用程序目前有自己的使用 JWT 的身份验证过程。
我们希望使用 SAML 2.0 (Azure AD) 仅为我们的应用程序中的特定用户角色添加 SSO(单点登录)登录。
是否可以在同一个 Spring-Boot 应用程序中拥有 2 个单独的身份验证协议?
【问题讨论】:
标签: spring-boot spring-security jwt saml-2.0
我们的应用程序目前有自己的使用 JWT 的身份验证过程。
我们希望使用 SAML 2.0 (Azure AD) 仅为我们的应用程序中的特定用户角色添加 SSO(单点登录)登录。
是否可以在同一个 Spring-Boot 应用程序中拥有 2 个单独的身份验证协议?
【问题讨论】:
标签: spring-boot spring-security jwt saml-2.0
是的。这是可能的。
这个想法是您可以注册许多AuthenticationProvider,其中每个AuthenticationProvider 负责一种特定类型的身份验证机制(即一种用于 JWT,一种用于 Azure AD)。
Spring Security 然后会一一循环遍历这些AuthenticationProvider 来检查哪一个可以成功验证请求。一旦发现AuthenticationProvider 可以成功进行身份验证,它将停止循环。
这意味着在您的每个AuthenticationProvider 中,您可以获取当前请求用户的角色信息,然后检查他是否具有该身份验证机制所需的角色。如果他没有所需的角色,只需抛出AuthenticationException。
【讨论】: