Déconnexion d'une authentification Apache


#1

Bonsoir!

J’ai fait une application Web avec une authentification Apache.
J’aurais voulu la faire directement en ruby dans l’application, mais
la personne qui s’occupe de la sécurité informatique où je vais
installer cette application voulait que ce soit Apache qui fasse
l’authentification par LDAP…

Jusque là, tous va bien! J’arrive même à récupérer le nom de
l’utilisateur avec @request.env[‘REMOTE_USER’] dans mon application
RubyonRails .

Mais… Je n’arrive pas à faire un bouton de déconnexion (logout).
Cela est dû au fait que l’on ne peut pas par exemple effacer la
variable ‘REMOTE_USER’ qu’à créé Apache d’après ce que j’ai lu sur
d’autres forums/blogs.

Malgré cela, j’ai vu quelques solutions comme par exemple rediriger
sur une page du style "http://logout:removed_email_address@domain.invalid/ où le
login/mondepasse est faux donc Apache redemande une authentification
(donc ça réaffiche la demande de login mais ce qui n’est pas très
“élégant” comme solution de déconnexion où on veut simplement se
déconnecter, pas ce réauthentifier…).

Quelqu’un a déjà été confronté à ce problème? Ou aurait une idée de
solution?

Merci de votre lecture et de votre éventuelle réponse!

Noé_______________________________________________
Railsfrance mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance


#2

Salut,

Confronté au même problème, je n’ai pas trouvé mieux que ta solution du
http://logout:removed_email_address@domain.invalid/

Simon


#3

removed_email_address@domain.invalid wrote the following on 22.03.2007 21:06 :

Bonsoir!

J’ai fait une application Web avec une authentification Apache.
J’aurais voulu la faire directement en ruby dans l’application, mais
la personne qui s’occupe de la sécurité informatique où je vais
installer cette application voulait que ce soit Apache qui fasse
l’authentification par LDAP…

Je suis curieux, cette personne a donné une raison ? Parce que ça
revient quand même quinze ans en arrière et le problème du logout n’est
pas le seul rencontré. En pratique pour des raisons de sécurité on
préfére justement ne pas laisser le frontal web avoir accès à la base
utilisateur pour éviter de multiplier le nombre de composants
susceptibles d’être attaqués…


#4

Le Jeu 22 mars 2007 23:01, Simon P. a écrit :

Mais… Je n’arrive pas à faire un bouton de déconnexion (logout).
Cela est dû au fait que l’on ne peut pas par exemple effacer la
variable ‘REMOTE_USER’ qu’à créé Apache d’après ce que j’ai lu sur
d’autres forums/blogs.

Il suffit de renvoyer une entête d’authentification :

  • un code de retour 401 (le message a peu d’importance)
  • une entête “WWW-Authenticate” avec pour valeur ‘Basic realm=“My Realm”’
    (attention à changer le “My Realm” pour utiliser ton realm habituel)

Le navigateur verra une demande d’auth pour le même domaine sur le même
realm et redemandera une authentification.


Éric Daspet
http://eric.daspet.name/


#5

Le 23 mars 07 à 10:16, Eric D. a écrit :


Railsfrance mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance

Merci de la réponse!

Le “realm” c’est bien ce qu’on a défini comme “AuthName” dans la
config du VirtualHost d’Apache?

Donc avec cette solution, on arrive à la même finalité qu’avec un
http://logout:removed_email_address@domain.invalid (même si celle-ci est beaucoup
plus élégante) ? On ne peut pas définir une page comme quoi on est
délogué sans avoir la fenêtre de login qui revient?

Bonne journée!
No


#6

Bonjour,

Sa raison était qu’il pouvait lui-même avoir accès à la partie qui
prend le mot de passe. Si je l’aurais mis dans l’application Ruby on
Rails, il aurait du faire une vérification de tout le code… (il
avait peur d’un backdoor en gros…).

Meilleures salutations,
Noé

Le 23 mars 07 à 00:15, Lionel B. a écrit :