Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring security 斯洛。ADFS上的错误MSIS7074_Spring Security_Saml_Adfs - Fatal编程技术网

Spring security 斯洛。ADFS上的错误MSIS7074

Spring security 斯洛。ADFS上的错误MSIS7074,spring-security,saml,adfs,Spring Security,Saml,Adfs,我使用spring-security-saml2-core(1.0.0.RC2)使用SAML提供的ADFS2.0。我使用HTTP-POST绑定。但是我有一个单点注销的问题 应用程序接收LogoutRequest <samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"

我使用spring-security-saml2-core(1.0.0.RC2)使用SAML提供的ADFS2.0。我使用HTTP-POST绑定。但是我有一个单点注销的问题

应用程序接收LogoutRequest

<samlp:LogoutRequest
     xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
     Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified" 
     Destination="https://myhost:8443/my/saml/SingleLogout/alias/defaultAlias" 
     ID="_438dcef8-cd64-4e04-8e11-e87705f26b6c" 
     IssueInstant="2014-08-01T10:53:14.641Z" 
     NotOnOrAfter="2014-08-01T10:58:14.641Z" 
     Version="2.0">
     <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://adfs-server.local/adfs/services/trust</Issuer>
     <NameID xmlns="urn:oasis:names:tc:SAML:2.0:assertion">nata</NameID>
     <samlp:SessionIndex>_34e48828-a6b5-47c2-96fd-595f9d0a88b7</samlp:SessionIndex>
</samlp:LogoutRequest>

https://adfs-server.local/adfs/services/trust
娜塔
_34e48828-a6b5-47c2-96fd-595f9d0a88b7
并发送LogoutResponse

<saml2p:LogoutResponse 
     xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" 
     Destination="https://adfs-server.local/adfs/ls/" 
     ID="a2ddb014h7d7558f3cd5hfge981bicf" 
     InResponseTo="_438dcef8-cd64-4e04-8e11-e87705f26b6c" 
     IssueInstant="2014-08-01T10:53:43.808Z" 
     Version="2.0">
     <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">https://myhost:8443/my/saml/metadata/alias/defaultAlias</saml2:Issuer>
     <saml2p:Status>
             <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
     </saml2p:Status>
 </saml2p:LogoutResponse>

https://myhost:8443/my/saml/metadata/alias/defaultAlias
但是ADFS抛出关闭SAML端点的错误:

MSIS7074:WebSSO配置文件的SAML身份验证请求必须指定没有NameQualifier、SPNameQualifier或SPProviderId属性的颁发者

我的单次注销配置:

<bean id="samlFilter" class="org.springframework.security.web.FilterChainProxy">
    <security:filter-chain-map request-matcher="ant">
        <security:filter-chain pattern="/saml/login/**" filters="samlEntryPoint"/>
        <security:filter-chain pattern="/saml/logout/**" filters="samlLogoutFilter"/>
        <security:filter-chain pattern="/saml/metadata/**" filters="metadataDisplayFilter"/>
        <security:filter-chain pattern="/saml/SSO/**" filters="samlWebSSOProcessingFilter"/>
        <security:filter-chain pattern="/saml/SingleLogout/**" filters="samlLogoutProcessingFilter"/>
    </security:filter-chain-map>
</bean>
<!-- Filter processing incoming logout messages -->
<!-- First argument determines URL user will be redirected to after successful global logout -->
<bean id="samlLogoutProcessingFilter" class="org.springframework.security.saml.SAMLLogoutProcessingFilter">
    <constructor-arg type="org.springframework.security.web.authentication.logout.LogoutSuccessHandler" ref="successLogoutHandler"/>
    <constructor-arg>
        <array value-type="org.springframework.security.web.authentication.logout.LogoutHandler">
            <ref bean="logoutHandler"/>
        </array>
    </constructor-arg>
</bean>
<bean id="successLogoutHandler" class="org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler">
    <property name="defaultTargetUrl" value="/"/>
</bean>
<!-- Logout handler terminating local session -->
<bean id="logoutHandler" class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler">
    <property name="invalidateHttpSession" value="false"/>
</bean>

:-)哎哟,这太令人困惑了。。。。。和交叉张贴

首先:S2008(R2)和S2012上的我的ADFS服务器2.x没有该消息。所以我认为它不可能是ADFS 2.0。我假设您正在Windows server 2012R2(从未标识为2.0)上的ADFS服务器上工作:-(

消息(关于AuthnRequest与LogoutResponse)似乎完全不合适。看起来您在S2012R2上遇到了ADFS的一个小错误(超级混乱)。因为在这种情况下ADFS 2.0会说一些其他的话。它会说[在ValidateSignatureRequirements(SamlMessage)方法中]: “MSIS014:使用SAML HTTP重定向或HTTP POST绑定时,必须对SAML LogoutRequest和LogoutResponse消息进行签名。”


因此,您需要在Microsoft上提交一个bug(参考此描述可能会对您有所帮助)。同时,您应该要求SP签署LogoutResponse。我有点惊讶ADFS没有签署LogoutRequest。它通常会签署LogoutRequest。

paullem是对的。我们的Windows服务器是2012 R2,ADFS 3.0

SAML LogoutRequest消息必须签名。错误已修复。我们在ExtendedMetadata中的“true”中设置了参数RequireLogoutResponsed

<bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
    <property name="local" value="false" />
    <property name="idpDiscoveryEnabled" value="false" />
    <property name="requireLogoutResponseSigned" value="true"/> 
</bean>


您是在SDP上还是在IP上这样做的?我也有同样的错误,但找不到解决方案,抱歉,但我不理解您的问题。我们使用了SAML协议。这是我们使用ADFS的spring上下文的一部分。也许Cito问这个片段是否在
org.springframework.security.SAML.metadata.MetadataGeneratorFilter中(SDP侧)或在IDP元数据配置中。