标签: spring-saml

配置Ping Federate和Spring SAML以验证应用程序

我在运行Windows_Server-2008-R2_SP1-English-64Bit-Base-2014.04.09的AWS EC2上安装了PingFederate.我有一个使用Spring Security进行身份验证的Java应用程序.

我已经了解了如何使用PingFederate,我可以设置身份提供商(IdP)和服务提供商(SP).我已经收集到IdP将是提供登录凭据(身份)的应用程序用户,并将此传递给SP,该SP在此页面的此图中具有SP的目标应用程序:

http://documentation.pingidentity.com/display/PF66/Service+Providers+and+Identity+Providers

此图像还显示了IdP和SP两侧的联合身份软件.

我已经使用我的本地PingFederate服务器创建了一个IdP和SP,只是为了查看配置选项是什么,我很困惑,我实际上需要能够为我的Spring Security应用程序提供SSO.

我的问题是:

  1. 我是否需要一个IdP和SP来实现我想要做的事情.

  2. 现在我们的用户名和密码存储在SQL Server中,我会利用它来PingFederate来验证用户吗?

  3. 我是否应该为此使用Spring Security SAML,或者其他路由更合适?

感谢您的帮助,我已经联系了PingFederate,但我的区域解决方案架构师恰好在周五之前.

如果我完全不在思考,我也会道歉,我正在努力将我的想法包围在需要的地方.

saml federated-identity pingfederate saml-2.0 spring-saml

2
推荐指数
1
解决办法
3931
查看次数

Spring Security中如何更改SAML请求的签名算法

我正在使用spring security saml扩展以ADFS作为IDP来实现SSO。

据我了解,Spring Security使用开放的saml对SHA1withRSA作为签名算法的SAML请求进行签名。

我们需要进行更改以改为使用SHA256withRSA签名SAML请求。

如何才能做到这一点 ?

感谢对此的任何建议。首先十分感谢

java spring saml digital-signature spring-saml

2
推荐指数
1
解决办法
1348
查看次数

Spring security saml使用哪个密钥?

我使用spring security的开放式saml库进行身份验证.

我的服务提供商是我的spring web应用程序,配置了spring saml.我的IDP是OpenSSO.

在spring-security-saml2-core库中,永远不会调用JKSKeyManager,但会调用KeyManager.

那么库是使用.jks密钥库文件作为密钥还是'apollo/nalle123'作为密钥?他们的区别是什么?

opensso spring-security spring-saml

2
推荐指数
1
解决办法
3436
查看次数

用于单点登录服务的查询字符串参数的Spring SAML扩展条

Spring SAML Extension似乎忽略了在IDP xml中配置的查询字符串参数.这是配置

   <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://<provier host>/saml/?query1=xxx&amp;query2=yyy"/>
Run Code Online (Sandbox Code Playgroud)

1)当SSO请求被重定向时,SAML扩展似乎在之后剥离了什么?并仅发送SAMLRequest查询字符串参数.

2)我还想根据一些配置修改查询字符串参数值,这样我就可以点击环境特定的端点进行测试和开发

有没有办法在重定向之前拦截重定向请求以满足上述需求?

spring-security spring-saml

2
推荐指数
1
解决办法
1182
查看次数

Spring Security SAML IdP 元数据证书和签名

我看过很多问题,包括/sf/answers/1776944711/。我有 IdP 元数据和证书,但似乎无法获得 Spring,所以请查看。

  • 将证书添加到密钥库:keytool -importcert -alias adfssigning -keystore samlKeystore.jks -file certificate.crt
  • 在元数据中有多个证书(2 个不同的)和一​​个 SignatureValue。
  • 我尝试使用相同的 keytool 命令添加签名值,但它不是证书。
  • 我还尝试添加在元数据中找到的 2 个证书。

我启用了调试日志,这就是我得到的:

  • 使用 KeyInfo 派生凭证成功验证签名
  • 尝试建立对 KeyInfo 派生凭证的信任
  • 提供的受信任名称为空或为空,跳过名称评估
  • 尝试对不受信任的凭证进行 PKIX 路径验证:[subjectName='O=novell,OU=accessManager,CN=test-signing']
  • 对于不受信任的凭证,PKIX 路径构建失败:[subjectName='O=novell,OU=accessManager,CN=test-signing']:无法找到到请求目标的有效证书路径
  • 无法通过签名凭据的 PKIX 验证建立签名信任
  • 未能建立对 KeyInfo 派生凭证的信任
  • 无法使用任何 KeyInfo 派生凭据验证签名和/或建立信任
  • PKIX 签名验证失败,无法解析有效且可信的签名密钥
  • 元数据条目的签名信任建立失败http://idp.ppd.com/nidp/saml2/metadata
  • http://idp.ppd.com/nidp/saml2/metadata org.opensaml.saml2.metadata.provider.FilterException过滤元数据时出错:org.opensaml.saml2.metadata.provider.SignatureValidationFilter 元数据条目的签名信任建立失败.verifySignature(SignatureValidationFilter.java:312)

