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

Spring SAML示例:不支持SSOCircle SHA256

凌朗
2023-03-14

我正在尝试使用SSOCircle和默认密钥库的Spring SAML Sample项目。将SP元数据导入SSOCircle后,SSO正常工作。

现在,我想把加密算法从SHA-1改为RSA SHA-256。所以我扩展了SAMLBootstrap类,如下所示:

public final class CustomSAMLBootstrap extends SAMLBootstrap {  

  @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        super.postProcessBeanFactory(beanFactory);
        BasicSecurityConfiguration config = (BasicSecurityConfiguration) Configuration.getGlobalSecurityConfiguration();
        config.registerSignatureAlgorithmURI("RSA", SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
        config.setSignatureReferenceDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA256);
    }

这里还有扩展元数据配置

   <!-- Extended metadata properties -->
<bean id="extendedMetadataSP" class="org.springframework.security.saml.metadata.ExtendedMetadata">
    <property name="local" value="true"/>
    <property name="securityProfile" value="metaiop"/>
    <property name="sslSecurityProfile" value="pkix"/>
    <property name="signingKey" value="apollo"/>
    <property name="encryptionKey" value="apollo"/>
    <property name="signMetadata" value="true" />
    <property name="signingAlgorithm" value="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
    <property name="idpDiscoveryEnabled" value="true"/>
    <property name="idpDiscoveryURL" value="${entityBaseURL}/saml/discovery"/>
    <property name="idpDiscoveryResponseURL" value="${entityBaseURL}/saml/login?disco=true"/>

</bean>

所以我通过org.springframework.security.saml.metadata.MetadataGeneratorbean重新生成元数据,并尝试重新上传新生成的SP xml。虽然SSOCircle会因007错误代码而失败。

在这一点上,我不确定是否还有一个额外的步骤要完成,以便在SSOCIRCE上使用sha256?

有人能帮忙吗?

编辑:

我在将元数据上传到SSOCircle时遇到的问题,我相信它与EntityDescriptor部分有关,其中签名算法指定为SHA256,如下所示:

 <?xml version="1.0"?>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
    <ds:Reference URI="#urn_com_apakgroup_bristol">
        <ds:Transforms>
            <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
        <ds:DigestValue>mAT5iN6IWyTCQiPplFmOq4vu8SUzCBfpAC4XBOu2+eM=</ds:DigestValue>
    </ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>i6hH............bA==</ds:SignatureValue>
<ds:KeyInfo>
    <ds:X509Data>
        <ds:X509Certificate>MIIDZTCCA............eVdvh</ds:X509Certificate>
    </ds:X509Data>
</ds:KeyInfo>
</ds:Signature>

将signMetadata更改为false,不幸的是,这并没有什么不同。

<property name="signMetadata" value="false" />

SAML响应:

2016-09-13 15:03:06,786 DEBUG org.opensaml.xml.security.SigningUtil:115 - Computing signature over input using private key of type RSA and JCA algorithm ID SHA256withRSA
2016-09-13 15:03:06,802 DEBUG org.opensaml.xml.security.SigningUtil:123 - Computed signature: 8b4...dfa9
2016-09-13 15:03:06,802 DEBUG opensaml.saml2.binding.encoding.HTTPRedirectDeflateEncoder:251 - Generated digital signature value (base64-encoded) i0...==
2016-09-13 15:03:06,803 DEBUG PROTOCOL_MESSAGE:74 - 
<?xml version="1.0" encoding="UTF-8"?><saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="http://localhost:8080/saml/SSO" Destination="https://idp.ssocircle.com:443/sso/SSORedirect/metaAlias/publicidp" ForceAuthn="false" ID="ac8eeg2j9d932hh4fe90fa71844e00" IsPassive="false" IssueInstant="2016-09-13T14:03:06.775Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0">
   <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">...[my-sp]...</saml2:Issuer>
</saml2p:AuthnRequest>

2016-09-13 15:03:06,803 DEBUG opensaml.ws.message.encoder.BaseMessageEncoder:56 - Successfully encoded message.
2016-09-13 15:03:06,804 DEBUG springframework.security.saml.storage.HttpSessionStorage:93 - Storing message ac8eeg2j9d932hh4fe90fa71844e00 to session C17D8A94DED2F79BDD92CBF7A99462C6
2016-09-13 15:03:06,805  INFO springframework.security.saml.log.SAMLDefaultLogger:127 - AuthNRequest;SUCCESS;0:0:0:0:0:0:0:1;...[my-sp]...;https://idp.ssocircle.com;;;

共有1个答案

锺博耘
2023-03-14

错误7的原因是无法验证元数据的签名。这在: how-to部分“签名的元数据可能会导致验证问题。我们建议删除签名作为最快的解决方法。”

您已启用元数据签名:

<property name="signMetadata" value="true" /> 

把它变成“假”。

 类似资料:
  • 我有一个使用spring security和mvc框架开发的门户应用程序。此门户应用程序连接到IDP(使用Spring security和Spring saml开发)进行身份验证。如果用户身份验证成功,用户将被导航到主页,其中为外部应用程序提供了多个链接……当用户单击应用程序链接时,用户应成功导航到相应的应用程序,而无需质疑登录页面。 其他应用程序是使用strut和Spring Security开

  • DataSource 接口 不支持 timeout 相关操作 Connection 接口 不支持存储过程,函数,游标的操作 不支持执行 native SQL 不支持 savepoint 相关操作 不支持 Schema/Catalog 的操作 不支持自定义类型映射 Statement 和 PreparedStatement 接口 不支持返回多结果集的语句(即存储过程,非 SELECT 多条数据) 不

  • 本文向大家介绍Vue CLI3 如何支持less的方法示例,包括了Vue CLI3 如何支持less的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Vue CLI3 如何支持less的方法示例,分享给大家,具体如下: 安装方式: 或者 大家在编写 .vue 文件的 style 的时候多会选择采用预编译样式来加速开发效率 这里我们提一下,如何在新版 Vue CLI 中增加对 less

  • 本文向大家介绍Nginx下支持Thinkphp URL Rewrite的配置示例,包括了Nginx下支持Thinkphp URL Rewrite的配置示例的使用技巧和注意事项,需要的朋友参考一下 概述 Nginx服务器现在已经成为相当流行的开源Web服务器,很多生产环境也都在使用Nginx服务器。现在做项目大多数时候都是在使用ThinkPHP,但是Nginx默认不支持ThinkPHP的pathin

  • 我正在使用一个表单,当我点击提交时,它会点击下面的控制器。 我知道这个方法被击中了,因为我在其中放置了断点。然而,我仍然得到了上面提到的错误。 编辑:我已经发布了整个控制器,而不仅仅是方法。 Edit2:我的html表单如下: 我错过了什么?非常感谢任何帮助。

  • 问题是从dict1开始的= 这就是数据帧的外观: 打印(len_c):长度: 550, dtype: int64 打印(len_a_b):长度:6646,数据类型:int64 正如你在标记化之后看到的,我们这里有100%的整数,但是python仍然说它没有。当数据不是两个完整的数据帧时,同样的函数也适用。