Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Letzte Überarbeitung Beide Seiten der Revision
playground:playground [2016/07/14 10:06]
Martin Lunze
playground:playground [2016/07/14 10:32]
Martin Lunze
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 10 Monaten