Authentication 单点登录认证

Authentication 单点登录认证,authentication,single-sign-on,openam,Authentication,Single Sign On,Openam,我需要一些关于SSO实现的指导。 我已经成功地完成了两个SAML2实现,但这一个实现中缺少了一些东西:-O我相信这是次要的,但我不确定我缺少了什么,并且我在代理端的日志中没有看到太多信息:-/ 因此: 国内流离失所者发起 我是使用OpenAm 10的SP 使用J2EE代理 同样的配置也适用于prod和其他客户端 SAML2实现 跨域是启用的 证书加载到客户端IDP元数据中 问题是当我从供应商那里得到响应时,CDCSERVLET会将它们重定向到OpenAm的登录页面。。我不明白为什么他们没有经

我需要一些关于SSO实现的指导。 我已经成功地完成了两个SAML2实现,但这一个实现中缺少了一些东西:-O我相信这是次要的,但我不确定我缺少了什么,并且我在代理端的日志中没有看到太多信息:-/

因此:

  • 国内流离失所者发起
  • 我是使用OpenAm 10的SP
  • 使用J2EE代理
  • 同样的配置也适用于prod和其他客户端
  • SAML2实现
  • 跨域是启用的
  • 证书加载到客户端IDP元数据中
问题是当我从供应商那里得到响应时,CDCSERVLET会将它们重定向到OpenAm的登录页面。。我不明白为什么他们没有经过认证

答复如下:

<Response ID="_FAD290A87DB14BC4A8A8F435DEBDEBB3" Version="2.0" IssueInstant="2015-12-31T20:59:34.1012911Z" Destination="https://sso.com:443/sp/Consumer/metaAlias/xxx-test/sp" xmlns="urn:oasis:names:tc:SAML:2.0:protocol">
        <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">xxx</Issuer>
        <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
                    <SignedInfo>
                               <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                                <Reference URI="#_FAD290A87DB14BC4A8A8F435DEBDEBB3">
                                            <Transforms>
                                                        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                                                        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                            </Transforms>
                                            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                                            <DigestValue>HPTUTyPjegeyjDW5lmMb8ggbwas=</DigestValue>
                                </Reference>
                    </SignedInfo>
                    <SignatureValue>4Ek0xpDPj5Q==</SignatureValue>
        </Signature>
        <Status>
                    <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
        </Status>
        <Assertion Version="2.0" ID="_BCA1E13E205E4CDCB7AB903E90606DBD" IssueInstant="2015-12-31T20:59:34.1012911Z" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
                    <Issuer>xxx</Issuer>
                    <Subject>
                                <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified">100</NameID>
                                <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
                                            <SubjectConfirmationData NotOnOrAfter="2015-12-31T21:04:34.1948917Z" Recipient="https://sso.com:443/sp/Consumer/metaAlias/xxx-test/sp"/>
                                </SubjectConfirmation>
                    </Subject>
                    <Conditions NotBefore="2015-12-31T20:54:34.1012911Z" NotOnOrAfter="2015-12-31T21:04:34.1012911Z">
                                <AudienceRestriction>
                                            <Audience>xxx-test:saml2</Audience>
                                </AudienceRestriction>
                    </Conditions>
                    <AuthnStatement AuthnInstant="2015-12-31T20:59:34.1012911Z">
                                <SubjectLocality Address="000.0.0.000"/>
                                <AuthnContext>
                                            <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
                                </AuthnContext>
                    </AuthnStatement>
                    <AttributeStatement>
                                <Attribute Name="AIN">
                                            <AttributeValue xsi:type="xsd:string">100</AttributeValue>
                                </Attribute>
                    </AttributeStatement>
        </Assertion>

xxx
HPTUTyPjegeyjDW5lmMb8ggbwas=
4Ek0xpDPj5Q==
xxx
100
xxx测试:saml2
urn:oasis:name:tc:SAML:2.0:ac:classes:Password
100

我在该断言中指出的是:

  • 签名中没有证书(我的所有客户都有 在与证书一起的签名中)
在SP方面,我确保:

  • 身份验证上下文设置为Password以匹配断言
  • 如果NameId未指定,我将禁用联合,并将NameId用作UserId
所有这些对我来说都是好的,我不明白为什么客户端会被重定向到OpenAM的登录页面

任何帮助都会很棒

谢谢

编辑:

因此,我让供应商修改了断言以发送
xxxx
我在域中添加了一个用户,并在我的SP配置中将其作为临时用户使用,但它导致了相同的问题

当nameid格式设置为unspecified时,我在领域中创建了100个用户作为主题,但它仍然不起作用:-/

编辑3:以下是有关会话的一些信息:

