当前位置: 首页 > 知识库问答 >
问题:

Spring Security SAML2和用户名密码登录在同一API中

谷梁云瀚
2023-03-14

我正在努力实现一个登录功能,以在Spring Boot中保护REST API,我正在努力让用户名/密码JWT身份验证和SAML2身份验证同时工作。我最优先考虑的配置是不管发生什么都能工作的配置。目标是将SAML提供程序用作具有内部身份验证流的服务的替代身份提供程序,然后向用户授予JWT,无论他们使用SAML还是应用程序的登录名。

我将遵循SAML的这个示例,并构建了一个用户名/密码JWT授权,该授权也可以使用。但他们只能独立工作,或在被给予最高优先权的情况下工作。

当我使用多个配置执行某些操作时,例如:

@EnableWebSecurity
class MultiConfig {
 @Config
 @Order(1)
 static class JWTConfig extends WebSecurityConfigurerAdapter {
  // working JWT configs
}

@Config
@Order(2) 
static class SAMLConfig extends WebSecurityConfigurerAdapter {
  // working SAML Configs
}


}

配置是分开工作的,但当组合在一起时,Spring Security只处理优先级最高的内容。

从5.6.3开始,我正在Spring Security Core中使用新的(ish)SAML2库。

我得到的具体错误在一个示例endpoint上:

@RequestMapping(value = "/valid/saml/landing", method = POST).
String testSaml(Model model, @AuthenticationPrincipal Saml2AuthenticatedPrincipal principal) {
 // Supposed to get user info here
}

当用户名/密码JWT被合并并优先使用时,上面的endpoint表示“主体为空”。最终目标是将SAML断言视为替代身份验证,并向用户授予应用程序JWT。

共有1个答案

曾元忠
2023-03-14

事实证明,配置一直是正确的,这是一个SAML响应重定向问题。

SAML响应正在重定向到"/",而它应该重定向到"/my/saml/endpoint"

 类似资料:
  • 我已经安装了Jenkins ver。OSX 10.11.3上的1.653,使用标准安装程序并添加git插件。我试着从github为公共项目创建一个作业,它成功了。现在,我试图创建私人回购作业使用用户名和密码,但它总是失败。这是日志: 在工作区中构建/Users/Shared/Jenkins/Home/workspace/MyProject git rev-parse --is-inside-wor

  • 我喜欢用户按公司名称、用户名和密码登录-他们需要输入所有这些字段。 和字段在表中。在表中。 可以在表中重复,但是每个用户名属于不同的公司名。在表中定义。 如何根据公司名称、用户名和密码进行身份验证? 我查看了方法。 我不能覆盖它,因为我需要传递属于公司的特定用户,然后进行身份验证检查。 更新:

  • 问题内容: 我需要输入USER表的USER_ID字段作为另一个表中的外键。因此,我认为我需要在用户登录时启动一个会话。我很难让它在任何地方回显。我能够启动一个会话,该会话允许我回显USERNAME,但无法将其复制为ID。 请帮忙吗?我的处理代码如下。我还粘贴了本节,我暂时尝试对其进行回显以进行测试。 处理脚本: 我希望USER_ID出现在哪里: 问题答案: 使用FETCH_ASSOC而不是FETC

  • 首次登陆的用户名和密码有二个,分别为: 用户名:admin     密码 :admin 用户名:user0     密码:user0 账号admin是系统管理员权限,账号user0是普通用户,属于设计角色,拥有设计权限。 在登录后,注意更改账号密码。

  • 我正在为Dynamics GP编写加载项,并尝试运行自定义存储过程,但当我尝试打开连接时,我收到一条错误消息,显示“用户登录失败:”。 如果手动使用系统管理员用户名和密码,则所有操作都会正确执行。但是,我想使用登录Dynamics GP的人的用户名和密码。 这是完整堆栈跟踪: 如果我将中的更改为使用,它看起来根本找不到网络上的数据源并给出错误: 如果我将连接字符串打印到屏幕上,它看起来是正确的,正

  • 我最近才开始使用firebase工作,我似乎不知道如何让用户用电子邮件、用户名和密码注册,这样以后用户就可以只用用户名和密码登录,我可以用电子邮件和密码登录,但我不知道如何用用户名和密码登录,简单的解释是赞赏的,因为我是新的,谢谢!