相关疑难解决方法(0)

是否存在等同于IE的ClearAuthenticationCache的浏览器?

我这里有一些内部的.net Web应用程序,要求用户"注销"它们.我知道这在Intranet应用程序上似乎没什么问题,但它仍然存在.

我们对Intranet应用程序使用Windows身份验证,因此我们使用基本身份验证绑定到Active Directory,并且凭据存储在浏览器缓存中,而不是使用.net表单身份验证时的cookie.

在IE6 +中,您可以通过执行以下操作来利用他们创建的特殊JavaScript函数:

document.execCommand("ClearAuthenticationCache", "false")
Run Code Online (Sandbox Code Playgroud)

但是,对于其他需要支持的浏览器(即目前的Firefox,但我力求支持多浏览器),我只是向用户显示他们需要关闭浏览器以退出应用程序的消息,有效地刷新应用程序缓存.

有人知道一些命令/黑客/等.我可以在其他浏览器中使用来刷新身份验证缓存?

asp.net authentication cross-browser

25
推荐指数
4
解决办法
4万
查看次数

使用表单身份验证进行模拟

我有一个ASP.NET站点,必须使用表单身份验证而不是Windows身份验证来访问ActiveDirectoryMembershipProvider.该站点必须使用表单,因为它们需要设计的输入表单,而不是Windows身份验证使用的浏览器身份验证弹出窗口.

该站点需要模拟通过Active Directory登录的用户访问用户特定文件.

但是,WindowsIdentity.GetCurrent()由于是不一样的HttpContext.Current.User.Identity,虽然我的web.config包括:

<authentication mode="Forms">
    <forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />
Run Code Online (Sandbox Code Playgroud)

我无法使用LoginUser(),WindowsIdentity.Impersonate()因为我需要冒充AD用户来获取他们的特定权限,而我不知道用户的密码,因为Forms负责登录.

是否可以从login.aspx.cs获取System.Web.UI.WebControls.Login.Password,然后将LoginUser()令牌保存在会话变量中以供WindowsIdentity.Impersonate()日后使用?或者可能采用更安全的方法冒充正确的方法?

我很困惑为什么表单身份验证不能自动 <identity impersonate="true" />

我已阅读此http://msdn.microsoft.com/en-us/library/ms998351.aspx但它使用Windows身份验证.

asp.net impersonation forms-authentication active-directory windows-authentication

25
推荐指数
1
解决办法
2万
查看次数

使用HTTP基本身份验证时将用户注销

我希望用户能够通过HTTP基本身份验证模式登录.

问题是我还希望他们能够再次注销 - 奇怪的是,浏览器似乎并不支持.

这被认为是一种社交黑客风险 - 用户将其机器解锁并且浏览器打开,而其他人可以轻松地访问该网站.请注意,仅关闭浏览器选项卡不足以重置令牌,因此用户可能很容易错过.

所以我想出了一个解决方法,但这是一个完全的问题:

1)将它们重定向到Logoff页面

2)在该页面上激活一个脚本到ajax加载另一个带有伪凭证的页面:

$j.ajax({
    url: '<%:Url.Action("LogOff401", new { id = random })%>',
    type: 'POST',
    username: '<%:random%>',
    password: '<%:random%>',
    success: function () { alert('logged off'); }
});
Run Code Online (Sandbox Code Playgroud)

3)应该总是第一次返回401(强制传递新凭据),然后只接受伪凭证:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOff401(string id)
{
    // if we've been passed HTTP authorisation
    string httpAuth = this.Request.Headers["Authorization"];
    if (!string.IsNullOrEmpty(httpAuth) &&
        httpAuth.StartsWith("basic", StringComparison.OrdinalIgnoreCase))
    {
        // build the string we expect - don't allow regular users to pass
        byte[] enc = Encoding.UTF8.GetBytes(id + ':' + id);
        string expected …
Run Code Online (Sandbox Code Playgroud)

basic-authentication logout www-authenticate

23
推荐指数
1
解决办法
2万
查看次数

'以另一个用户身份登录'MVC 4 Windows身份验证

我有一个用MVC 4编写的Intranet项目,它使用Windows身份验证来授权和验证用户.

我需要添加"以其他用户身份登录"功能.

经过一些搜索,我发现这个解决方案建议返回401,并创建了以下Action(使用表单调用):

    // 
    // POST: /Home/LogOut

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOut()
    {
        return new HttpUnauthorizedResult();
    }
Run Code Online (Sandbox Code Playgroud)

调用Action,浏览器会弹出用户名和密码窗口,但是当结果重定向回Action时,总会返回401.

一旦用户使用新凭据登录,如何将用户重定向回上一个操作?

有没有办法使服务器端的凭据无效,而不是只返回401?

asp.net-mvc http windows-authentication logout http-status-code-401

12
推荐指数
1
解决办法
1万
查看次数

如何在asp.net应用程序中注销按钮Windows身份验证

在我的项目中,我正在使用Windows身份验证登录.注销按钮是必需的.

如果单击注销按钮页面应重定向到Logout.aspx.在Logout.aspx中,如果我按下浏览器中的重定向后退按钮.

如何控制不应该重定向到LogOut页面并要求窗口验证登录?

c# asp.net windows-authentication

1
推荐指数
1
解决办法
8463
查看次数