2016-05-31 40 views
0

嘿,我想用我的服务提供商配置IDP但是当SAML响应来自IDP我在服务提供商NameID元素必须作为主体的一部分

org.opensaml.common.SAMLException得到这个错误:NameID元素必须存在作为响应消息的主题的一部分,请启用它在IDP配置 在org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse

我在IDP配置填充NameID - 元数据XML

<NameID>urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName</NameID> 
      <NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat> 
       <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat> 

here is the whole response 


<?xml version="1.0" encoding="UTF-8"?><saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://localhost:8082/saml/SSO" ID="_9129c7121ce71d24e32d5dfe527bd760" InResponseTo="a1eei99dgc9442d72a98h62i9d179j9" IssueInstant="2016-05-31T15:52:04.736Z" Version="2.0"> 
    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">idp.test.com/idp/shibboleth</saml2:Issuer> 
    <saml2p:Status> 
     <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/> 
    </saml2p:Status> 
    <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"> 
     <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="_4fcade81e4aae59bfa099e692158a687" Type="http://www.w3.org/2001/04/xmlenc#Element"> 
     <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"/> 
     <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
      <xenc:EncryptedKey Id="_bd99cfd23b6342cf0b4adf7fa03d203f" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> 
       <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> 
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
       </xenc:EncryptionMethod> 
       <ds:KeyInfo> 
        <ds:X509Data> 
        <ds:X509Certificate></ds:X509Certificate> 
        </ds:X509Data> 
       </ds:KeyInfo> 
       <xenc:CipherData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> 
        <xenc:CipherValue>ssss</xenc:CipherValue> 
       </xenc:CipherData> 
      </xenc:EncryptedKey> 
     </ds:KeyInfo> 
     <xenc:CipherData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> 
      <xenc:CipherValue>!!!</xenc:CipherValue> 
     </xenc:CipherData> 
     </xenc:EncryptedData> 
    </saml2:EncryptedAssertion> 
</saml2p:Response> 

我不明白什么是和填充NameID如何配置 有回报用户的身份到SP的两种方式,我会感谢您的帮助 TNX

+0

您是否检查了IDP配置是否在声明规则中正确配置了NameId字段? – ManojP

+0

据我所知,声明规则是活动目录的一部分,我不使用AD。我有像SP和身份提供者那样的web应用程序(spring saml)。你知道什么是nameID,我需要在哪里配置。我找不到任何好的文档。谢谢 –

回答

1

在SAML世界。 “主题”区域或“属性声明”区域。许多较新的SP配置在属性语句中使用属性,但仍应填充主题区域。如果SP使用属性获取用户身份,则将Shibboleth配置为将transientId返回给相关SP。否则,您需要参考SP文档/配置或元数据来确定SP支持哪些NameID格式,并配置Shibboleth以适当的格式返回适当的值。

一个好的后续阅读是一个shib用户的线程:http://shibboleth.1660669.n2.nabble.com/No-NameID-released-td7605312.html

+0

TNX的帮助下,我的用户transientId在属性解析器和 in atribute filter –

相关问题