微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Spring Security在同一应用程序中基于SAML2和基于表单的登录

如何解决使用Spring Security在同一应用程序中基于SAML2和基于表单的登录

我正在尝试找出如何在我们的应用程序中同时支持大多数用户的基于表单的登录和某些用户的基于saml2(Spring Security 5.4)的登录

  1. 访问app.exampleapp.com的用户重定向为表单登录
  2. 访问sso.exampleapp.com的用户重定向到SAML2 Identity Provider登录

我尝试使用单个Java配置来处理两种类型,但这根本不起作用。因此,我尝试使用一种用于表单登录的配置和一种用于saml2登录的单独配置。但是我也无法正常工作。其中一个似乎优先于另一个。如果禁用saml2配置,则可以使用表单登录登录;如果禁用表单登录配置,则可以使用SSO / Keycloak登录。但是我无法使两个配置同时工作。

我有一个RequestMatcher,它在每个安全配置中的子域上都匹配。

Saml2登录配置

http
    .requestMatcher(new SubdomainSecurityMatcher("sso"))
    .authorizeRequests()
    .antMatchers("/**")
    .authenticated()
    .and()
    .saml2Login(withDefaults())

表单登录配置

http
    .requestMatcher(new SubdomainSecurityMatcher("app"))
    .authorizeRequests()
    .antMatchers("/**")
    .authenticated()
    .and()
    .formLogin()

我是否需要自定义AuthenticationEntryPoint来决定要执行的登录处理?

我尝试了很多事情,但是我不确定它是否或如何工作。有人设法对Spring Security 5.4中的新SAML2支持做类似的事情吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。