1

在一个基于 java struts 的 Web 项目中,我使用 SAML 身份验证、使用 picketlink 库实现了 SSO(单点登录),部署在 Jboss AS 7.1 上。它的工作没有任何问题。

我需要在另一个基于 Struts 的 Web 项目中实现 SSO,该项目在 Tomcat 7 上运行。本例中的 IDP 是 Azure AD。我已按照文章SAML with Tomcat and PicketLink中给出的步骤进行操作。我还在 Azure AD 中配置了应用程序。在 picketlink conif 文件中提到了 IDP 和 SP URL,如下所示:

<PicketLink xmlns="urn:picketlink:identity-federation:config:2.1">
<PicketLinkSP xmlns="urn:picketlink:identity-federation:config:2.1" BindingType="POST">
    <IdentityURL>${idp.url::https://login.microsoftonline.com/29b0-4f33-a90e/saml2}</IdentityURL>
    <ServiceURL>${myapp.url::https://appserver.mydomain.com:10503/myapp/internal/}</ServiceURL>
    <Trust>
        <Domains>localhost,mydomain.com</Domains>
    </Trust>
</PicketLinkSP>
<Handlers xmlns="urn:picketlink:identity-federation:handler:config:2.1">
    <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2IssuerTrustHandler" />
    <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2LogOutHandler" />
    <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2AuthenticationHandler">
        <Option Key="ROLE_KEY" Value="http://schemas.microsoft.com/ws/2008/06/identity/claims/role"/>
    </Handler>
    <Handler class="org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler" />
</Handlers>

我已经针对上述文件中配置的应用程序提到了从 Azure AD 获得的 SAML-P 端点。

${idp.url:: https://login.microsoftonline.com/29b0-4f33-a90e/saml2 }

进行所有这些更改后,它无法正常工作。看起来我需要从 federation-metadata 文件中获取证书并按照一些步骤启用 SSL 并使其准备好让 SAML 理解。我不能这样做。我不知道我的路径是否正确。您能否给我一个示例程序或步骤来完成此任务。

4

1 回答 1

1

我能够自己解决这个问题。有2个问题。

应用程序未在 Azure 中正确配置,因此身份验证未到达 Azure。在对配置进行了一些研究之后,我能够做到这一点。

关于证书安装,我们可以从 Azure 联合选项卡下载证书,然后按照定期证书更新,然后在应用程序服务器中引用相同的内容。

我正在努力记录这一点。完成后,我会将它们张贴在这里

于 2018-02-21T07:09:23.183 回答