spring metadata certificate saml spring-saml

2
推荐指数
1
解决办法
9565
查看次数

Spring Security SAML 扩展如何处理认证后的后续请求?

我正在为我的 SP 使用 Spring Security SAML 扩展。从 IDP 对用户进行身份验证后,SP 会使用某种方法来允许后续调用不必通过 IDP 重新进行身份验证。这是如何在 Spring Security SAML 扩展中完成的?

一个相关的问题: 根据 SAML IDP 对移动用户进行身份验证

在上述相关问题的公认答案中,SP 应创建一个令牌并将其传递回客户端以供将来请求。在 Chrome 的网络工具中观看流程时,我没有看到类似的内容。我应该寻找什么?

更新 1:我得出的结论是 Spring SAML 不会以令牌的形式将任何内容传递回浏览器。它必须在服务器端跟踪用户。我可以得到确认吗?在 REST 调用的情况下,是否可以生成令牌传递回客户端?

spring-security saml-2.0 spring-saml

2
推荐指数
1
解决办法
2305
查看次数

Spring SAML 中的 SSL 对等主机名验证失败

我正在尝试将我的 Spring Boot 项目配置为针对第三方 IDP 使用 SAML 身份验证。我已经实现了使vdenotaris的配置与 SSOCircle 提供程序一起使用,现在我想将其切换到其他提供程序。

SAML 元数据端点启用了 HTTPS,我已经使用元数据中提供的证书(用于签名和加密)和 HTTP 端点提供的证书(基于此答案)创建了一个密钥库。然后,我将它们保存在证书文件 ($CERTIFICATE_FILE) 中,并使用此脚本生成我的密钥库:

keytool -delete -alias third-party -keystore $KEYSTORE_FILE -storepass $KEYSTORE_PASSWORD
keytool -import -alias third-party -file $CERTIFICATE_FILE -keystore $KEYSTORE_FILE -storepass $KEYSTORE_PASSWORD -noprompt
keytool -genkeypair -alias mycompany -keypass mycompanypass -keystore $KEYSTORE_FILE
Run Code Online (Sandbox Code Playgroud)

然后,当使用此密钥库检索 SAML 元数据时,我收到此错误:

org.opensaml.saml2.metadata.provider.MetadataProviderException: org.opensaml.saml2.metadata.provider.MetadataProviderException: Error retrieving metadata from https://third.party.provider/metadata
    at org.opensaml.saml2.metadata.provider.HTTPMetadataProvider.fetchMetadata(HTTPMetadataProvider.java:274)
    at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.refresh(AbstractReloadingMetadataProvider.java:267)
    at org.opensaml.saml2.metadata.provider.AbstractReloadingMetadataProvider.doInitialization(AbstractReloadingMetadataProvider.java:236)
    at org.opensaml.saml2.metadata.provider.AbstractMetadataProvider.initialize(AbstractMetadataProvider.java:407)
    at org.springframework.security.saml.metadata.ExtendedMetadataDelegate.initialize(ExtendedMetadataDelegate.java:167)
    at org.springframework.security.saml.metadata.MetadataManager.initializeProvider(MetadataManager.java:412)
    at org.springframework.security.saml.metadata.MetadataManager.refreshMetadata(MetadataManager.java:238)
    at org.springframework.security.saml.metadata.CachingMetadataManager.refreshMetadata(CachingMetadataManager.java:86)
    at org.springframework.security.saml.metadata.MetadataManager$RefreshTask.run(MetadataManager.java:1040)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505) …
Run Code Online (Sandbox Code Playgroud)

spring-boot spring-saml

2
推荐指数
1
解决办法
6299
查看次数

如何请求 IDP 在 AuthnResponse 中向我发送其他自定义属性?

我已经使用 spring SAML 实现了 SSO,我想知道是否有任何方法可以请求 IDP(在我的例子中为ssocircle.com)向我发送其他属性以及它已经发送的 nameID。假设我希望 IdP 向我发送已成功通过身份验证的人员的 accountID。我进行了很多搜索并找到了一些建议,例如:

重写WebSSOProfileImpl .java 中的getAuthnRequest方法,以便发送到 IdP 的 authnRequest 具有此属性集。但我不知道如何继续下去?我是否也必须使用此附加属性名称和格式修改我的 SP 元数据?如果是,我该怎么做?或者可以使用 RelayState 参数来完成某些操作吗?在这方面的任何帮助将不胜感激。

谢谢,

阿比拉什

