问题标签 [spring-security-saml2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
57 浏览

spring-security - Spring Security SAML2,发送语言代码-元素

我目前正在从 Spring Security SAML Extension 迁移到 Spring Security SAML2,并且用例需要在 Extensions 元素中发送语言代码。

使用 Spring Security SAML Extension,这是通过以下方式完成的:

  1. 扩展 SAMLEntryPoint 并将语言环境作为 relayState 存储到 SAMLMessageContext,如下所示:
  1. 扩展 WebSSOProfileImpl 并使用先前设置的 relayState 值生成 Extensions -元素:

如何使用 Spring Security Core SAML2 完成相同的功能?有没有与使用 SAMLMessageContext 和 relayState 类似的方法?

我可以自定义 AuthenticationEntryPoint 以及身份验证请求创建,但似乎无法在这两者之间移动语言环境。

0 投票
0 回答
54 浏览

spring-security - Spring Security - 支持 SP-Initiated SSO:POST/Artifact Bindings

我正在考虑开发具有 SAML 2.0 服务提供者功能的新 Spring Boot 应用程序,特别是支持使用 SOAP 协议进行“工件解析”/“工件响应”消息交换的 SP 发起的 HTTP 工件绑定。“Spring Security Core 中的 SAML 功能集”是否支持此绑定,因为枚举 org.springframework.security.saml2.provider.service.registration.Saml2MessageBinding 似乎只支持 HTTP-POST 和 HTTP-REDIRECT?如果不支持,是否有计划将其包含在未来的版本中或支持此绑定的替代 Spring Security 项目中?任何工作样本都会很棒。

谢谢你。

0 投票
2 回答
168 浏览

java - 我们可以在 Quarkus 中使用 spring-security-saml2-service-provider

我们是 Quarkus 的新手,正在使用它构建一个简单的服务提供者,用于通过 SAML 协议以 Okta 作为 IdentityProvider 进行单点登录。不幸的是,Quarkus 只支持 OpenId Connect(我们找不到任何 SAML 协议的指南)。然而,Spring 已经在spring-security-saml2-service-provider中实现了这个,所以我们想在 Quarkus 上重用这个 Spring 组件。

我们在项目中只有 1 个简单的(弹簧休息)控制器:

以及以下 OKTA 的一些其他配置application.properties

不幸的是,当我们尝试运行mvn quarkus:dev系统时显示此错误堆栈跟踪:

我的问题是:

  1. 是否可以在 Quarkus 上使用 spring-security-saml2-service-provider?或者:
  2. 有什么方法可以让 Quarkus 使用 SAML 协议进行单点登录?

这是我们的 pom.xml:

0 投票
2 回答
156 浏览

java - 使用 Spring Security 的 SAML 2.0 在本地选择身份提供者

我正在使用 Spring Security 的 SAML 2.0 将我的服务提供者连接到多个身份提供者。

Spring 的 SAML 2.0 文档中的所有内容都很有意义。我已经阅读了许多有用的教程,包括这个,它与我现有的代码相似。

但是,我错过了为给定用户选择身份提供者的位置和方式

我了解SAMLDiscovery可用于将身份提供者选择委托给第三方服务。我也了解如何配置多个身份提供者。但我正在寻找一种方法来运行我自己的代码(即检查数据库),然后为所选身份提供者(而不是第三方服务)触发 SAML 请求。我预计这会在SAMLEntryPoint被击中时发生。我已经看到提到在初始请求中指定 EntityID。这有关系吗?

我正在尝试执行 SP 发起的 SAML 2.0 SSO。有人可以指出我可以根据当前用户手动指定 IdP 的位置吗?

0 投票
1 回答
278 浏览

java - Spring Security SAML 断言到角色的转换

我一直在将 SAML 2.0 与 Spring Boot 2.5.6 一起使用,并使用 Okta 作为身份提供者。在大多数情况下,我已经能够创建一个 Web 应用程序并与 Okta 的身份提供程序集成。我面临的问题与角色有关。我在 Okta 中分配的组不会转换为 Spring Security 中的角色,并且不清楚这种转换应该如何在 Spring Security for SAML 中发生。在 SAML 断言中,组属性被命名为“组”,我可以在作为响应的一部分出现的断言 XML 中看到它。但是 Spring Security 不将“组”属性理解为角色。

在 Authentication 之后,SAML2Authentication 对象包含作为 ROLE_USER 的 Authorities。如何将 Assertion 中的传入组属性转换为 SAML2Authentication 中的适当权限?否则,我无法将应用程序 URL 配置为适当的授权角色。

请帮助或指出我的方向

0 投票
1 回答
80 浏览

spring-security - application.yml 中的 SAML 2.0 属性

我一直在使用一些教程来了解必须在 application.yml 中设置哪些属性。似乎没有关于可以设置的完整属性集的任何文档。这是一个例子

有谁知道与我可以设置哪些 SAML 属性相关的文档?例如最后一个属性不正确。我想创建一个包含元数据的文件,而不是 URI,并在 application.yml 中使用它,但我不知道属性名称是什么。

拥有一个包含可在 application.yml 中设置的 SAML 2 属性文档的网页会很有帮助。

0 投票
0 回答
46 浏览

java - 如何在 Spring Security SAML2 上下文中使用 JKS 密钥库

我正在将使用 Spring Security SAML Extension 编写的旧 SAML 实现转移到 Spring Security SAML2 中。我对以下 bean 有困难:

Spring Security 上下文中是否有任何等效的方法来配置密钥管理器?我想专门使用 Java 配置

0 投票
1 回答
66 浏览

java - 从 spring-security-saml2-core 中排除 slf4j-api,我们得到一个运行时异常 NoClassDefFound: org/slf4j/LoggerFactory

在 log4j 零日漏洞之后,我们开始查看是否有更多使用 slf4J 或更低版本的 log4j 的工件。

检查 mvn 依赖树,我们发现 spring-security-saml2-core 正在使用 slf4j,我们试图从工件中排除它。但是,我们收到以下运行时异常: -java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at org.opensaml.DefaultBootstrap.getLogger(DefaultBootstrap.java:246) at org.opensaml.DefaultBootstrap.initializeXMLSecurity(DefaultBootstrap.java:第189章)

0 投票
1 回答
57 浏览

spring-boot - 如何在 OpenSaml4AuthenticationProvider 中包含来自旧版 UserDetailsS​​ervice 的用户详细信息?

我希望有人能给我一个比我在文档中找到的更具体的例子。

使用 SpringBoot/Spring Security 5.6.0。我正在将基于 SpringSecurity/SAML 的身份验证过程迁移到SAML2

我需要将根据 responseToken 信息构建的 UserDetails 添加到身份验证中。类似于我们可以在文档中阅读的内容:https ://docs.spring.io/spring-security/reference/5.6.0-RC1/servlet/saml2/index.html#servlet-saml2login-opensamlauthenticationprovider-userdetailsservice

但我不明白第三点:返回包含用户详细信息的自定义身份验证:“return MySaml2Authentication(userDetails, authentication);”

在任何情况下,您都必须执行“return new MySaml2Authentication(userDetails, authentication);” 正确的?

在任何情况下,当进程继续时,它会被执行:

身份验证 authenticate = provider.authenticate(authentication);

正如我们所见,它将 Details 值替换为原始值。

authenticationResponse.setDetails(authentication.getDetails());

如何添加一个依赖于从令牌获得的信息的 UserDetails?我不能扩展 OpenSaml4AuthenticationProvider 因为它是"final"

我唯一能想到的是选项:https ://docs.spring.io/spring-security/reference/5.6.0-RC1/servlet/saml2/index.html#servlet-saml2login-authenticationmanager-custom

并在 MySaml2AuthenticationManager 中设置 Details 后执行Authentication authenticate = provider.authenticate(authentication); 但这对我来说似乎不对。

有更好的选择吗?

非常感谢您的帮助

此致

0 投票
0 回答
15 浏览

java - 从 spring-security-saml2-core 版本 2.0.0.M31 中删除的 KeyManager 和 JKSKeyManager 类

我需要将 org.springframework.security.extensions:spring-security-saml2-core 从 1.0.1.RELEASE 迁移到 2.0.0.M31。但在 2.0.0.M31 org.springframework.security.saml.key.KeyManager 中,org.springframework.security.saml.key.JKSKeyManager 类不再存在,以下代码无法编译。

最终凭据键 = keyManager.getCredential(keyName)

您能否告知在 spring-security-saml2-core 版本 2.0.0.M31 中使用 KeyManager 的替代方法是什么?