ASP.Net 身份验证方法--1

Posted on 2008-02-21 09:42  dnnl  阅读(1589)  评论(0编辑  收藏  举报
ASP.Net 身份验证方法--1(来自MSDN) ASP.NET 使用身份验证提供程序实现附加的身份验证方案,这些身份验证提供程序独立于 IIS 身份验证方案并且只用于 IIS 身份验证方案之后。ASP.NET 支持下列身份验证提供程序: ASP.NET 使用身份验证提供程序实现附加的身份验证方案,这些身份验证提供程序独立于 IIS 身份验证方案并且只用于 IIS 身份验证方案之后。ASP.NET 支持下列身份验证提供程序: Windows(默认) Forms Passport None 若要启用 ASP.NET 应用程序的身份验证提供程序,请使用 machine.config 或 Web.config 中的身份验证元素,如下所示: <system.web>    <!-- mode=[Windows|Forms|Passport|None] -->    <authentication mode="Windows" /> </system.web> 每个 ASP.NET 身份验证提供程序都支持 OnAuthenticate 事件,该事件在身份验证过程中发生,您可以使用该事件实现自定义的身份验证方案。该事件的主要目的是将实现 IPrincipal 接口的自定义对象附加到上下文中。使用何种 ASP.NET 身份验证提供程序通常取决于选择何种 IIS 身份验证方案。如果使用除“匿名”之外的任何 IIS 身份验证方案,可能需要使用 Windows 身份验证提供程序。否则,将使用 Forms、Passport 或 None。 Windows Windows 身份验证提供程序依靠 IIS 来执行所需的客户端身份验证。在 IIS 验证客户端身份后,它将安全标记传递给 ASP.NET。ASP.NET 基于从 IIS 获得的安全标记构造一个 WindowsPrincipal 类的对象,并将其附加到应用程序上下文中。优点 身份验证使用 Windows 帐户,所以不需要编写任何自定义的身份验证代码。 缺点 可能要求使用和管理单个 Windows 用户帐户。 此外,每一个 IIS 身份验证方案都有其自身的优缺点,在选择安全模型时,应对这些加以考虑。实现若要实现 Windows 身份验证,请引用相应的 IIS 身份验证方案。    Forms (Cookie) Forms 身份验证提供程序是一个身份验证方案,它使应用程序可使用 HTML 窗体直接从客户端收集凭据。客户端直接向应用程序代码提交凭据以进行身份验证。如果应用程序验证该客户端的身份,则它向该客户端发出一个 cookie,该客户端在后面的请求中提交该 cookie。如果对于受保护资源的请求不包含该 cookie,则应用程序将该客户端重定向到登录页。当验证凭据时,应用程序可以用多种方法存储凭据,如配置文件或 SQL Server 数据库。有关更多信息,请参见 Forms 身份验证提供程序。注意   ISAPI 服务器扩展仅处理那些它拥有其应用程序映射的资源。例如,ASP.NET ISAPI 服务器扩展仅拥有特定资源(如 .asax、ascx、.aspx、.asmx 和 .config 文件,这里只给出这几个)的应用程序映射。默认情况下,ASP.NET ISAPI 服务器扩展以及随后的 Forms 身份验证提供程序不处理任何对非 ASP.NET 资源(如 .htm、.jpg 或 .gif 文件)的请求。优点 允许使用任意条件自定义身份验证方案。 可用于身份验证或身份确认。 不需要相应的 Windows 帐户。 缺点 受制于 cookie 生存期的重放攻击,除非使用 SSL/TLS。 仅适用于映射到 Aspnet_isapi.dll 的资源。 实现若要实现 Forms 身份验证,必须创建自己的登录页并且为未授权客户端重定向 URL。还必须为帐户验证创建自己的方案。下面是一个使用 Forms 身份验证的 Web.config 配置的示例: <!-- Web.config file --> <system.web> <authentication mode="Forms"> <forms forms="401kApp" loginUrl="/login.aspx" /> </authentication> </system.web> 由于正在实现自己的身份验证,通常需要为匿名身份验证配置 IIS。 Passport Passport 身份验证提供程序是一个由 Microsoft 提供的集中式身份验证服务,它为成员站点提供一次登录和核心配置文件服务。Passport 是一个基于窗体的身份验证服务。当成员站点注册到 Passport 时,Passport 服务就授予一个站点特定的密钥。Passport 登录服务器使用该密钥加密和解密在成员站点和 Passport 登录服务器之间传递的查询字符串。有关更多信息,请参见 Passport 提供程序。优点 支持跨多个域的一次登录。 与所有浏览器兼容。 缺点 为身份验证过程放置一个外部依赖项。 实现若要实现 Passport,在使用之前必须向 Passport 服务注册您的站点、接受许可协议并安装 Passport SDK。必须如下配置应用程序的 Web.config 文件: <!-- Web.config file --> <system.web> <authentication mode="Passport" /> </system.web> 有关更多信息,请参见 Microsoft Passport Web 站点 (http://www.passport.com/)。 None(自定义身份验证)当根本不对用户进行身份验证或要开发自定义身份验证代码时,请将“None”指定为身份验证提供程序。例如,您可能想要使用 ISAPI 筛选器开发您自己的验证用户身份的身份验证方案,并手动创建 GenericPrincipal 类的对象。有关更多信息,请参见 GenericPrincipal 类。注意   ISAPI 服务器扩展仅处理那些它拥有其应用程序映射的资源。例如,ASP.NET ISAPI 服务器扩展仅拥有特定资源(如 .asax、ascx、.aspx、.asmx 和 .config 文件,这里只给出这几个)的应用程序映射。默认情况下,ASP.NET ISAPI 服务器扩展以及随后的 None(自定义)身份验证提供程序不处理任何对非 ASP.NET 资源(如 .htm、.jpg 或 .gif 文件)的请求。优点提供对身份验证过程的完全控制,有最大的灵活性。如果不实现身份验证方法,则提供最高的性能。缺点自定义的身份验证方案很少会像操作系统提供的方案一样安全。要求额外的工作来自定义身份验证方案。实现若要不进行身份验证或开发自己的自定义身份验证,请创建一个自定义的 ISAPI 筛选器来跳过 IIS 身份验证。请使用下面的 Web.config 配置: <!-- Web.config file --> <system.web>    <authentication mode="None" /> </system.web>   附录: <authentication> 元素 配置 ASP.NET 身份验证支持。该元素只能在计算机、站点或应用程序级别声明。如果试图在配置文件中的子目录或页级别上进行声明,则将产生分析器错误信息。 <configuration>    <system.web>       <authentication> <authentication mode="Windows|Forms|Passport|None"> <forms name="name" loginUrl="url" protection="All|None|Encryption|Validation" timeout="30" path="/" > requireSSL="true|false" slidingExpiration="true|false"> <credentials passwordFormat="Clear|SHA1|MD5"> <user name="username" password="password"/> </credentials> </forms> <passport redirectUrl="internal"/> </authentication>

Copyright © 2024 dnnl
Powered by .NET 8.0 on Kubernetes