Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:shibidp3ldap [2020/10/14 16:32] Silke Meyerde:shibidp:config-ldap-nopool [2021/05/03 14:10] (aktuell) Silke Meyer
Zeile 1: Zeile 1:
-====== Spezielle LDAP Konfiguration ====== +====== LDAP ohne Connection Pool ======
-===== LDAP ohne Connection Pool =====+
 Gibt es Probleme bei der Verbindung mit dem LDAP-Server unter Verwendung eines Connection Pools, so kann man diesen mit folgenden Schritten deaktivieren. Gibt es Probleme bei der Verbindung mit dem LDAP-Server unter Verwendung eines Connection Pools, so kann man diesen mit folgenden Schritten deaktivieren.
  
-Die aktuelle IdP-Version (3.2.1) basiert auf [[http://www.ldaptive.org/index.html|Ldaptive]] und benutzt standardmäßig eine sogenannte [[http://www.ldaptive.org/docs/guide/connections.html|PooledConnectionFactory]]. Das heißt, dass eine definierte Anzahl an Verbindungen zum LDAP-Dienst aufrecht erhalten wird und Authentifizierungen sofort stattfinden können (Performance-Verbesserung).+Der IdP benutzt standardmäßig eine sogenannte [[http://www.ldaptive.org/docs/guide/connections.html|PooledConnectionFactory]]. Das heißt, dass eine definierte Anzahl an Verbindungen zum LDAP-Dienst aufrecht erhalten wird und Authentifizierungen sofort stattfinden können (Performance-Verbesserung).
  
-Wenn diese Verbindung beendet wird, so registriert Shibboleth dies und baut selbstständig eine neue auf. Dies kann man über ein paar [[https://wiki.shibboleth.net/confluence/display/IDP30/LDAPAuthnConfiguration#LDAPAuthnConfiguration-Properties|Parameter]] in ''conf/ldap.properties'' steuern.+Wenn diese Verbindung beendet wird, so registriert Shibboleth dies und baut selbstständig eine neue auf. Dies kann man über ein paar Parameter in ''conf/ldap.properties'' ([[https://wiki.shibboleth.net/confluence/display/IDP4/LDAPAuthnConfiguration#55804291414bc06da6fe4d90ba837912b84b54aa|IdP 4.x]]steuern. In der Konfigurationsdatei sehen Sie die (auskommentierten) Standardeinstellungen und können sie bei Bedarf verändern (Beispiel für IdP 4.x).
  
 <file properties conf/ldap.properties> <file properties conf/ldap.properties>
Zeile 13: Zeile 12:
 #idp.pool.LDAP.validateOnCheckout               = false #idp.pool.LDAP.validateOnCheckout               = false
 #idp.pool.LDAP.validatePeriodically             = true #idp.pool.LDAP.validatePeriodically             = true
-#idp.pool.LDAP.validatePeriod                   300 +#idp.pool.LDAP.validatePeriod                   PT5M 
-#idp.pool.LDAP.prunePeriod                      300 +#idp.pool.LDAP.validateDN                       
-#idp.pool.LDAP.idleTime                         600 +#idp.pool.LDAP.validateFilter                   (objectClass=*) 
-#idp.pool.LDAP.blockWaitTime                    3000 +#idp.pool.LDAP.prunePeriod                      PT5M 
-#idp.pool.LDAP.failFastInitialize               false+#idp.pool.LDAP.idleTime                         = PT10M 
 +#idp.pool.LDAP.blockWaitTime                    PT3S
 </file> </file>
  
-Nun kann es in Einzelfällen jedoch dazu kommen, dass die Verbindung zwar erhalten bleibt, jedoch in einer definierten Zeit keine Antwort vom LDAP zurück kommt. (z.B. bei erhöhtem Load)\\ +Es kann dazu kommen, dass die Verbindung zum LDAP-Server zwar erhalten bleibt, jedoch in einer definierten Zeit keine Antwort zurück kommt. Unter Umständen können sich Nutzer*innen dann nicht mehr am IdP einloggen.
-Dies führt letztendlich dazu, dass sich Nutzer nicht mehr am IdP einloggen können wenn dieser die maximale Anzahl an Verbindungen erreicht hat.+
  
 Ein passender Eintrag in den Logfiles sieht wie folgt aus: Ein passender Eintrag in den Logfiles sieht wie folgt aus:
Zeile 32: Zeile 31:
 </code> </code>
  
-Ältere Versionen vom IdP haben hingegen keine Verbindungen offen gehalten, sondern diese erst geöffnet, wenn sich ein Nutzer einloggt.\\ +Um den Connection Pool im **IdP 4.x** abzuschaltenkönnen Sie die Einstellung ''idp.authn.LDAP.disablePooling'' in ''ldap.properties'' auf den Wert ''true'' setzen.
-Die marginale Verzögerung beim Aufbau der Verbindungen sollte aus Sicht des Nutzers nicht zu spüren sein und spätestens dann vertretbar seinwenn solch ein Problem-Fall eintritt.+
  
-Um nun zu diesem Verhalten zu wechseln müssen lediglich zwei kleine Änderungen in der conf/authn/ldap-authn-config.xml getätigt werden.\\ +{{tag>idp4 ldap}}
-Wir entfernen hier das Wort "Pooled" aus den class-Bezeichnungen und den connectionFactory-Referenzen und schon wird statt der PooledConnectionFactory die DefaultConnectionFactory benutzt. +
- +
-<file xml conf/authn/ldap-authn-config.xml> +
-<!-- ... --> +
- +
-<!-- Authentication handler --> +
-    <bean id="authHandler" class="org.ldaptive.auth.BindAuthenticationHandler" p:connectionFactory-ref="bindConnectionFactory" /> +
-<!-- +
-    <bean id="authHandler" class="org.ldaptive.auth.PooledBindAuthenticationHandler" p:connectionFactory-ref="bindPooledConnectionFactory" /> +
---> +
-    <bean id="bindPooledConnectionFactory" class="org.ldaptive.pool.PooledConnectionFactory" p:connectionPool-ref="bindConnectionPool" /> +
-    <bean id="bindConnectionPool" class="org.ldaptive.pool.BlockingConnectionPool" parent="connectionPool" +
-        p:connectionFactory-ref="bindConnectionFactory" p:name="bind-pool" /> +
-    <bean id="bindConnectionFactory" class="org.ldaptive.DefaultConnectionFactory" p:connectionConfig-ref="bindConnectionConfig" /> +
-    <bean id="bindConnectionConfig" parent="connectionConfig" /> +
- +
-<!-- ... --> +
- +
-<!-- Bind Search Configuration --> +
-    <bean name="bindSearchAuthenticator" class="org.ldaptive.auth.Authenticator"> +
-        <constructor-arg index="0" ref="bindSearchDnResolver" /> +
-        <constructor-arg index="1" ref="authHandler" /> +
-    </bean> +
-    <bean id="bindSearchDnResolver" class="org.ldaptive.auth.SearchDnResolver" p:baseDn="%{idp.authn.LDAP.baseDN}" +
-        p:subtreeSearch="%{idp.authn.LDAP.subtreeSearch:false}" p:userFilter="%{idp.authn.LDAP.userFilter}" +
-        p:connectionFactory-ref="bindSearchConnectionFactory" /> +
-<!-- +
-    <bean id="bindSearchDnResolver" class="org.ldaptive.auth.PooledSearchDnResolver" p:baseDn="%{idp.authn.LDAP.baseDN}" +
-        p:subtreeSearch="%{idp.authn.LDAP.subtreeSearch:false}" p:userFilter="%{idp.authn.LDAP.userFilter}" +
-        p:connectionFactory-ref="bindSearchPooledConnectionFactory" /> +
---> +
-    <bean id="bindSearchPooledConnectionFactory" class="org.ldaptive.pool.PooledConnectionFactory" +
-        p:connectionPool-ref="bindSearchConnectionPool" /> +
-    <bean id="bindSearchConnectionPool" class="org.ldaptive.pool.BlockingConnectionPool" parent="connectionPool" +
-        p:connectionFactory-ref="bindSearchConnectionFactory" p:name="search-pool" /> +
-    <bean id="bindSearchConnectionFactory" class="org.ldaptive.DefaultConnectionFactory" p:connectionConfig-ref="bindSearchConnectionConfig" /> +
-    <bean id="bindSearchConnectionConfig" parent="connectionConfig" p:connectionInitializer-ref="bindConnectionInitializer" /> +
-    <bean id="bindConnectionInitializer" class="org.ldaptive.BindConnectionInitializer" p:bindDn="%{idp.authn.LDAP.bindDN}"> +
-        <property name="bindCredential"> +
-            <bean class="org.ldaptive.Credential"> +
-                <constructor-arg value="%{idp.authn.LDAP.bindDNCredential}" /> +
-            </bean> +
-        </property> +
-    </bean> +
- +
-<!-- ... --> +
-</file> +
- +
-{{tag>idp3 fixme}}+
  • Zuletzt geändert: vor 3 Jahren