<SessionNotification vers="1.0" notid="117627">
<Session sid="AQIC5wM2LY4SfcxfxdL6szA_aGlQEkFtHROifZHX_VpqHag.*AAJTSQACMDIAAlNLABM3OTI1OTk2NjE0MDA1MjA2MTcw*" stype="user" cid="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org" cdomain="dc=openam,dc=forgerock,dc=org" maxtime="60" maxidle="30" maxcaching="5" timeidle="1800" timeleft="1529" state="destroyed">
<Property name="CharSet" value="UTF-8"></Property>
<Property name="UserId" value="user-test"></Property>
<Property name="FullLoginURL" value="/sp/UI/Login?ForceAuthn=false&amp;MinorVersion=0&amp;RequestID=see601a9040131cc9c9d09947cf1addab3e4df292&amp;refererservlet=https%3A%2F%2Fs-----6ForceAuthn%3Dfalse%26ProviderID%3Dhttps%253A%252F%252Fstagingcng.inspirus365.com%253A443%252F%253FRealm%253D%25252F%26MinorVersion%3D0%26Federate%3Dfalse%26IssueInstant%3D2016-01-12T21%253A30%253A22Z%26MajorVersion%3D1&amp;IssueInstant=2016-01-12T21%3A30%3A22Z&amp;MajorVersion=1"></Property>
<Property name="successURL" value="/sp/console"></Property>
<Property name="cookieSupport" value="true"></Property>
<Property name="AuthLevel" value="0"></Property>
<Property name="SessionHandle" value="shandle:AQIC5wM2LY4SfcwZfnMFJVMF0olMGhmq-Nmqw_BMxoVv4AA.*AAJTSQACMDIAAlNLABM3OTI1OTk2NjE0MDA1MjA2MTcw*"></Property>
<Property name="UserToken" value="user-test"></Property>
<Property name="loginURL" value="/sp/UI/Login"></Property>
<Property name="Principals" value="user-test"></Property>
<Property name="Service" value="ldapService"></Property>
<Property name="sun.am.UniversalIdentifier" value="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org"></Property>
<Property name="amlbcookie" value="01"></Property>
<Property name="Organization" value="dc=openam,dc=forgerock,dc=org"></Property>
<Property name="Locale" value="en_US"></Property>
<Property name="HostName" value="205."></Property>
<Property name="AuthType" value="DataStore"></Property>
<Property name="Host" value="205."></Property>
<Property name="UserProfile" value="Ignore"></Property>
<Property name="clientType" value="genericHTML"></Property>
<Property name="AMCtxId" value="a0749ff708bff14202"></Property>
<Property name="SessionTimedOut" value="1452636294"></Property>
<Property name="authInstant" value="2016-01-12T21:30:33Z"></Property>
<Property name="Principal" value="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org"></Property>
</Session>

打动我的是
(我有来自其他供应商的联盟:0)
我确信这个问题是因为用户无法获得针对OpenAM的身份验证。

我假设在服务提供商端(OpenAM)关闭了自动联合,并且您正在使用NameID作为用户ID

收到断言后,SP帐户映射器将尝试在定义SP的领域的数据存储中查找具有该用户ID的用户。您可以通过访问控制>您的领域>数据存储>您的数据存储找到映射到用户ID的LDAP属性。查找名为“LDAP用户搜索属性”的属性

在这种特殊情况下,NameID值为“100”,因此,帐户映射器将尝试在数据存储中查找具有该用户Id的用户。例如,如果“LDAP用户搜索属性”设置为“uid”,则帐户映射器将尝试在目录中查找“uid”等于“100”的用户

因此,我的假设是,帐户映射器无法将传入的断言映射到有效用户,它会将您带到OpenAM的登录页面


希望这有帮助。

我想出来了。。。事实证明,所有设置都是正确的,但我们的合作伙伴将断言发布到中继/目标URL,而不是消费者URL…

您好Guillermo!谢谢你的帮助:)我用未指定的代码禁用了自动联盟。我试着使用transient,与我在该领域中设置的特定用户一起,看看它是否有效。我和几个合伙人一起工作。我认为你是对的,我相信认证不是针对数据存储进行的。似乎即使使用瞬态,它也不起作用:-/仍在获取该页面!有没有办法从响应中手动调用我的SP,这样我就可以在没有合作伙伴的情况下测试不同的组合?在OpenAM上启用“消息”级调试日志并检查联合调试日志。它将告诉您为什么SAML WebSSO没有成功,因此没有创建OpenAM SSO会话,这反过来使CDCServlet重定向用户进行身份验证。您好Bernhard,感谢您的参与!是的,这是我经常做的第一件事,在代理和OpenAM上打开日志。联盟中没有任何东西,代理也不跟我说话:-/我没有看到任何特别的东西我用日志编辑了问题,以防万一!你不必先看探员。使用代理是使用OpenAM实现基于Web的SSO的专有方法。SAML是实现基于Web的SSO的基于标准的方法。你在这里是混血儿。首先,把注意力集中在事物的同一面。SP必须处理IdP发出的SAML AuthnRequest响应。美联储将对此作出回应