我在使用SimplesamlPHP实现IdP发起的登录时遇到了麻烦。了解我必须从留档中做什么并不是最容易的事情。
我将用户重定向到IdP服务器,登录后,服务器向SP发送一个XML文件,其中包含电子邮件用户的地址、ID和其他数据。这看起来像是一次成功的登录,但是此时我不知道如何处理这个XML。我应该自己解析它还是使用simplesaml?我如何验证签名?
以下是我收到的XML:
<samlp:Response Destination="http://example.com/auth/acs" ID="HK1goP6OuzQs2Xrd-CN9gAkRt0Z" IssueInstant="2016-05-25T13:52:32.075Z" Version="2.0" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">Stage-az:sp:MediEventsregapp</saml:Issuer>
<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="#HK1goP6OuzQs2Xrd-CN9gAkRt0Z">
<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>anIASGQuZD+Z7oBVc/VJ9TuTDCcddHOkUHJuo4KGE4o=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>Pw5N1U+IxXAkCARDLFHkSyinhCqy5jJ8ljkJRfVSCzWl9z/gZb87aSGs+1XH+yJJs9wOKlSisnaNBHDOPocoweqXMCePskQp0d46GX8FKLKrFPwNeyta/MnC+y2ujT/mRbd8znTkXt9ZKS2WNZbQuAgRP+4mIh+C4R0J7xjzBgPhJR+IpaAeSlFuI3oS2ggh5+fe68BQtreEAcwc4ehbt93SQA5ryXgVAWRX4COeuETj/4t5dVhk1f34JdUSO0n13U6xRheAyGJJ7njRMntNQCAGkcB6F7GEK0bEnLFTfImYhJOascURyjWUnCqyZbWt5SBKUNdWL1P90W2b17eqmg==</ds:SignatureValue>
</ds:Signature>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ID="VFBGJiVRjw.GE4s8KVI2G0oyIOv" IssueInstant="2016-05-25T13:52:32.106Z" Version="2.0" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:Issuer>Stage-az:sp:MediEventsregapp</saml:Issuer>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">john.smith@example.com</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData NotOnOrAfter="2016-05-25T13:57:32.106Z" Recipient="http://example.com/auth/acs"/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions NotBefore="2016-05-25T13:47:32.106Z" NotOnOrAfter="2016-05-25T13:57:32.106Z">
<saml:AudienceRestriction>
<saml:Audience>Stage-az:sp:MediEventsregapp</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2016-05-25T13:52:32.106Z" SessionIndex="VFBGJiVRjw.GE4s8KVI2G0oyIOv">
<saml:AuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement>
<saml:Attribute Name="PRID" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
<saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">kyjh364</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
simpleSAMLphp提供了验证和处理SAMLResponse所需的函数。
IdP应该向保存状态的服务提供商断言消费者URL发送SAML响应。您需要做的就是创建一个php文件并使用以下方法:https://simplesamlphp.org/docs/stable/simplesamlphp-sp-api
这个问题是在基于SAML的IDP发起的SSO领域。作为一个POC,我有两个keycloak实例,比如keycloak1和KeyCloak2。我想做到以下几点: > 身份验证将在keycloak1上完成 keycloak1然后指向keycloak2以访问keycloak2客户端应用程序。 b)单击上面创建的saml客户端-->安装-->导出saml元数据IDPSSODescriptor并保存为sam
我使用SPRING SAML实现并充当SP(例如:ALPHA)。我能够执行SP启动的SSO,并能够使用IDP对用户进行身份验证。此实现中没有问题。 但在我的应用程序中,我需要访问另一个与同一IDP链接的SP(例如:BETA)url。ALPHA和BETA服务提供商都受到同一IDP的信任。在这种情况下,在通过SP INIT SSO使用IDP对用户进行ALPHA身份验证后,当BETA SP URL发生重
目前,我们的identity server安装了Sustainsys/Saml2扩展,允许三方客户端通过sso登录到我们的产品,其中客户endpoint击我们的登录页面启动请求。 我们现在有一个客户,您希望在其自己的软件中添加链接以启动该过程,创建ldp启动的请求。 我的问题是如何使用identity server和Saml2AuthExtensions实现这一点。我已经看过了,我看不到任何额外的
Webapp #1 有一个指向 webapp #2 的按钮。当我们的用户单击该按钮时,他们应该被重定向到webapp #2,并自动登录。 集成是 SAML,因此 webapp #1(IDP)向 webapp #2(SP)发送 SAML“请求”,该请求返回重定向 URL,webapp #1 重定向到它。 SP给了我一个HTTP POST的URL,一个通过“电子邮件”属性识别用户的断言,所以我产生了这
我已经配置了OpenAM IdP和SP。我正在纠结于IdP发起的SSO URL和SP发起的SSO URL。我使用以下格式的IdP发起的单点登录网址。但是我得到错误< code >服务提供商ID为空。 http://testtestidam.com:8080/openam/idpssoinit?metaAlias=/realm1/idp 任何人都可以帮忙吗?
我有一个服务提供商的应用程序。是否可以使用OpenID Connect实现由Idp启动的SSO 对于Idp启动的SSO,似乎只能使用SAML,对吗?或者有没有办法让OpenID连接也能正常工作?我正在考虑使用一些开源工具,比如KeyClope或OneLogin toolkit等。。 非常感谢。