NameID元素必须作为Subject的一部分出现

时间:2016-05-31 16:13:01

标签: saml-2.0 spring-saml shibboleth

嘿我正在尝试使用我的服务提供商配置IDP但是当来自IDP的saml响应时,我的服务提供商出现了此错误

org.opensaml.common.SAMLException:NameID元素必须作为Response消息中Subject的一部分出现,请在IDP配置中启用它     在org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse

我在idp中配置了NameId - metadata 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>

我不喜欢&#39;了解nameID是什么以及如何配置它 我将感谢你的帮助 TNX

1 个答案:

答案 0 :(得分:1)

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

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