spring-security saml single-sign-on saml-2.0 spring-saml

1
推荐指数
1
解决办法
2639
查看次数

Spring SAML 2.0 - 导入IDP的本地元数据 - MetadataProviderException

我在我的系统中实现了SAML 2.0(我扮演的是SP角色).
当我将IDP与远程元数据集成时,一切正常,这是通过URL提供给我的.
我正在尝试与向我发送元数据的IDP集成,但出于某种原因,它不起作用.

我试过了:


    @Bean
    @Qualifier("idp-ssocircle")
    public ExtendedMetadataDelegate ssoCircleExtendedMetadataProvider()
            throws MetadataProviderException {
        ClasspathResource metadata = null;
        try {
            metadata = new ClasspathResource("/saml/metadata/sso.xml");
            logger.info("Metadata Exists!!");
        } catch (Exception e) {
            logger.debug("Can't fetch metadata!!!");
        }

        Timer timer = new Timer(true);
        ResourceBackedMetadataProvider provider = new ResourceBackedMetadataProvider(timer,metadata);
        return new ExtendedMetadataDelegate(provider, extendedMetadata());
    }

我也尝试过:


    @Bean
    @Qualifier("idp-ssocircle")
    public ExtendedMetadataDelegate ssoExtendedMetadataProvider()
            throws MetadataProviderException {
        File metadata = null;
        try {
            metadata = new File("C:\\my-path\\saml\\metadata\\sso.xml");
            logger.info("Metadata Exists!!");
        } catch (Exception e) {
            logger.debug("Can't fetch metadata!!!");
        }
        FilesystemMetadataProvider …

java spring saml-2.0 spring-saml

1
推荐指数
1
解决办法
2915
查看次数

使用 WSO2 实现 spring-saml-security 时出错

我试图通过使用我的应用程序作为服务提供商和 WSO2 服务器作为 idp 来实现 SAML 2.0 是我的应用程序。我已经下载并实现了 spring-security-saml2-sample 应用程序,并将其修改为与 WSO2 服务器作为 idp 一起使用,并且示例应用程序按预期工作。

我现在尝试将 securityContext.xml 和相关配置合并到我的应用程序中,但是在元数据生成过程中遇到异常。

例外情况如下:

java.lang.IllegalArgumentException: Manager with name 'MetadataKeyInfoGenerator' does not exist
    at org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager.getFactory(NamedKeyInfoGeneratorManager.java:157)
    at org.opensaml.xml.security.SecurityHelper.getKeyInfoGenerator(SecurityHelper.java:1065)
    at org.springframework.security.saml.metadata.MetadataGenerator.generateKeyInfoForCredential(MetadataGenerator.java:255)
    at org.springframework.security.saml.metadata.MetadataGenerator.getServerKeyInfo(MetadataGenerator.java:211)
    at org.springframework.security.saml.metadata.MetadataGenerator.buildSPSSODescriptor(MetadataGenerator.java:329)
    at org.springframework.security.saml.metadata.MetadataGenerator.generateMetadata(MetadataGenerator.java:189)
    at org.springframework.security.saml.metadata.MetadataGeneratorFilter.processMetadataInitialization(MetadataGeneratorFilter.java:127)
    at org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter(MetadataGeneratorFilter.java:86)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
Run Code Online (Sandbox Code Playgroud)

我的 securityContext.xml 元数据配置如下

java.lang.IllegalArgumentException: Manager with name 'MetadataKeyInfoGenerator' does not exist
    at org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager.getFactory(NamedKeyInfoGeneratorManager.java:157)
    at org.opensaml.xml.security.SecurityHelper.getKeyInfoGenerator(SecurityHelper.java:1065)
    at org.springframework.security.saml.metadata.MetadataGenerator.generateKeyInfoForCredential(MetadataGenerator.java:255)
    at org.springframework.security.saml.metadata.MetadataGenerator.getServerKeyInfo(MetadataGenerator.java:211)
    at org.springframework.security.saml.metadata.MetadataGenerator.buildSPSSODescriptor(MetadataGenerator.java:329)
    at org.springframework.security.saml.metadata.MetadataGenerator.generateMetadata(MetadataGenerator.java:189)
    at org.springframework.security.saml.metadata.MetadataGeneratorFilter.processMetadataInitialization(MetadataGeneratorFilter.java:127)
    at org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter(MetadataGeneratorFilter.java:86)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
Run Code Online (Sandbox Code Playgroud)

我没有对示例应用程序 securityContext.xml 进行任何重大更改。有没有人遇到过类似的错误。任何帮助将非常感激。

请在下面找到我的整个 securityContext.xml

<!-- Enable …
Run Code Online (Sandbox Code Playgroud)

spring-security spring-saml

0
推荐指数
1
解决办法
2187
查看次数