在IIS中使用ASP.NET Membership进行基本认证

IIS(Internet Information Services)是微软的Web服务器软件,它提供了多种认证方法。其中,HTTP认证是一种常见的认证方式,但默认情况下,它只能验证Windows账户存储中的凭据。本文将探讨如何让IIS使用基本认证来验证ASP.NET Membership存储中的凭据。

为什么使用基本认证

尽管基本认证存在一些严重的缺点,如在未使用SSL的情况下,凭据以明文形式发送,以及由于HTTP的无状态特性,用户无法强制注销(大多数浏览器会在关闭浏览器窗口前缓存凭据),但结合IIS使用基本认证也有一些好处。它提供了一个所有实现HTTP协议的客户端都支持的通用认证接口,使用Membership可以跨多个Web应用程序共享凭据,并且它是平台独立的(无论是使用经典ASP、PHP、ASP.NET还是任何运行在IIS上的其他技术)。

实现方法

模块可以通过以下配置选项进行配置:

<authenticationSection xmlns="urn:BasicAuthenticationModule" enabled="true" realm="test" requireAuthentication="true" requireSsl="false"> <cache enableCache="false" cacheDurationMinutes="1"/> <roles enableRoles="true" applicationRoleName="sample"/> </authenticationSection>

其中:

  • enabled定义是否使用该模块。
  • realm定义在登录对话框中显示的文本。
  • requireAuthentication允许匿名和经过认证的用户登录(应用程序逻辑可以相应地处理这些情况)。
  • requireSsl如果设置为true,则用户无法在非https请求上进行认证。
  • enableCache如果启用,用户的认证密钥将被缓存一段时间。
  • cacheDuration定义缓存的持续时间(分钟)。
  • enableRoles启用应用程序的角色功能。
  • applicationRoleName- 用于分配用户权限的角色/应用程序名称。

开始使用应用程序

要开始使用应用程序,需要将下载的.dll文件复制到bin文件夹中,或者将DLL添加到全局程序集缓存(GAC),以便所有应用程序都可以在IIS中使用它。接下来,确保web.config文件中包含并配置了以下部分:

<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="authenticationSection" type="BasicAuthenticationModule.AuthenticationSection, BasicAuthenticationModule"/> </configSections> <authenticationSection xmlns="urn:BasicAuthenticationModule" enabled="true" realm="dex test" requireAuthentication="true" requireSsl="false"> <cache enableCache="false" cacheDurationMinutes="1"/> <roles enableRoles="true" applicationRoleName="sample"/> </authenticationSection> <connectionStrings> <add name="ApplicationServices" connectionString="data source=.;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/> </providers> </membership> <roleManager enabled="true"> <providers> <clear/> <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/> </providers> </roleManager> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules runAllManagedModulesForAllRequests="true"> <add name="CustomBasicAuthentication" type="BasicAuthenticationModule.AuthenticationModule, BasicAuthenticationModule"/> </modules> </system.webServer> </configuration>

会员数据库的设置

假设已经知道如何设置会员数据库。如果不知道,可以在MSDN页面上找到有关配置会员的更多信息。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485