为什么Web用户通过NTLM进行身份验证?

6

我正在使用表单身份验证,并从Visual Studio 2010启动网站。它正在使用Visual Studio开发(Web)服务器而不是IIS。web.config文件中包含以下内容:

<authenticaion mode="Forms">
  <forms name=".MyApp" protection="All" cookieless="UseCookies"/>
</authentication>

登录页面使用ASP.NET登录控件。即使用户尚未登录,我也可以看到以下内容:
HttpContext.Current.Request.LogonUserIdentity.AuthenticationType == "NTLM"
HttpContext.Current.User.Identity == System.Security.Principal.GenericIdentity
HttpContext.Current.User.Identity.AuthenticationType == "NTLM"

这个用户似乎是作为本地系统用户而不是 Web 用户进行身份验证的。这是否意味着无论他们是否登录网站,用户都将始终被认证?
Web 用户如何使用 NTLM?

你在IIS中的身份验证设置是什么样子的? - Erix
@Erix:如上所述,我没有使用IIS。 - 4thSpace
这似乎是答案 https://dev59.com/WEfRa4cB1Zd3GeqP9X3Z. Page.User.Identity.IsAuthenticated - 4thSpace
@4thSpace VS2010服务器运行在IIS上,但是它是一种紧凑版本的。 - EaterOfCode
@EaterOfCorpses:好的。关于OP,Page.User比HttpContext.Current.User正确。 - 4thSpace
显示剩余2条评论
2个回答

2
据我所知,Cassini不支持Windows身份验证。它以本地系统帐户运行,这就是您看到的NTLM身份验证。
如果您正在为Asp.Net应用程序(或WCF)开发/调试安全功能,我强烈建议您部署到IIS。

你们(和@EdSF)都发表了类似的好答案。不确定该接受谁的回答。 - 4thSpace

1

如果我没有记错,您正在以自己作为用户(已经通过身份验证)的身份运行Visual Studio(在您的用户上下文中),当您使用VS和它的开发服务器进行调试时。

Visual Studio在您的上下文中运行(您的Windows用户帐户/权限等)- Request.LogonUserIdentity.User

这不应该影响您对Web Forms / Forms Authentication的调试。成功进行Forms Auth登录后,您可以获得“ forms auth user”(web用户)的HttpContext.User.Identity.Name


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