是否可以在单个应用程序中拥有 SAML 2.0 身份验证和 JWT 身份验证?
Posted
技术标签:
【中文标题】是否可以在单个应用程序中拥有 SAML 2.0 身份验证和 JWT 身份验证?【英文标题】:Is it possible to have SAML 2.0 Authentication and JWT Authentication in a single Application? 【发布时间】:2019-10-21 14:42:26 【问题描述】:我们的应用程序目前有自己的使用 JWT 的身份验证过程。
我们希望使用 SAML 2.0 (Azure AD) 仅为我们的应用程序中的特定用户角色添加 SSO(单点登录)登录。
是否可以在同一个 Spring-Boot 应用程序中拥有 2 个单独的身份验证协议?
【问题讨论】:
【参考方案1】:是的。这是可能的。
这个想法是您可以注册许多AuthenticationProvider
,其中每个AuthenticationProvider
负责一种特定类型的身份验证机制(即一种用于 JWT,一种用于 Azure AD)。
Spring Security 然后会一一循环遍历这些AuthenticationProvider
来检查哪一个可以成功验证请求。一旦发现AuthenticationProvider
可以成功进行身份验证,它将停止循环。
这意味着在您的每个AuthenticationProvider
中,您可以获取当前请求用户的角色信息,然后检查他是否具有该身份验证机制所需的角色。如果他没有所需的角色,只需抛出AuthenticationException
。
【讨论】:
感谢您的确认!我现在必须搜索 AuthenticationProvider 以及如何在我们的系统中实现它。 @NekoTamago。欢迎您并祝您旅途愉快:D以上是关于是否可以在单个应用程序中拥有 SAML 2.0 身份验证和 JWT 身份验证?的主要内容,如果未能解决你的问题,请参考以下文章
Shibboleth SP 是 SAML 2.0 的实现吗?
如何使用 SAML 2.0 响应进行特定 DNN 用户角色组身份验证和授权?