JaliosXperience
fr en
Link

Nombre d'appels à un AuthenticationHandler

Nicolas Plessis - on 8/7/08 at 6:40 PM

Bonjour,

J'ai créé en suivant cet article un AuthenticationHandler tout simple qui implémente uniquement la méthode login :

	public void login(AuthenticationContext ctxt) throws IOException {
		if (ctxt.isLogged()) {
			Member authMember = ctxt.getLoggedMember();
			if (authMember != null) {
				logger.debug("Auth de " + authMember);
			}
		}
		ctxt.doChain();
	}

Je pensais voir dans les logs une seule ligne par personne se connectant par login / mot de passe mais voilà ce que j'obtiens par exemple avec le compte admin :

18:34:55,817 INFO [JCMS] [LoggingAuthenticationHandler] - Administrator "Admin" starts a new session
18:34:55,864 DEBUG [JCMS] [MyAuthenticationHandler] - Auth de Admin
18:34:55,911 DEBUG [JCMS] [MyAuthenticationHandler] - Auth de Admin
18:34:55,958 DEBUG [JCMS] [MyAuthenticationHandler] - Auth de Admin

Pourquoi il y a-t-il autant d'appel à ma méthode ?

Merci.

Olivier Jaquemet - on 8/8/08 at 9:35 AM

Bonjour Nicolas,

La chaine d'authentification est appelée une fois pour chaque requête qui nécessite une authentification (jsp, upload, webdav,...).

JCMS vient avec un SessionAuthenticationHandler qui stock dans la session l'authentificatione effectuée par les autres authentication handler. Cet handler réutilise cette information pour le reste de la session afin d'accélérer le processus.

Il est des cas ou l'on ne souhaite pas se baser sur la session, mais vérifier à chaque requete l'authentification (SSO par exemple).
C'est pour cela qu'il est possible de placer son handler n'importe ou dans la chaine pour intervenir avant/apres les autres, ou de retirer complétement un handler existant.

Login   Home   fr en
JALIOS SA - SIREN 440 126 035