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)攻击