问题标签 [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 投票
1 回答
80 浏览

keycloak - 使用 https 时 IDP 元数据在位置 URL 中丢失端口

我正在测试一个使用 spring-security-saml 并使用 KeyCloak 作为身份提供程序进行测试的应用程序。KeyCloak 默认在 http 和带有自签名证书的 https 上运行。

在 https://localhost:8543/auth/realms/master/protocol/saml/descriptor 的浏览器中通过 https 检索元数据时,它会正确返回以下内容:

当我将相同的元数据位置提供给我的应用程序时,它最终会尝试将我发送到没有端口 8543 的 URL,即使该端口位于上述所有位置:

https://localhost/auth/realms/master/protocol/saml

调试 OpenSAML 代码,看起来端口在从解析原始 IDP 元数据的 AbstractMetadataProvider 的第 460 行返回后丢失了:

有什么方法可以控制它并让它尊重元数据 xml 中的端口?

0 投票
1 回答
492 浏览

java - 自定义“RelyingPartyRegistrationRepository”实现

看起来Spring总是使用InMemoryRelyingPartyRegistrationRepository返回一个RelyingPartyRegistrationRepository类型化的bean,参考https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-autoconfigure/src/main/ java/org/springframework/boot/autoconfigure/security/saml2/Saml2RelyingPartyRegistrationConfiguration.java

问题:我如何注入(自动装配)我自己的实现RelyingPartyRegistrationRepository?假设一旦我为某个客户更新了 SAML 配置,我想允许自动连接依赖方存储库从数据库中自动重新加载。这是可行的吗?

0 投票
0 回答
128 浏览

java - xml 配置中的 Saml 身份验证 Spring Security Core(自 5.2 起)

我们目前正在使用此处描述的 xml 配置。这取决于 opensaml。
从 Spring security 5.2 开始,SAML 身份验证集成在 spring security core 中,如此处宣布

我确实找到了一个通过 @nnotations进行配置的示例。

有没有人参考在 XML 配置中配置 Spring Security SAML 身份验证“新的 spring 核心 5.2 方式”的示例(因此没有 OpenSAML 依赖项)

0 投票
0 回答
833 浏览

spring-security - Spring Security SAML2 问题签署 SAMLRequest

我正在使用 spring boot 2.4.1 和 spring security SAML2 支持我成功配置了我的服务提供者。我创建了一个自签名证书,我正在尝试使用需要签名的 IDP AuthnRequests

这是我的RelyingPartyRegistrationRepository配置:

应用程序成功启动,但是,每次我发出新请求时,IDP 端都会出现异常,因为KeyInfoAuthnRequest

通过查看我的应用程序日志,我发现了这个日志:

2021-01-06 12:20:35,650 23472 [XNIO-1 task-7] INFO o.o.x.s.support.SignatureSupport - No KeyInfoGenerator was supplied in parameters or resolveable for credential type org.opensaml.security.x509.X509Credential, No KeyInfo will be generated for Signature

我不明白我是否在配置中遗漏了一些东西。

请注意,由受信任的 CA 发布的证书也会发生同样的情况,而不仅仅是自签名证书。所以我认为这是我正在做的一种配置错误或一种错误。

你能否给我提示如何解决这个问题?

安杰洛

更新

我解决了我当前的问题。无论如何,我认为这是我的错误。基本上我修改了org.springframework.security.saml2.provider.service.authentication.OpenSamlAuthenticationRequestFactory 我添加了以下方法:

我在这里调用了这个方法:

现在我在 IdP 方面没有错误,但我认为我的配置中缺少一些东西。这是我的整个网络安全配置:

你能帮我理解我是否遗漏了什么(我想我遗漏了一些东西)

0 投票
0 回答
310 浏览

spring-security - 成功 SAML 身份验证后出现 403“无效 CORS 请求”

我们在我们的应用程序 (SP) 中使用 spring security 来通过 SAML IDP 进行身份验证。

正如预期的那样,访问 SP 重定向到 IDP 身份验证表单,但在身份验证成功后,spring security 中对 {myServerBase}/login/saml2/sso/{registrationId} 的 SAML 响应的 POST 失败,并出现 403“无效 CORS 请求”。

在 POST 请求中,有一个 http 标头“Origin:null”,这似乎使 spring CorsFilter 拒绝 SAML 响应。

我们测试了 2 个不同的 SAML IDP(Samling 和 Okta)有这个问题,我们使用的是 spring security 5.4.1

使用 SAML 通过身份验证的唯一方法是在 spring security 中禁用 CORS(但我们希望激活 cors)是否有任何特定的步骤我们会错过使用 spring security 配置 cors 和 saml?

阿尔诺

0 投票
0 回答
42 浏览

spring-boot - Saml2 spring-security 单点注销

根据https://docs.spring.io/spring-security/site/docs/5.2.1.RELEASE/reference/htmlsingle/#saml2,现有的 spring-security Saml2 配置似乎没有单一注销功能。我已经有了 openAM (ForgeRock) 的注销 url,但是使用 Spring-security for Saml2 处理注销的最佳方法是什么?

0 投票
1 回答
438 浏览

spring-security - spring-security-saml2-service-provider 的“未提供 KeyInfo 生成器”

我有一个连接到仅支持 POST 绑定的 SAML idP 的应用程序。在配置了使用 spring-security-saml2-service-provider 手动创建 POST Authentication 请求的应用程序后,我查看了生成的 XML,发现它包含签名信息(这是预期的)但不包含密钥信息。然后在日志中,我注意到它说:

No KeyInfoGenerator was supplied in parameters or resolveable for credential type org.opensaml.security.x509.X509Credential, No KeyInfo will be generated for Signature

这是我的代码手动生成 POST Authentication 请求的样子:

saml2PostAuthenticationRequest()由于某些超出此问题范围的原因,我只是从我的控制器调用该方法并生成一个自动提交的表单。在进一步查看 之后OpenSamlAuthenticationRequestFactory,看起来这是SignatureSigningParameters专门创建的,不包括,KeyInfoGenerator因为它只是在私有方法中创建的。有没有人知道如何解决这个问题,或者指出我是否做错了什么?

谢谢!

0 投票
0 回答
74 浏览

azure - 使用标准 java 应用程序进行 SAML 身份验证

我们有一个要求,我们需要在我们的应用程序中为将 Azure 作为 IDP 的客户启用 SAML 身份验证。

在考虑了各种选项之后,我能够使用文档中提供的 Spring SAML 安全性来实现这一点。现在的问题是将 SAML 安全性与我们的应用程序集成。

不幸的是,我们的应用程序仍然是一个使用 servlet 和 jsp 而不是基于 Spring 的遗留 Java 应用程序。我只是想知道如何将 2 集成。该文件提到这是可能的。但是,我找不到任何关于它的文章。

有人可以将我引导到可以为这种方法提供指导的相关来源。

0 投票
1 回答
57 浏览

spring - Spring Secuirty SAML2 Core - 为运行时创建的身份提供者添加密钥

目前,我正在使用 Spring Security 在我的项目中编辑现有的 SAML 支持实现。我有多个 IdentityProviders,我将数据存储在数据库中。使用我的应用程序 UI,我可以在运行时添加新的 IdentityProviders,这将被添加到 CachingMetadataManager。之后,调用 refreshMetadata。但是我有 JKSKeyManager,它在应用程序启动时加载并加载一个 JKS 密钥库,该密钥库用于所有 IdentityProviders 的所有元数据。我希望用户能够在运行时创建 IdentityProvider 期间使用我的应用 UI 上传(或粘贴)私钥,以便不同的密钥可用于不同的 IdentityProvider,但我不知道如何。如果我将密钥存储在 JKS 文件或其他地方,对我来说没有区别。那里'

密钥管理器注入如下所示:

使用的 SAML 扩展是来自 org.springframework.security.extensions 的 spring-security-saml2-core (1.0.3.RELEASE)。Spring Security 版本是 3.2.9.RELEASE。

0 投票
1 回答
751 浏览

spring - 无法更改 Spring 安全 SAML SSO 中的默认“回复 URL”(断言消费者服务位置)

我正在使用带有 Spring Boot 的Spring Security Saml 2.0进行 SSO(单点登录),Azure 作为身份提供者。

Spring security 使用“{baseUrl}/login/saml2/sso/{registrationId}”作为默认的“Reply Url”,

但我想使用“{baseUrl}/login/{registrationId}”

所以按照 我写的官方文档

通过这个我进入登录页面,但之后有无限循环的登录......

Spring Boot 无法 POST 到 /login/azure

我试图允许此端点的 CSRF 并允许所有访问,但是它无法解析元数据。

我发现它是在过滤器“Saml2WebSsoAuthenticationFilter”中实现的