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
playground:playground [2016/07/14 10:06] Martin Lunzeplayground:playground [2021/08/19 12:37] (aktuell) Ralf Paffrath
Zeile 1: Zeile 1:
-====== PlayGround ====== +====== Playground ======
-===== LDAP-Verbindung ===== +
-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 heist im Speziellen, dass Shibboleth eine definierte Anzahl an Verbindungen zum LDAP-Dienst aufrecht erhält.\\ +
-Vorteil dabei ist, dass zum Zeitpunkt des Logins eines Nutzers nicht erst eine Verbindung zum LDAP aufgebaut werden muss, sondern dieser sich ohne Verzögerung sofort authentifizieren kann. (Performance-Verbesserung)+
  
-Wenn aus welchen Gründen auch immer diese Verbindung beendet wird, so registriert Shibboleth dies und baut selbstständig eine neue auf.\\ 
-Dies kann z.B. auftreten wenn der LDAP-Server die Verbindungen nach einer bestimmten "idleTime" beendet.\\ 
-Im Großen und Ganzen kann man dies alles über ein paar [[https://wiki.shibboleth.net/confluence/display/IDP30/LDAPAuthnConfiguration#LDAPAuthnConfiguration-Properties|Parameter]] unter conf/ldap.properties steuern. 
- 
-<file xml conf/ldap.properties> 
-# LDAP pool configuration, used for both authn and DN resolution 
-#idp.pool.LDAP.minSize                          = 3 
-#idp.pool.LDAP.maxSize                          = 10 
-#idp.pool.LDAP.validateOnCheckout               = false 
-#idp.pool.LDAP.validatePeriodically             = true 
-#idp.pool.LDAP.validatePeriod                   = 300 
-#idp.pool.LDAP.prunePeriod                      = 300 
-#idp.pool.LDAP.idleTime                         = 600 
-#idp.pool.LDAP.blockWaitTime                    = 3000 
-#idp.pool.LDAP.failFastInitialize               = false 
-</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)\\ 
-Dies führt letztendlich dazu, dass sich Nutzer nicht mehr am IdP einloggen können wenn dieser die maximale Anzahl an Verbindungen erreicht hat. 
- 
-Ältere Versionen vom IdP haben hingegen keine Verbindungen offen gehalten, sondern diese erst geöffnet, wenn sich ein Nutzer einloggt.\\ 
-Die maginale Verzögerung beim Aufbau der Verbindungen sollte aus Sicht des Nutzers nicht zu spüren sein und spätestens dann vertretbar sein, wenn 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.\\ 
-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> 
  • Zuletzt geändert: vor 8 Jahren