使用Picketlink和Wildfly在LDAP服务器上进行身份验证

时间:2016-05-23 12:32:56

标签: java-ee ldap wildfly picketlink securitydomain

经过一番努力之后,我配置了我的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服务器处理。在每个例子中,我都可以发现两台服务器都是分离的机器。我明白了什么问题吗? 经过几个小时的'googleing'后,我变得越来越困惑。

我添加了

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

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

1 个答案:

答案 0 :(得分:0)

  

我的身份提供商的网址是什么?

该URL将是您选择作为门户/ IDP管理SAML SSO响应和请求并将其发送到应用程序的应用程序。 IDP将包含一个picketlink.xml文件,每个Application(在名为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 App(战争......)

    • 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)