双重身份验证机制:SSO 和 DB 凭据

Posted

技术标签:

【中文标题】双重身份验证机制:SSO 和 DB 凭据【英文标题】:Double authentication mechanism: SSO and DB credentials 【发布时间】:2021-04-23 11:38:29 【问题描述】:

我有一个 Java Spring Web 应用程序(没有 Spring Boot),它具有使用数据库用户凭据的“标准”身份验证机制(它使用 Spring Security lib)。

现在我需要知道是否可以使用外部身份提供程序和 SSO 登录来包含第二个身份验证方法。

例如:具有特定电子邮件域(例如:userX@domain1.com)的用户使用他的数据库凭据登录,但另一种类型的用户(例如:userY@domain2.com)需要能够登录外部 IDP。

我已经用Spring Security SAML lib 和 ADFS 或 OpenAM 开发了一堆应用程序,但这是所有用户唯一的登录方法。

如果可能的话,我需要如何设置 Spring 安全配置才能实现这一点?也许我应该使用多提供商配置?

谢谢。

【问题讨论】:

【参考方案1】:

可以通过检查用户域并重定向到您自己的支持基于UserNamePassword的DB身份验证的服务或重定向到SSO服务来实现支持多种身份验证机制。

对于配置 Spring Security,您可以创建单独的实现扩展

org.springframework.security.authentication.AuthenticationProvider

Checkout this link that guides on how to implement multiple authentication mechansism

对于 SSO,您必须使用 SSO 提供程序配置 redirectURL,该提供程序在内部使用 SAML 响应调用您的 API。

SSO with spring security

【讨论】:

以上是关于双重身份验证机制:SSO 和 DB 凭据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python(SSO 身份验证)在 Snowflake 中进行查询?

使用 Keycloak SSO 在 2 个应用程序之间保持身份验证

无法解析身份验证凭据 [关闭]

SAML简介

SQL Server第2部分:简化身份验证和授权机制

Spring OAuth2:支持 SSO 和自定义身份验证服务器的身份验证和资源访问