需要用户使用NTLM重新进行身份验证

3

我正在使用asp.net mvc 2.0网站,并使用NTLM(在web.config中的authenication="windows")进行身份验证。

目前,一旦用户登录,它会让他们保持登录状态数周时间。

应用程序的使用正在向共享使用已登录服务帐户的计算机的用户开放。

为了处理这些用户,我需要网站每次重新提示用户输入他们的AD凭据。(网站上的活动必须与唯一标识的用户相关联。)

感谢您能提供的任何帮助。

Trey Carroll


每个用户在域中登录的是不同的帐户吗? - Raj Kaimal
不幸的是,尽管用户已经有了域登录,但是他们通过一个公共的“信息亭账户”访问终端。这意味着我需要在每个访问页面的首次挑战每个访客,然后允许他们在该凭据下在其会话期间导航站点。现在听起来切换到表单验证是一个很好的建议。 - Trey Carroll
3个回答

4
一种方法是使用HTTP 401挑战处理Http Authentication过程。其原则是拒绝凭据,即使它们是有效的,强制所有用户(或根据AD属性/代码参数确定的某些用户)重新输入他们的凭据。
您必须在响应中发送HTTP 401代码,以指示浏览器不接受已发送的凭据。根据浏览器配置,您需要发送1到3个401响应(可以使用cookie来处理计数器),以强制浏览器提示用户,因此计数最多为3次。
if (mycounter < 3)
{
    Response.StatusCode = 401; 
    Response.End();
}

HTTP的NTLM身份验证机制

IIS身份验证


有一个类似但不是重复的问题被提出,我以更详细的方式回答了它: http://stackoverflow.com/questions/20244860/iis-site-for-both-intranet-and-anonymous-users/20290262#20290262 - JoeBilly

2

我建议将该应用程序改为使用表单身份验证。您仍然可以针对AD验证凭据,但是您将能够强制执行登录要求。


0

你能确保他们只使用不自动支持NTLM的浏览器吗?例如,当我在Firefox中访问我们的Sharepoint服务器时,我必须使用我的域凭据登录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接