質問

このweb.configファイルのようにASP.NETでWindows認証を使用するときに

どのようにしてログアウトしますか?

<authentication mode="Windows" />

私はすでに失敗し、次を試してみました。それはリダイレクトしますが、ユーザーをログアウトしません。

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

背景情報:

私は、ローカルファイルへのアクセスを得るためにActive Directoryを使用してIDを偽装する必要があるため、Windows認証を使用する必要があります。 HttpContext.Current.User.IdentityWindowsIdentityされませんので、私は、フォーム認証を使用して偽装することはできません。 フォーム認証を使用して偽装する

役に立ちましたか?

解決

「Windowsの」認証を使用するときに

いいえ、サーバー側のログアウトボタンは動作しません。あなたはログアウトボタンをしたい場合は、「フォーム」の認証を使用するか、ユーザーのブラウザを閉じる必要があります。

他のヒント

のみ IEブラウザは、Windows認証を使用している場合は、ユーザーをログアウトするには、以下のJavaScriptを使用することができるため。 (注:ユーザーがIE以外のブラウザを使用している場合がありますので、ブラウザを閉じて必要ですが、推奨されません)

。 ユーザーがブラウザを閉じるには、「いいえ」をクリックすると、彼らは認証が必要なサイトのページにアクセスしようとすると、

、その後、ユーザーは、ユーザー名/パスワードの入力を求められます。

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

このコードは、SharePointのSignout.aspxページから取られました。

Windows認証は、Windows認証トークンを渡すことによってIISレベルで動作します。認証はIISのレベルで発生するので、あなたは、実際にアプリケーションコードからログアウトすることはできません。しかし、ここで問題への答えがあるように思われます。これは、2番目の質問に対処して、基本的にフォーム認証とのLogonUserのWindows APIを使用する必要がある。

私は15分後に自動ログアウトを必要とし、Windows認証とSharePointアプリケーションを持っていました。私はいくつかのコードを混合し、ここでの結果です。それが適切にIEで動作します。

<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);
} 

15分のアイドル時間が経過した後、ログインページが表示されます、あなたのマスターページにこれらのコードを入れました。 願ってこのヘルプ誰か

それはあなたがIEでログインしているすべてのあなたをログに記録しても

私は、IEとFirefoxの両方でJavaScriptを使用してこの作業を持っています。それは一種のSafariで動作しますが、Safariはフィッシング警告をスローします。オペラでは動作しません。

    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(); 
    } 

私が見た中で最高の答えは、関連StackOverflowの質問にあります:

IEのClearAuthenticationCacheと同等のブラウザはありますか?

HTTP基本認証を使用するときに、ユーザーをログアウト

基本的には、無効な資格情報を使用してサーバーにAJAX要求を送信し、サーバーがそれらを受け入れている必要があります。

このとのトラブルの多くを持っていた、以下の動作するコードは、あるうまくいけば誰かが重宝します。

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");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top