是否可以在单个应用程序中同时使用 SAML 2.0 身份验证和 JWT 身份验证?

Is it possible to have SAML 2.0 Authentication and JWT Authentication in a single Application?

我们的应用程序目前有自己的使用 JWT 的身份验证过程。

我们只想为我们使用 SAML 2.0 (Azure AD) 的应用程序中的特定用户角色添加 SSO(单点登录)登录。

是否可以在同一个 Spring- 启动应用程序中使用 2 个单独的身份验证协议?

是的。有可能。

想法是您可以注册许多 AuthenticationProvider,其中每个 AuthenticationProvider 负责一种特定类型的身份验证机制(即一个用于 JWT,一个用于 Azure AD)。

Spring 安全然后将逐一循环这些 AuthenticationProvider 以检查哪一个可以成功验证请求。一旦发现 AuthenticationProvider 可以成功验证,它将停止循环。

这意味着在您的每个 AuthenticationProvider 中,您可以获得当前请求的用户的角色信息,然后检查他是否具有该身份验证机制所需的角色。如果他没有所需的角色,只需抛出 AuthenticationException