双重身份验证机制: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 中进行查询?