Eric's Blog

有需求才有进步

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WSS3.0较之2.0的一个较大的变化就是开始支持表单认证,而不是之前的只有AD用户认证,因此,我们可以将已有的项目信息中的用户认证资料方便地移到WS

S3.0中。其实,这也是因为WSS3.0是建立在.NET 2.0基础上的。
  去年做了一个项目,建立了一套.NET 2.0的用户认证体系,现在做个试验,尝试将用户信息移到MOSS体系下,从原理上来说,应该不存在任何问题。
  已有环境:  SQL 2K数据库服务器; MOSS2007服务器;

一、建立AD和表单双认证及匿名访问;
1、建立一个WEB应用程序,一个网站集(MOSS:8000); 默认为WINDOWS认证;
2、扩展WEB应用
  在管理中心中选“管理中心 > 应用程序管理 > 创建或扩展 Web 应用程序 > 扩展现有 Web 应用程序”
  在“将 Web 应用程序扩展到其他 IIS 网站”中选择新建IIS网站,并选择一个新的端口号:8001;
  打开允许匿名访问,并设定负载均衡的URL为MOSS:8001; 区域选“INTERNET”(或其它的也行,主要是为后面的验证程序用)
  WEB应用扩展应该来说就是同一个数据库的不同访问方式,但是网站物理文件的位置是独立的,如果在原网站上做的一些自定义功能,扩展后要重新部署,系

统并不会自动地将自定义功能也一并“扩展”.
3、配置验证提供程序
  在“管理中心 > 应用程序管理 > 验证提供程序

”中选择MOSS应用程序,会看到有两行提供者,一个是“默认”一个是“INTERNET",PROVIDER都是WINDOWS;
选择INTERNET进行修改;
在“管理中心 > 应用程序管理 > 验证提供程序 > 编辑验证”中,将验证类型改为“表单”,勾上“启用匿名访问”,并在成员身份提供程序名称中填上“

AspNetSqlMembershipProvider”,在角色管理器名称中填上“AspNetSqlRoleProvider”

现在进入8000和8001网站就是一个是AD用户认证,一个是表单身份认证;
4、修改WEB.CONFIG文件
  打开8001和8000网站的WEB.CONFIG文件,位置可以从IIS中找到;
  加入connectionStrings、membership和roleManager节,其中connectionStrings写在<configuration>中,membership和roleManager写在<syste

m.web>中,具体写法如下:
<connectionStrings>
 <remove name="ASPNETDBConnectionString1" />
 <add name="ASPNETDBConnectionString1"
  connectionString="Data Source=数据库服务器IP;
   Initial Catalog=数据库名;
   User ID=访问者名称;
   Password=访问者口令"
  providerName="System.Data.SqlClient" />
</connectionStrings>
  connectionStrings节的作用是建立一个联接数据库的字符串;
  membership,rolemanager定义了提供者的信息,要注意的是,.net 2.0中提供者的类型是SqlProvider,而MOSS中改成了System.Web.Security.SqlMembershipProvider
  applicationName要填写正确的应用程序名称;
<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="30">
      <providers>
        <clear />
        <add connectionStringName="ASPNETDBConnectionString1"
  applicationName="应用程序名称"
  enablePasswordRetrieval="false"
  enablePasswordReset="true"
  requiresQuestionAndAnswer="true"
  requiresUniqueEmail="true"
  passwordFormat="Hashed"
  maxInvalidPasswordAttempts="5"
  minRequiredPasswordLength="1"
  minRequiredNonalphanumericCharacters="0"
  name="AspNetSqlMembershipProvider"
  type="System.Web.Security.SqlMembershipProvider" />
      </providers>
    </membership>

<roleManager enabled="true">
  <providers>
    <remove name="AspNetSqlRoleProvider"/>
  <add connectionStringName="ASPNETDBConnectionString1"
  applicationName="应用程序名称"
  name="AspNetSqlRoleProvider"
  type="System.Web.Security.SqlRoleProvider,
   System.Web,
   Version=2.0.0.0,
   Culture=neutral,
   PublicKeyToken=b03f5f7f11d50a3a"/>
 </providers>
</roleManager>
  修改了WEB.CONFIG文件后,可以实现了双认证方式的访问;
5、给表单认证用户授权
  在“管理中心 > 应用程序管理 > Web 应用程序的策略 ”中添加用户,选择“internet”区域,增加表单认证的用户,并选择“完全控制”;
6、启用匿名访问;
  用刚才的表单认证用户名称登录8001网站,在“网站设置 > 权限 > 匿名访问  ”中选择“整个网站”;

二、建立单一的表单认证;

  按说单一的表单认证应该和上述的方法一样,关键就是WEB.CONFIG文件要修改正确,但是我原样做了几遍后,登录页面是出来了,但是就是不能登录,现在还不清楚是什么原因,上网查了一些资料,都是做的双认证的方式。是不是MOSS就不支持单一的表单认证呢?再想想吧,看过几天能不能搞好。
 ********

(2007-07-06)昨天把单一表单认证的问题搞好了,操作的办法和双认证是一样的。

1、建立一个新的WEB应用程序;

2、在此WEB APP下建一个首要网站;

3、在管理中心中修改认证方式为匿名和表单认证;

4、修改网站的WEB.CONFIG文件(如上);

5、此时网站就可以登录了,但是登录的用户没有任何权限;

6、将管理中心的WEB.CONFIG也作同样修改(将PROVIDER的定义加入);

7、在管理中心的策略中加上认证用户为所有者;

8、现在可以登录到网站了,并在“人员”中加上其它用户。

posted on 2008-02-09 23:46  Eric.Chai  阅读(487)  评论(0编辑  收藏  举报