Skip to main content

LDAP-Gruppenmodul: DN ohne USER_LOGIN

Comments

4 comments

  • Zendesk API User
    Author: isenberg - 8/28/2015 8:53

    Die übliche Lösung bei uns für den Fall ist, das Attribut-Modul zu nutzen, weil dies über den Modus "search_compare" eine Suche im LDAP-Baum bietet, die das LDAP-Groups-Modul nicht unterstützt. Das nachfolgend konfigurierte LDAP-Groups-Modul verwendet dann das durch das Attribut-Modul gefunden Benutzerobjekt im LDAP um die Gruppen auszulesen. Insgesamt ergibt sich dann folgendes WEB-INF/firstpersonalisation.xml, wenn man im FirstSpirit-ServerManager die Konfiguration über die GUI zusammenstellt:

    <FIRSTPERSONALISATION>

              <LOGIN_PACKAGES>

                        <LOGIN_PACKAGE name="Kerberos" priority="0">

                                  <LOGIN_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.login.KerberosLoginModule" name="Kerberos Login">

                                            <PARAMETER_ENTRY name="userAgents" value=".*" />

                                            <PARAMETER_ENTRY name="useFullPrincipal" value="false" />

                                  </LOGIN_MODULE>

                                  <ATTRIBUTES_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.attributes.LDAPAttributesModule" name="LDAP">

                                            <PARAMETER_ENTRY name="bind_dn" value="CN=ldaprequest,CN=Users,DC=e-spirit,DC=de" />

                                            <PARAMETER_ENTRY name="mode" value="search_compare" />

                                            <PARAMETER_ENTRY name="host_url" value="ldap://ldap1.e-spirit.de" />

                                            <PARAMETER_ENTRY name="search.base_dn" value="DC=e-spirit,DC=de" />

                                            <PARAMETER_ENTRY name="bind_password" value="ldaprequest" />

                                            <PARAMETER_ENTRY name="user_dn" value="not-used" />

                                            <PARAMETER_ENTRY name="search.filter" value="(sAMAccountName=$USER_LOGIN$)" />

                                            <PARAMETER_ENTRY name="attributes" value="mail,displayName,telephoneNumber" />

                                            <PARAMETER_ENTRY name="ssl" value="false" />

                                  </ATTRIBUTES_MODULE>

                                  <GROUPS_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.groups.LDAPGroupsModule" name="LDAP Group">

                                            <PARAMETER_ENTRY name="bind_dn" value="cn=ldaprequest,cn=users,dc=e-spirit,dc=de" />

                                            <PARAMETER_ENTRY name="host_url" value="ldap://ldap1.e-spirit.de" />

                                            <PARAMETER_ENTRY name="bind_password" value="ldaprequest" />

                                            <PARAMETER_ENTRY name="user_dn" value="not-used" />

                                            <PARAMETER_ENTRY name="ssl" value="false" />

                                            <PARAMETER_ENTRY name="group_attribute" value="memberOf" />

                                  </GROUPS_MODULE>

                        </LOGIN_PACKAGE>

              </LOGIN_PACKAGES>

              <GLOBAL_CONFIG_PARAMETERS>

                        <PARAMETER_ENTRY name="useDummyUser" value="false" />

                        <PARAMETER_ENTRY name="activateEveryoneGroup" value="true" />

                        <PARAMETER_ENTRY name="everyoneGroupString" value="" />

                        <PARAMETER_ENTRY name="ssoCookieName" value="" />

                        <PARAMETER_ENTRY name="ssoCookieLifetime" value="" />

                        <PARAMETER_ENTRY name="ssoCookieDomain" value="" />

                        <PARAMETER_ENTRY name="log4JFallbackConfigFile" value="" />

              </GLOBAL_CONFIG_PARAMETERS>

    </FIRSTPERSONALISATION>

    0
  • Zendesk API User
    Author: kannengi - 8/31/2015 9:16

    Hallo Herr Isenberg,

    vielen Dank, funktioniert tipptopp!

    Jetzt hätte ich noch eine Zusatzfrage:

    Ich habe ein zweites Loginpackage konfiguriert (priority 1), für den Fall, dass Kerberos nicht verfügbar ist.

    Dann soll ein username/password Formular kommen (RequestParameter) und mit den Eingaben gegen das LDAP authentifiziert werden.

    Ich habe das LDAP-Authentifizierungsmodul genauso wie das Attribut-Modul im Kerberos-Package konfiguriert (authentication "search-bind") - aber die Authentisierung schlägt fehl (401).

    Im Konfigurationsdialog der Web-Komponente funktioniert s aber mit dem Testen" Button.

    Habe ich noch etwas falsch konfiguriert? Es gibt einen Parameter "fsp-authProp.properties", dessen Zweck mit nicht klar ist.

    Hier meine Konfiguration:

    <FIRSTPERSONALISATION>

        <LOGIN_PACKAGES>

            <LOGIN_PACKAGE name="Kerberos" priority="0">

                <LOGIN_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.login.KerberosLoginModule" name="Kerberos Login">

                    <PARAMETER_ENTRY name="userAgents" value=".*(Firefox|Iceweasel|Konqueror|MSIE|Opera|Safari|Shiretoko|Gecko).*" />

                    <PARAMETER_ENTRY name="useFullPrincipal" value="false" />

                </LOGIN_MODULE>

                <ATTRIBUTES_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.attributes.LDAPAttributesModule" name="LDAP">

                    <PARAMETER_ENTRY name="search.base_dn" value="OU=Abteilungen,DC=e-spirit,DC=intern" />

                    <PARAMETER_ENTRY name="bind_dn" value="CN=Remotezugriff re-lounge allgemein,OU=Fremdfirmenzugriff,OU=Sonstige,OU=Abteilungen,DC=e-spirit,DC=intern" />

                    <PARAMETER_ENTRY name="search.filter" value="(sAMAccountName=$USER_LOGIN$)" />

                    <PARAMETER_ENTRY name="bind_password" value="test" />

                    <PARAMETER_ENTRY name="host_url" value="ldap://srvdcfr1.e-spirit.intern,ldap://srvdcfr5.e-spirit.intern" />

                    <PARAMETER_ENTRY name="ssl" value="false" />

                    <PARAMETER_ENTRY name="attributes" value="cn, displayName, givenName, name, sn, telephoneNumber, department" />

                    <PARAMETER_ENTRY name="mode" value="search_compare" />

                </ATTRIBUTES_MODULE>

                <GROUPS_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.groups.LDAPGroupsModule" name="LDAP Group">

                    <PARAMETER_ENTRY name="group_attribute" value="memberOf" />

                    <PARAMETER_ENTRY name="bind_dn" value="CN=Remotezugriff re-lounge allgemein,OU=Fremdfirmenzugriff,OU=Sonstige,OU=Abteilungen,DC=e-spirit,DC=intern" />

                    <PARAMETER_ENTRY name="bind_password" value="test" />

                    <PARAMETER_ENTRY name="host_url" value="ldap://srvdcfr1.e-spirit.intern,ldap://srvdcfr5.e-spirit.intern" />

                    <PARAMETER_ENTRY name="user_dn" value="not-used" />

                    <PARAMETER_ENTRY name="ssl" value="false" />

                </GROUPS_MODULE>

            </LOGIN_PACKAGE>

            <LOGIN_PACKAGE name="LDAP username/password" priority="1">

                <LOGIN_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.login.RequestParameterLoginModule" name="Request Parameter Login">

                </LOGIN_MODULE>

                <AUTHENTICATION_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.authentication.LDAPAuthenticationModule" name="LDAP">

                    <PARAMETER_ENTRY name="search.base_dn" value="OU=Abteilungen,DC=e-spirit,DC=intern" />

                    <PARAMETER_ENTRY name="search.filter" value="(sAMAccountName=$USER_LOGIN$)" />

                    <PARAMETER_ENTRY name="bind_dn" value="CN=Remotezugriff re-lounge allgemein,OU=Fremdfirmenzugriff,OU=Sonstige,OU=Abteilungen,DC=e-spirit,DC=intern" />

                    <PARAMETER_ENTRY name="allowEmptyPasswords" value="false" />

                    <PARAMETER_ENTRY name="bind_password" value="test" />

                    <PARAMETER_ENTRY name="authentication" value="search_bind" />

                    <PARAMETER_ENTRY name="host_url" value="ldap://srvdcfr1.e-spirit.intern,ldap://srvdcfr5.e-spirit.intern" />

                    <PARAMETER_ENTRY name="ssl" value="false" />

                    <PARAMETER_ENTRY name="user_dn" value="not-used" />

                    <PARAMETER_ENTRY name="propertyFile" value="/WEB-INF/fsp-authProp.properties" />

                    <PARAMETER_ENTRY name="createCookie" value="false" />

                </AUTHENTICATION_MODULE>

                <ATTRIBUTES_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.attributes.LDAPAttributesModule" name="LDAP">

                    <PARAMETER_ENTRY name="search.base_dn" value="OU=Abteilungen,DC=e-spirit,DC=intern" />

                    <PARAMETER_ENTRY name="bind_dn" value="CN=Remotezugriff re-lounge allgemein,OU=Fremdfirmenzugriff,OU=Sonstige,OU=Abteilungen,DC=e-spirit,DC=intern" />

                    <PARAMETER_ENTRY name="search.filter" value="(sAMAccountName=$USER_LOGIN$)" />

                    <PARAMETER_ENTRY name="bind_password" value="test" />

                    <PARAMETER_ENTRY name="host_url" value="ldap://srvdcfr1.e-spirit.intern,ldap://srvdcfr5.e-spirit.intern" />

                    <PARAMETER_ENTRY name="ssl" value="false" />

                    <PARAMETER_ENTRY name="attributes" value="cn, displayName, givenName, name, sn, telephoneNumber, department" />

                    <PARAMETER_ENTRY name="mode" value="search_compare" />

                </ATTRIBUTES_MODULE>

                <GROUPS_MODULE class="de.espirit.firstspirit.opt.personalisation.modules.groups.LDAPGroupsModule" name="LDAP Group">

                    <PARAMETER_ENTRY name="group_attribute" value="memberOf" />

                    <PARAMETER_ENTRY name="bind_dn" value="CN=Remotezugriff re-lounge allgemein,OU=Fremdfirmenzugriff,OU=Sonstige,OU=Abteilungen,DC=e-spirit,DC=intern" />

                    <PARAMETER_ENTRY name="bind_password" value="test" />

                    <PARAMETER_ENTRY name="host_url" value="ldap://srvdcfr1.e-spirit.intern,ldap://srvdcfr5.e-spirit.intern" />

                    <PARAMETER_ENTRY name="ssl" value="false" />

                    <PARAMETER_ENTRY name="user_dn" value="not-used" />

                </GROUPS_MODULE>

            </LOGIN_PACKAGE>

        </LOGIN_PACKAGES>

        <GLOBAL_CONFIG_PARAMETERS>

            <PARAMETER_ENTRY name="useDummyUser" value="false" />

            <PARAMETER_ENTRY name="activateEveryoneGroup" value="true" />

            <PARAMETER_ENTRY name="everyoneGroupString" value="" />

            <PARAMETER_ENTRY name="ssoCookieName" value="" />

            <PARAMETER_ENTRY name="ssoCookieLifetime" value="" />

            <PARAMETER_ENTRY name="ssoCookieDomain" value="" />

            <PARAMETER_ENTRY name="log4JFallbackConfigFile" value="/WEB-INF/fsp-logging.conf" />

        </GLOBAL_CONFIG_PARAMETERS>

    </FIRSTPERSONALISATION>

    Woran könnte es liegen?

    Danke und Gruß,

    Benny Kannengießer

    // re-lounge

    Attache die personalization.xml

    0
  • Zendesk API User
    Author: isenberg - 8/31/2015 13:14

    Die XML-Datei sieht im Prinzip genau aus wie bei meiner funktionsfähigen Test-WebApp, die ich vor einigen Monaten erstellte. Sie kombiniert Kerberos mit LDAP als Fallback.

    Hier die beiden Seiten der Test-WebApp. Wichtig ist der Parameter "loginPackage" bei ldap.jsp, der auf das LDAP-Loginpackage verweist und vermutlich das fsp:isNotAuthorized in index.jsp, weil ansonsten eben nur 401 dort angezeigt würde, sofern man nicht mittels des Zusatzparameters bei fsp:authorize auf eine andere Seite automatisch umleitet, was in meinem Beispiel aber nicht erfolgt.

    Datei index.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8" %>

    <%@ taglib uri="FIRSTpersonalisation" prefix="fsp" %>

    <html><body>

    <fsp:isAuthorized groups="*">

              <fsp:userInfo>

                        <p>logged in: <%= login %></p>

              </fsp:userInfo>

              <p>Attributes:<br/>

              <fsp:userAttributes attributes="mail,displayName,telephoneNumber">

                         <%= attributename %>: <%= attributevalue %><br/>

              </fsp:userAttributes>

              <p>Groups:<br/>

              <fsp:userGroups>

                        <%= groupname %>

              </fsp:userGroups>

              </p>

              <form method="POST" action="<%= request.getContextPath() %>/do.logout">

                          <input type="hidden" name="redirect_url" value="<%= request.getRequestURI() %>" />

                          <input type="submit" value="Logout" />

              </form>

    </fsp:isAuthorized>

    <fsp:isNotAuthorized groups="*">

              <p>not logged in</p>

              <form method="GET" action="ldap.jsp">

                          <input type="hidden" name="login_ok_url" value="<%= request.getRequestURI() %>" />

                          <input type="submit" value="Login" />

              </form>

    </fsp:isNotAuthorized>

    </body></html>

    <fsp:authorize />

    Datei ldap.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8" %>

    <%@ taglib uri="FIRSTpersonalisation" prefix="fsp" %>

    <html><body>

    <fsp:isAuthorized groups="*">

              <fsp:userInfo>

                        <p>already logged in: <%= login %></p>

              </fsp:userInfo>

              <form method="POST" action="<%= request.getContextPath() %>/do.logout">

                          <input type="hidden" name="redirect_url" value="<%= request.getRequestURI() %>" />

                          <input type="submit" value="Logout" />

              </form>

    </fsp:isAuthorized>

    <fsp:isNotAuthorized groups="*">

              <form method="POST" action="<%= request.getContextPath() %>/do.login">

                        <p>user: <input type="text" name="login" /></p>

                          <p>password: <input type="password" name="password" /></p>

                        <input type="hidden" name="loginPackage" value="LDAP" />

                          <input type="hidden" name="login_ok_url" value="<%= request.getContextPath() %>" />

                          <input type="hidden" name="wrong_login_url" value="<%= request.getRequestURI() %>" />

                          <input type="submit" value="Login" />

              </form>

    </fsp:isNotAuthorized>

    </body></html>

    0
  • Zendesk API User
    Author: kannengi - 8/31/2015 15:26

    Der hidden Parameter "loginPackage" hat gefehlt...

    Jetzt klappt alles.

    Vielen Dank für den Beispiel-Code!

    Gruß,

    Benny Kannengießer

    // re-lounge

    0

Please sign in to leave a comment.