diff --git a/client.py b/client.py
index dd1edbe2a79554e759024fa0f24b6e3ccc86366c..25197a9ec9f17f08d8797032ec07640f5fe71001 100755
--- a/client.py
+++ b/client.py
@@ -300,7 +300,8 @@ def rm_file(filename):
 def get_my_roles(options):
     """Retourne la liste des rôles de l'utilisateur, et également la liste des rôles dont il possède le role-w."""
     allroles = all_roles(options)
-    my_roles = [r for (r, users) in allroles.iteritems() if options.serverdata['user'] in users]
+    distant_username = allroles.pop("whoami")
+    my_roles = [r for (r, users) in allroles.iteritems() if distant_username in users]
     my_roles_w = [r[:-2] for r in my_roles if r.endswith("-w")]
     return (my_roles, my_roles_w)
 
@@ -415,6 +416,7 @@ def get_recipients_of_roles(options, roles):
     """Renvoie les destinataires d'une liste de rôles"""
     recipients = set()
     allroles = all_roles(options)
+    allroles.pop("whoami")
     for role in roles:
         for recipient in allroles[role]:
             recipients.add(recipient)
@@ -513,7 +515,9 @@ def show_files(options):
 def show_roles(options):
     """Affiche la liste des roles existants"""
     print(u"Liste des roles disponibles".encode("utf-8"))
-    for (role, usernames) in all_roles(options).iteritems():
+    allroles =  all_roles(options)
+    allroles.pop("whoami")
+    for (role, usernames) in allroles.iteritems():
         if not role.endswith('-w'):
             print((u" * %s : %s" % (role, ", ".join(usernames))).encode("utf-8"))
 
diff --git a/clientconfig.example.py b/clientconfig.example.py
index 1f87fed37ac1d5107e92ba0bc556b227006b4980..6df14b89aef54280fdb2e70ddab2bfb5540ef806 100755
--- a/clientconfig.example.py
+++ b/clientconfig.example.py
@@ -17,26 +17,17 @@ server_path = '/usr/local/bin/%s-server' % (cmd_name,)
 #: Commande à exécuter sur le serveur après y être entré en ssh
 distant_cmd = "sudo %s" % (server_path,)
 
-#: Username utilisé pour se loguer sur le serveur.
-#: Par défaut, prend la valeur de l'username sur le client,
-#: il faut donc le remplacer pour ceux qui n'ont pas le même username
-#: sur le client et le serveur.
-username = os.getenv('USER')
-
 #: Liste des serveurs sur lesquels ont peut récupérer des mots de passe.
 #: 
 #: Sans précision du paramètre --server, la clé ``'default'`` sera utilisée.
 #: 
 #: * ``'server_cmd'`` : La commande exécutée sur le client pour appeler
 #:   le script sur le serveur distant.
-#: * ``'user'``: L'username sur le serveur
 servers = {
     'default': {
         'server_cmd': [ssh_path, 'vert.adm.crans.org', distant_cmd],
-        'user' : username
     },
     'ovh': {
         'server_cmd': [ssh_path, 'ovh.crans.org', distant_cmd],
-        'user' : username
     }
 }
diff --git a/server.py b/server.py
index 4b30203bc23a18857d0e56ed4379cf1f5e1c3b16..63cd1a5565fcac535c507e4ebffeb49cf76ffde1 100755
--- a/server.py
+++ b/server.py
@@ -48,8 +48,13 @@ def writefile(filename, contents):
     f.close()
 
 def listroles():
-    """Liste des roles existant et de leurs membres"""
-    return serverconfig.ROLES
+    """Liste des roles existant et de leurs membres.
+       Renvoie également un rôle particulier ``"whoami"``, contenant l'username de l'utilisateur qui s'est connecté."""
+    d = serverconfig.ROLES
+    if d.has_key("whoami"):
+        raise ValueError('La rôle "whoami" ne devrait pas exister')
+    d["whoami"] = MYUID
+    return d
 
 def listkeys():
     """Liste les usernames et les (mail, fingerprint) correspondants"""