如何将窗体身份验证用于 Active Directory
本页内容
目标 | |
适用范围 | |
如何使用本章内容 | |
摘要 | |
创建一个具有登录页的 Web 应用程序 | |
配置 Web 应用程序的窗体身份验证 | |
开发 LDAP 身份验证代码,以便在 Active Directory 中查找用户 | |
开发 LDAP 组检索代码,以便查找用户的组成员身份 | |
验证用户身份和创建窗体身份验证票证 | |
实现身份验证请求处理程序以构造 GenericPrincipal 对象 | |
测试应用程序 |
目标
本章的目标是:
• |
创建一个使用窗体身份验证针对 Active Directory 验证用户身份的 Web 应用程序。 |
• |
从 Active Directory 获取一个通过身份验证的用户所属的组和通讯组的列表。 |
• |
创建一个与使用 HttpContext.Current.User 属性的用户 Web 请求相关联的 GenericPrincipal 对象。 |
适用范围
本章适用于以下产品和技术:
• |
Microsoft Windows® XP 或 Windows 2000 Server (Service Pack 3) 以及更高版本的操作系统 |
• |
Active Directory |
• |
Microsoft .NET Framework 版本 1.0 (Service Pack 2) 以及更高版本 |
• |
Microsoft Visual Studio® 1.0 .NET 以及更高版本 |
• |
Microsoft Visual C#® .NET |
• |
Microsoft SQL Server® 2000 (Service Pack 2) 以及更高版本 |
如何使用本章内容
若要学好本章内容:
• |
您必须具有使用 Visual C# .NET 和 Visual Studio .NET 的经验。 |
• |
您必须具有使用 ASP.NET 开发 Web 应用程序的经验。 |
• |
您必须具有使用 Active Directory 的经验。 |
• |
您必须访问一个用于测试您的应用程序的 Active Directory 实例。该实例不能是生产系统。 |
• |
阅读本指南中的第 3 章身份验证和授权。这一章提供了有关各种身份验证机制的详细信息,并讨论了基于 .NET 角色的安全性。 |
• |
阅读本指南中的第 8 章 ASP.NET 安全性。这一章提供了有关 ASP.NET Web 窗体身份验证的详细信息。 |
摘要
借助 ASP.NET 窗体身份验证,用户可以通过在 Web 窗体中输入凭据(用户名和密码)来表明自己的身份。在收到这些凭据后,Web 应用程序针对数据源检查凭据,以便验证用户的身份。
本章介绍了如何通过使用轻型目录访问协议 (LDAP),针对 Microsoft® Active Directory® 目录服务来验证用户的身份。这里还介绍了如何检索用户所属的安全组和通讯组的列表,以及如何配置 GenericPrincipal 对象以便用于基于 .NET 角色的授权。
创建一个具有登录页的 Web 应用程序
此过程创建一个简单的 Visual C# Web 应用程序,其中包含一个用户可以输入用户名和密码的登录页,以及一个显示与当前 Web 请求相关联的身份名称和组成员身份信息的默认页。
• |
创建一个具有登录页的 Web 应用程序
|
配置 Web 应用程序的窗体身份验证
此过程编辑应用程序的 Web.config 文件,以便配置应用程序的窗体身份验证。
• |
配置 Web 应用程序的窗体身份验证
|
开发 LDAP 身份验证代码,以便在 Active Directory 中查找用户
此过程向 Web 应用程序中添加一个新的帮助器类,用于封装 LDAP 代码。该类最初将提供一个 IsAuthenticated 方法,用于针对 Active Directory 用户对象验证提供的域、用户名和密码。
• |
开发 LDAP 身份验证代码,以便在 Active Directory 中查找用户
|
开发 LDAP 组检索代码,以便查找用户的组成员身份
此过程扩展了 LdapAuthentication 类,提供了一个 GetGroups 方法,用于检索当前用户所在组的列表。GetGroups 方法将以管道符分隔的字符串形式返回组列表,如下所示:
"Group1|Group2|Group3|"
• |
开发 LDAP 组检索代码,以便查找用户的组成员身份
|
验证用户身份和创建窗体身份验证票证
此过程实现验证用户身份的 btnLogon_Click 事件处理程序。对于通过身份验证的用户,随后将创建一个包含用户组列表的窗体身份验证票证。然后,将用户重定向到他们所请求的原始页(在重定向到登录页之前)。
• |
验证用户身份和创建窗体身份验证票证
|
实现身份验证请求处理程序以构造 GenericPrincipal 对象
此过程实现 global.asax 中的 Application_AuthenticateRequest 事件处理程序,并为当前通过身份验证的用户创建一个 GenericPrincipal 对象。这将包含用户所在组的列表。该组列表是从身份验证 cookie 中包含的 FormsAuthenticationTicket 中检索而来的。最后,将 GenericPrincipal 对象与为每个 Web 请求创建的当前 HttpContext 对象关联起来。
• |
实现身份验证请求处理程序以构造 GenericPrincipal 对象
|
测试应用程序
此过程使用 Web 应用程序请求 default.aspx 页。您将被重定向到登录页以进行身份验证。身份验证成功后,浏览器将被重定向到最初请求的 default.aspx 页。这将从 GenericPrincipal 对象(该对象在身份验证过程中与当前请求关联起来)中提取并显示通过身份验证的用户所属的组的列表。
• |
测试应用程序
|