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

第一篇文章在这里,希望我做得对。

在一个项目中,我们有一个场景,其中我们有一个带有多个实体的Web应用程序。当前,通过默认的JDBC Spring

Security提供程序管理登录,工作正常。

对于一项新要求,我们需要每个实体都可以有自己的登录方法(当前有2种方法可用,JDBC一种是当前方法,第二种是通过SAML进行身份验证,每个实体都定义自己的登录方法。

IdP,但这是另一个故事)

我需要一些有关如何实现此目标的准则,已经进行了一些搜索,并且找到了不同URL的提供者,等等。但是对于同一应用程序和URL,取决于用户类型或实体,没有不同的登录方法。

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

亲切的问候,

亚历克斯

回答:

由于您的每个用户都可能使用不同的IDP,因此无论如何您都需要先确定用户名,然后再进行身份验证过程的初始化-但您已经知道这一点。

一种采用的方法(类似于Microsoft在企业用户中使用的Office 365)是:

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

输入用户名或用户单击“继续”按钮即可提交表单,从而避免使用任何API。然后,使用一个自定义EntryPoint是有意义的:

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

以上是 Spring Security:取决于实体的不同身份验证方法 的全部内容, 来源链接: utcz.com/qa/400848.html

回到顶部