繁体   English   中英

Spring Security:取决于实体的不同身份验证方法

[英]Spring Security: Different authentication methods depending on entity

先在这里发帖,希望我做得对。

在一个项目中,我们有一个场景,我们有一个包含多个实体的Web应用程序。 目前,登录是通过默认的JDBC Spring Security提供程序进行管理的,工作正常。

对于新的需求,我们需要每个实体都有自己的登录方法(目前有2个方法可用,JDBC方法是当前方法,第二个方法是通过SAML进行身份验证,每个实体都定义自己的方法IdP,但这是另一个故事)

我需要一些关于如何实现这一目标的指导,我已经做了一些搜索,我找到了不同URL的提供者等等......但是对于同一个应用程序和网址没有不同的登录方法,具体取决于用户类型或实体。

有一个自定义单一入口点的好方法,我们可以检查实体用户,然后使用合适的身份验证提供程序?

亲切的问候,

亚历克斯

由于您的每个用户可能使用不同的IDP,因此在继续初始化身份验证过程之前,您将需要确定用户名 - 但您已经知道这一点。

一种方法(类似于Microsoft与企业用户使用的Office 365):

  • 显示包含标准用户名+密码字段的登录页面
  • 一旦用户输入用户名并模糊输入字段,您就进行AJAX调用(为此目的制作自定义API)并获取有关此用户使用的身份验证类型+ IDP的信息
  • 如果类型是密码,您只需让用户继续填写密码字段并POST到您习惯使用JDBC提供程序处理的相同位置
  • 如果类型是联合身份验证,则通过重定向到/ saml / login?idp = xyz并使用SAML流继续使用正确的IDP初始化身份验证

一旦用户输入用户名,或者让用户单击“继续”按钮,就可以通过提交表单来避免任何API。 然后使用自定义EntryPoint是有意义的:

  • 如果没有提供用户名,则将用户重定向到主登录页面
  • 一旦提供了用户名,就会显示带有用户名/密码的登录页面或重定向到正确的IDP

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM