【问题标题】:Using Picketlink and Wildfly for authenticate on LDAP server使用 Picketlink 和 Wildfly 在 LDAP 服务器上进行身份验证
【发布时间】:2016-09-20 08:13:52
【问题描述】:

经过一番挣扎后,我配置了 Wildfly 的 Standalone.xml 以再次验证 LDAP 服务器:

               <security-domain name="LDAPAuth" cache-type="default">
                <authentication>
                    <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required">
                        <module-option name="java.naming.provider.url" value="ldap://URL:389"/>
                        <module-option name="bindDN" value="username"/>
                        <module-option name="bindCredential" value="password"/>
                        <module-option name="baseCtxDN" value="OU=UsersDC=domain,DC=com"/>
                        <module-option name="baseFilter" value="(sAMAccountName={0})"/>
                        <module-option name="allowEmptyPasswords" value="false"/>
                    </login-module>
                </authentication>
            </security-domain>

我还配置了我的 jboss-web:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns:cr="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
  http://www.jboss.com/xml/ns/javaee
  http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
    <cr:context-root>/projectName</cr:context-root>
    <security-domain>LDAPAuth</security-domain>
    <use-jboss-authorization>true</use-jboss-authorization>
</jboss-web>

还有我的 web.xml:

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>LDAPAuth realm</realm-name>
    <form-login-config>
        <form-login-page>/login.xhtml</form-login-page>
        <form-error-page>/error.xhtml</form-error-page>
    </form-login-config>
</login-config>
...

一切正常。

下一步是使用 PicketLink。但我不知道如何配置 PicketLink 以使用我的安全域。

我可以找到以编程方式建立 LDAP 连接以及如何设置 PicketLink 以与身份和服务提供者一起工作的示例和教程。 但据我所知,我的用例包含身份提供者和服务提供者?!?所以没有我想连接的专用服务器。 LDAP 查询由我的 Wildfly 服务器处理。在每个示例中,我都能发现两台服务器都是独立的机器。我理解错了吗? 经过数小时的“谷歌搜索”,我越来越困惑。

我加了

<valve>
     <class-name>org.picketlink.identity.federation.bindings.tomcat.idp.IDPWebBrowserSSOValve</class-name>
</valve>

但我不知道如何配置 picketlink.xml。我的身份提供者的 URL 是什么? 我相信只有一部分我理解错了。有人能帮我吗? :-D

【问题讨论】:

    标签: jakarta-ee ldap wildfly picketlink securitydomain


    【解决方案1】:

    我的身份提供者的 URL 是什么?

    URL 将是您选择作为门户/IDP 的应用程序,用于管理 SAML SSO 响应和请求并将它们发送到应用程序。 IDP 将包含一个 picketlink.xml 文件,每个应用程序(在名为 SP 的 picketlink 中)还将包含一个 picketlink.xml 文件(放置在 WEB-INF-Folder 中)。

    在此处查看 Picketlink 的入门项目: https://github.com/jboss-developer/jboss-picketlink-quickstarts

    picketlink 的例子太多了...

    Picketlink 文档(如果您通读这些章节,您将了解 IDP 和 SP 定义和配置文件): https://docs.jboss.org/author/display/PLINK/Identity+Provider+Configuration

    Picketlink IDP - 简单配置:

    <PicketLink xmlns="urn:picketlink:identity-federation:config:2.1">
        <PicketLinkIDP xmlns="urn:picketlink:identity-federation:config:2.1">
            <IdentityURL>http://localhost:8080/idp/</IdentityURL>
            <Trust>
                <Domains>locahost,mycompany.com</Domains>
            </Trust>
        </PicketLinkIDP>
        <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" />
            <Handler class="org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler" />
         </Handlers>
    </PicketLink>
    

    对于您的项目,您将拥有:

    • IDP /Portal 应用程序(战争,...)

      • WEB-INF picketlink.xml
      • 带有 IDP 阀的 WEB-INF jboss-web.xml
      • 在 IDP 上,您可以使用所需的每个登录模块(默认为 jboss-web.xml 中指定的那个)
    • SP / 一些启用 SSO 的应用程序

      • WEB-INF picketlink.xml
      • 带有 SP 阀的 WEB-INF jboss-web.xml
      • 在 SP 端,您必须将安全域与登录模块 (org.picketlink.identity.federation.bindings.wildfly.SAML2LoginModule) 一起使用

    【讨论】:

    • 您的答案只有一个问题:OP 使用的是 WildFly,因此 jboss-web.xml 中没有“阀门”。我在自己的工作中发现,这使实施变得更加困难。大多数文档都引用了带参数的阀门配置,然后没有提及 WildFly 的任何相应处理程序实现。例如,完全不清楚如何使用标准 SAML 元数据文件在 WildFly 上配置纠察链接实现——您可以添加一个阀门来引用元数据文件,但这不适用于 WildFly。
    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2019-12-25
    • 2012-11-23
    相关资源
    最近更新 更多