Windows 集成身份验证
作者:Mike Wasson
集成Windows 身份验证使用户使用其 Windows 凭据(使用 Kerberos 或 NTLM)登录。 客户端在授权标头中发送凭据。 Windows 身份验证最适合 Intranet 环境。 有关详细信息,请参阅 Windows 身份验证。
优点 | 缺点 |
---|---|
内置于 IIS 中。 | 不建议用于 Internet 应用程序。 |
不会在请求中发送用户凭据。 | 需要在客户端中支持 Kerberos 或 NTLM。 |
如果客户端计算机属于域(例如 Intranet 应用程序),则用户无需输入凭据。 | 客户端必须位于 Active Directory 域中。 |
注意
如果应用程序托管在 Azure 上,并且你有一个本地 Active Directory 域,请考虑将本地 AD 与 Azure Active Directory 联合。 这样,用户就可以使用其本地凭据登录,但身份验证由 Azure AD 执行。 有关详细信息,请参阅 Azure 身份验证。
若要创建使用集成Windows 身份验证的应用程序,请在 MVC 4 项目向导中选择“Intranet 应用程序”模板。 此项目模板将以下设置放在 Web.config 文件中:
<system.web>
<authentication mode="Windows" />
</system.web>
在客户端,集成Windows 身份验证适用于支持协商身份验证方案(包括大多数主要浏览器)的任何浏览器。 对于 .NET 客户端应用程序,HttpClient 类支持Windows 身份验证:
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
HttpClient client = new HttpClient(handler);
Windows 身份验证容易受到跨站点请求伪造(CSRF)攻击。 请参阅 防止跨站点请求伪造(CSRF)攻击。