因此,我仅对我们的网站实施一个sso。我们没有可供人们登录的任何其他Web应用程序/软件,这只是为了节省他们不必在我们的网站上输入凭据的时间,仅此而已,所以这是一个非常基本的一对一类型的SSO,根据用户的x509证书和传递给他们的数据进行身份验证,以验证用户身份。另外,我正在使用simplesamlphp。
我似乎已经正确地实现了所有功能,并且处于测试阶段。我有一些代码用来生成经过sp验证的saml请求,因此我决定用它来测试我的代码。当我发布数据时,我会不断得到未定义发行人的信息,即使它是明确定义的。它是否存在似乎没有什么区别,不断地抛出相同的错误,我无法用它来验证实际的saml,更不用说了。
我正在用我的证书正确签署请求以进行验证。我使用的代码与我们从站点登录到他们的不同SSO的效果很好。
这是我要发送的xml:
<samlp:Response ID="###" Version="2.0" IssueInstant="2018-07-17T01:16:06Z" Destination="###"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<samlp:Issuer>http://127.0.0.1</samlp:Issuer>
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:default="http://www.w3.org/2000/09/xmldsig#"
xmlns:default1="http://www.w3.org/2001/10/xml-exc-c14n#" Version="2.0"
ID="###" IssueInstant="2018-07-17T01:16:06Z">
<saml:Subject>
<saml:NameID>The NameID for this subject</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData
Recipient="###"></saml:SubjectConfirmationData>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:AttributeStatement>
<saml:Attribute Name="KeyField1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
FriendlyName="KeyField1">
<saml:AttributeValue>123456</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="Email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
FriendlyName="email_secondary">
<saml:AttributeValue></saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="LastName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
FriendlyName="last_name">
<saml:AttributeValue>Test</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="FirstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
FriendlyName="first_name">
<saml:AttributeValue>Data</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
<saml:AuthnStatement AuthnInstant="2018-07-17T01:16:06Z">
<saml:AuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
</saml:Assertion>
</samlp:Response>
我已经阅读了simplesamlphp期望发行者在响应中,而不是我在哪里,它嵌套在另一个属性中,但是似乎也没有影响它,并且引发了相同的错误。我已经尝试过samlp:Issuer标签以及saml:Issuer,什么也没有。
这是我第一次配置并将传入的SSO请求发送到我们的服务器,因此,我肯定会丢失一些东西。上面的xml是未签名的基本请求。任何人都能提供的任何帮助都将非常棒!