Windows 集成身份验证

作者:Mike Wasson

集成Windows 身份验证使用户能够使用 Kerberos 或 NTLM 使用其 Windows 凭据登录。 客户端在 Authorization 标头中发送凭据。 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) 攻击