Aller au contenu


Purge des zimbraAuthTokens


  • Veuillez vous connecter pour répondre
3 réponses à ce sujet

#1 vdagost

vdagost

    Zimbra Jedi

  • Membres
  • PipPipPipPip
  • 510 messages
  • LocalisationLyon

Posté 19 janvier 2017 - 11:14

Bonjour

J'ai rencontré anomalie avec un utilisateur de Zimbra 8.6.0 :

Si je fais un zmprov ga user alors je constate qu'il y a une (trop) longue liste de zimbraAuthTokens.

Il y en a un peu plus de 2000. Ce sont des lignes de la forme 462056739|1484993721419|8.6.0_GA_1153
Je pense qu'un trop grand nombre de tokens peut poser des problèmes de auth credentials have expired.

En effet si je fais un

Citation

zmprov ma user zimbraAuthTokens ""

L'utilisateur est déconnecté de son webmail (pas grave) et je n'ai plus de problèmes avec le SOAP.
Je ne sais pas si c'est la bonne façon de purger les comptes ...
Mais le bouton Annuler les Sessions dans l'interface d'admin ne fonctionnait pas.

Comment mettre en place une maintenance qui surveillerait le nombre de zimbraAuthTokens pour tous mes comptes utilisateur ?

J'ai aussi des logs :

Citation

2017-01-19 10:29:33,610 ERROR [qtp509886383-1862057:https://10.69.212.38:443/dav/user%40company.net/Salle%20du%202%C3%A8me%20%C3%A9tage/] [aname=user@company.net;ip=10.69.212.31;oip=10.69.172.45, 10.69.201.253;ua=Mozilla/5.0 (Windows NT 6.1;; WOW64;; rv:17.0) Gecko/20130107 Thunderbird/17.0.2 (Fidumail/15.0;; Lightning/1.9.1);] AuthToken - unable to de-register auth token
com.zimbra.common.service.ServiceException: system failure: unable to modify attrs: LDAP error:  - unable to modify attributes: modify/delete: zimbraAuthTokens: no such value
    at com.zimbra.cs.account.ZAttrAccount.removeAuthTokens(ZAttrAccount.java:4314)
    at com.zimbra.cs.account.Account.cleanExpiredTokens(Account.java:516)
    at com.zimbra.cs.account.ZimbraAuthToken.register(ZimbraAuthToken.java:385)
    at com.zimbra.cs.account.ZimbraAuthToken.<init>(ZimbraAuthToken.java:288)
    at com.zimbra.cs.account.ZimbraAuthToken.<init>(ZimbraAuthToken.java:238)
    at com.zimbra.cs.account.ZimbraAuthToken.<init>(ZimbraAuthToken.java:234)
    at com.zimbra.cs.service.ZimbraAuthProvider.authToken(ZimbraAuthProvider.java:110)
    at com.zimbra.cs.service.AuthProvider.getAuthToken(AuthProvider.java:459)
Caused by: com.zimbra.cs.ldap.LdapException: LDAP error:  - unable to modify attributes: modify/delete: zimbraAuthTokens: no such value


Victor
Zimbra 8.7.3 OSS + Zextras
11000 utilisateurs (10 stores)
RHEL 6

#2 vdagost

vdagost

    Zimbra Jedi

  • Membres
  • PipPipPipPip
  • 510 messages
  • LocalisationLyon

Posté 19 janvier 2017 - 12:28

Je pense que c'est cette anomalie :
https://bugzilla.zim...g.cgi?id=104858

Victor
Zimbra 8.7.3 OSS + Zextras
11000 utilisateurs (10 stores)
RHEL 6

#3 Emilie

Emilie

    Membre débutant

  • Membres
  • 6 messages

Posté 06 février 2018 - 10:30

Bonjour,

Je profite de ce poste pour faire partager le problème que nous avons rencontré chez nous et la solution "pansement" mise en place.
Certains de nos utilisateurs avaient également de nombreux zimbraAuthTokens (+20000).
Tous nos utilisateurs sur qui cela arrivait synchronisaient des contacts partagés dans zimbra sur iphone.
A chaque consultation des contacts sur iphone cela génère des tokens sur la boite mail de celui qui partage les contacts et sur la boite de celui qui consulte.

Au départ nous avons mis en place la purge des token pour les comptes en possédant plus de 200 mais les utilisateurs se plaignaient des déconnexions lors des exécutions du script.

Au lieu de vider tous les zimbraAuthTokens il suffit en fait de récupérer celui (ou ceux) qui correspond à la connexion dans l'interface web :

zmprov ga adresse_mail zimbraCsrfTokenData
zimbraCsrfTokenData: [.......]:[........]:1517990262037

Et de trouver le ou les zimbraAuthTokens correspondant avec le timestamp pour ne pas le/les supprimer :
zmprov ga adresse_mail zimbraAuthTokens | grep 1517990262037

Voici le script mis en cron :

#!/bin/sh
. /opt/zimbra/bin/zmshutil
zmsetvars
/opt/zimbra/bin/ldapsearch -o ldif-wrap=no -x -H $ldap_master_url -D $zimbra_ldap_userdn -w $zimbra_ldap_password  '(&(objectclass=zimbraAccount)(zimbraAccountStatus=active)(zimbraAuthTokens=*))' zimbraMailDeliveryAddress zimbraAuthTokens zimbraCsrfTokenData > /tmp/tocken.txt
> cmd_zmprov_remove_token
mail=""
csrf=""
token=""
while read ligne
do
	if [ $(echo $ligne | grep "zimbraMailDeliveryAddress" 1>/dev/null;echo $?) -eq 0 ]
	 then
		if [ $(echo $token | wc -l) -gt 200 ]
		then
			csrf=$(echo $csrf | sed 's/|$//')
			token=$(echo $token | sed 1d)
			echo "$token" | egrep -v "($csrf)" | sed "s/^/ma $mail -zimbraAuthTokens  '/g" |  sed "s/$/'/g" >> cmd_zmprov_remove_token
			token=$(echo $token | sed 's/^/ma '$mail'  /g')
		fi
	csrf=""
	token=""
	mail=$(echo $ligne |  cut -d' ' -f2)
	elif [ $(echo $ligne | grep "zimbraAuthTokens" 1>/dev/null;echo $?) -eq 0 ]
	then
		token=${token}"\n"$(echo $ligne | cut -d' ' -f2)
	elif [  $(echo $ligne | grep "zimbraCsrfTokenData" 1>/dev/null;echo $?) -eq 0 ]
	then
		csrf=${csrf}$(echo $ligne | cut -d: -f4 )"|"
	fi
done < /tmp/tocken.txt

/opt/zimbra/bin/zmprov -f cmd_zmprov_remove_token

Émilie.
--
Release 8.6.0.GA.1153.UBUNTU12.64 UBUNTU12_64 NETWORK edition, Patch 8.6.0_P2

#4 Klug

Klug

    Zimbra Jedi

  • Membres
  • PipPipPipPip
  • 10 263 messages
  • LocalisationBeaucaire - Gard

Posté 06 février 2018 - 16:27

"Normalement" (les guillemets sont importants), ça devrait se régler dans les futures versions de Zimbra, ces problèmes de token.
Anéfé, si vous ne l'aviez pas vu, un nouveau système de stockage des tokens est déjà en beta dans la 8.8.

https://github.com/Z...Storage-Support
https://wiki.zimbra....hemeralData.pdf




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)