Question

Comment trouvez-vous déconnectez lorsque vous utilisez l'authentification Windows dans ASP.NET comme ceci web.config?

<authentication mode="Windows" />

Je l'ai déjà essayé, sans succès, ce qui suit. Il réoriente, mais ne se connecte pas l'utilisateur.

void logoutButton_Click(object sender, EventArgs e) {
    HttpContext.Current.Session.Clear();
    HttpContext.Current.Session.Abandon();
    ViewState.Clear();
    FormsAuthentication.SignOut();
    Response.Redirect("/");
}

Infos générales:

Je dois utiliser l'authentification Windows parce que je dois usurper l'identité de l'identité en utilisant Active Directory pour accéder aux fichiers locaux. Et je ne peux pas usurper l'identité en utilisant l'authentification des formulaires parce que le HttpContext.Current.User.Identity ne sera pas un WindowsIdentity. Impersonate utilisant l'authentification des formulaires

Était-ce utile?

La solution

Aucun serveur côté bouton de fermeture de session fonctionnera lors de l'authentification « Windows ». Vous devez utiliser l'authentification « Formulaires » si vous voulez un bouton de fermeture de session ou fermez le navigateur de l'utilisateur.

Autres conseils

Pour les navigateurs IE uniquement , vous pouvez utiliser le javascript suivant pour déconnecter l'utilisateur si vous utilisez l'authentification Windows. (Remarque: la fermeture du navigateur n'est pas nécessaire, mais recommandé, car l'utilisateur peut utiliser un navigateur non-IE).

Si l'utilisateur clique sur « Non » pour fermer le navigateur, l'utilisateur sera invité à entrer un nom d'utilisateur / mot de passe s'ils tentent d'accéder à une page sur le site qui requiert une authentification.

try {
   document.execCommand("ClearAuthenticationCache");
}
catch (e) { }
window.close();

Ce code a été tiré de la page Signout.aspx de SharePoint.

authentification Windows fonctionne au niveau IIS en passant votre jeton d'authentification Windows. L'authentification se produit au niveau IIS vous ne pouvez pas réellement vous déconnecter du code d'application. Cependant, il semble y avoir une réponse à votre problème ici . Il est la deuxième question abordée et consiste essentiellement à l'aide des formulaires d'authentification et le LogonUser de Windows api.

J'ai eu une application SharePoint avec l'authentification Windows, je avais besoin déconnexion automatique au bout de 15 minutes. J'ai mélangé certains codes et est le résultat. cela fonctionne dans IE correctement.

<script type="text/javascript">
var t;
window.onload = resetTimer;
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;

function logout() {

    try {
        document.execCommand("ClearAuthenticationCache");
        window.location.href = window.location.protocol.replace(/\:/g, '') + "://" + window.location.host + "/_layouts/customlogin14.aspx";
    }
    catch (e) { }

}

function resetTimer() {
    window.clearTimeout(t);
    t = window.setTimeout(logout, 900000);
} 

mettre ces codes dans la page principale, après le temps de repos de 15 minutes, vous verrez la page de connexion. espérons que ce quelqu'un aide

J'ai ce travail en utilisant JavaScript dans IE et Firefox, mais il vous déconnecte de tout ce que vous êtes connecté à Internet Explorer. Il fonctionne en quelque sorte dans Safari, mais Safari lance un avertissement de phishing. Ne fonctionne pas dans Opera.

    try { 
        if (document.all) 
        { 
            document.execCommand("ClearAuthenticationCache"); 
            window.location = "/"; 
        } 
        else 
        { 
            window.location = "http://logout:logout@example.com"; 
        } 
    } 
    catch(e) 
    { 
        alert("It was not possible to clear your credentials from browser cache. Please, close your browser window to ensure that you are completely logout of system."); 
        self.close(); 
    } 

Les meilleures réponses que je l'ai vu se trouvent dans les questions stackoverflow connexes:

Y at-il un équivalent de navigateur pour ClearAuthenticationCache IE?

et

Déconnexion d'un utilisateur lors de l'utilisation authentification HTTP de base

Fondamentalement, vous devez envoyer une demande AJAX au serveur avec les informations d'identification non valides et que le serveur les accepter.

avait beaucoup de problèmes avec cela, voici le code qui fonctionne, nous espérons que quelqu'un juge utile.

foreach (var cookie in Request.Cookies.Keys)
{
    Response.Cookies.Delete(cookie);
}


await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);


Response.Cookies.Append("EdgeAccessCookie", "", new Microsoft.AspNetCore.Http.CookieOptions()
{
    Path = "/",
    HttpOnly = true,
    SameSite = SameSiteMode.Lax, Expires = DateTime.Now.AddDays(-1)
});


Response.Redirect("https://adfs.[sitename].com/adfs/ls?wa=wsignout1.0");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top