Est-il un navigateur équivalent à IE ClearAuthenticationCache?
J'ai un peu de interne .net application web ici, qui obligent les utilisateurs à "déconnecter" d'entre eux. Je sais que cela peut sembler discutable sur une application Intranet, mais néanmoins, il est là.
Nous sommes à l'aide de l'authentification Windows pour notre Intranet, applications, donc nous attacher à notre Active Directory avec l'Authentification de Base et les informations d'identification sont enregistrées dans le cache du navigateur, par opposition à un cookie lors de l'utilisation .net de l'authentification de formulaires.
Dans IE6+, vous pouvez tirer parti d'une spéciale de fonction JavaScript, ils ont créé de la manière suivante:
document.execCommand("ClearAuthenticationCache", "false")
Cependant, pour les autres navigateurs qui doivent être pris en charge (à savoir Firefox pour le moment, mais je cherche la multi-prise en charge du navigateur), j'ai simplement afficher un message à l'utilisateur qu'ils doivent fermer leur navigateur pour vous déconnecter de l'application, ce qui vide le cache de l'application.
Quelqu'un sait de certaines commandes/hacks/etc. que je peux utiliser dans d'autres navigateurs pour vider le cache d'authentification?
Vous devez vous connecter pour publier un commentaire.
Je suis venu avec un correctif qui semble assez homogène, mais est hacky et Je ne suis toujours pas heureux avec elle.
Il fonctionne bien 🙂
1) les Rediriger vers une page de Déconnexion de l'
2) Sur cette page incendie d'un script ajax en charger une autre page avec des feintes des informations d'identification (exemple en jQuery):
3) Qui doit toujours retourner 401 la première fois (à force de le nouveau les informations d'identification pour être passé) et ensuite seulement d'accepter le mannequin informations d'identification (modèle MVC):
4) Maintenant, la chaîne aléatoire informations d'identification ont été acceptées et mises en cache par le navigateur à la place. Lorsqu'il visite une autre page, il va essayer de les utiliser, ne parviennent pas, puis vous invite à celles de droite.
.aspx
ou.ashx
page, coller ceci dans le chargement de la page, ajouterstring id = Request["id"];
vers le haut et remettez en place les deuxreturn Content(...
avecResponse.End()
. Vous pouvez également créer un personnaliséHttpHandler
. Tout est-il besoin de faire est de retourner une erreur HTTP 401 pour le nom d'utilisateur valide & mot de passe, puis retour HTTP de 200 pour le mannequin (qui, fous le navigateur dans la mise en cache à la place).Mozilla mise en œuvre de la crypto objet, disponible via le DOM
window
objet, dont lelogout
fonction (Firefox 1.5 vers le haut) pour effacer la session SSL état au niveau du navigateur de sorte que "la prochaine opération privée sur n'importe quel jeton pourra exiger le mot de passe utilisateur" (voir cette).La crypto objet semble être une mise en œuvre de la Web API Crypto, et selon ce document, le DOMCrypt API va ajouter encore plus de fonctions.
Comme indiqué ci-dessus Microsoft IE (6 vers le haut) a:
document.execCommand("ClearAuthenticationCache", "false")
Je n'ai trouvé aucun moyen de nettoyer la SLL cache en Chrome (voir cette et cette les rapports de bug).
Dans le cas où le navigateur ne propose pas d'API pour ce faire, je pense que le mieux que nous puissions faire est de demander à l'utilisateur de fermer le navigateur.
Voici ce que je fais:
if document.queryCommandSupported("ClearAuthenticationCache") { ... }
Un couple de notes. Quelques personnes ont dit que vous avez besoin pour déclencher une requête ajax avec des informations d'identification non valides pour obtenir le navigateur pour déposer ses propres informations d'identification.
C'est vrai, mais comme Keith l'a souligné, il est essentiel que la page du serveur des réclamations à accepter ces informations d'identification pour que cette méthode fonctionne de manière cohérente.
Sur une note similaire: Il n'est PAS assez bon pour votre page pour juste afficher la boîte de dialogue de connexion par l'intermédiaire d'une erreur 401. Si l'utilisateur annule la boîte de dialogue, puis de leur mise en cache des informations d'identification sont également affectés.
Aussi, si vous pouvez s'il vous plaît poke MOZILLA à https://bugzilla.mozilla.org/show_bug.cgi?id=287957 pour ajouter une bonne correction pour FireFox. Une webkit bug a été enregistré à https://bugs.webkit.org/show_bug.cgi?id=44823. IE met en œuvre un pauvre, mais fonctionnelle de la solution de la méthode:
Il est regrettable que nous devons aller à ces longueurs juste pour fermer la session d'un utilisateur.
Pourquoi ne pas utiliser FormsAuth, mais contre ActiveDirectory plutôt que par les infos dans ce fil. C'est juste que (in)sécurité comme l'Authentification Basique, mais la journalisation est tout simplement une question de découpage d'un cookie (ou plutôt, en l'appelant FormsAuthentication.SignOut)
J'ai été la recherche d'une solution similaire et est venu à travers un patch pour Trac (un problème de gestion du système) qui fait cela.
J'ai regardé à travers le code (et je suis fatigué, donc je ne suis pas tout expliquer); fondamentalement, vous avez besoin de faire un appel AJAX avec garantie non valide informations d'identification à votre page de connexion. Le navigateur va obtenir un 401 et de savoir qu'il doit vous demander les informations d'identification appropriées prochaine fois que vous y allez. Vous utilisez AJAX au lieu d'une redirection de sorte que vous pouvez spécifier des informations d'identification incorrectes et que le navigateur n'affiche une boîte de dialogue.
Sur le patch (http://trac-hacks.org/wiki/TrueHttpLogoutPatch) page qu'ils utilisent très rudimentaire AJAX; quelque chose de mieux comme jQuery ou Prototype, etc. est probablement mieux, bien que ce fait le travail.
Bien, j'ai été la navigation autour de Bugzilla pour un peu maintenant, et apparemment la meilleure façon, vous pouvez aller pour la compensation de l'authentification serait d'envoyer inexistant informations d'identification.
Lire la suite ici: https://bugzilla.mozilla.org/show_bug.cgi?id=287957
J'espère que cela sera utile jusqu'à ce que quelqu'un vient avec une réponse explicite - ce problème a été discuté il y a deux ans sur un panneau de message.
HTH