MOSS 2007-表单认证-分别以SQL和AD为membership-Provider

在网上看到别人写的以SQL作为membership-Provider的MOSS表单认证,我就自己动手,改为以AD作为membership-Provider进行单认证。

(SQL版是转别人的)

一、建立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、现在可以登录到网站了,并在“人员”中加上其它用户。

(AD版,自己动手做的,其实差别只有一点,就是改变系统的membership-Provider,呵呵。用AD作为membership-Provider的好处就是,和企业原来的AD用户相一致,不用一份用户在AD中,一份用户在SQL数据库中,不管是外网认证还是内网认证都是同一套用户,为以后的系统统一身份认证作准备。)

<!--***************************************-->
    <connectionStrings>
        <add name="ADConnectionString" connectionString="LDAP://qwliang.com/OU=qwliang科技股份有限公司,DC=qwliang,DC=com" />
    </connectionStrings>
    <!--***************************************-->
        <!--***************************************-->
        <!-- membership provider -->
                <membership defaultProvider="MembershipADProvider">
            <providers>
              <add name="MembershipADProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral,  PublicKeyToken=b03f5f7f11d50a3a" enableSearchMethods="true" connectionStringName="ADConnectionString" connectionUsername="qwliang\admin" connectionPassword="qwliang" />
            </providers>
        </membership>
        <!--***************************************-->

你可能感兴趣的:(Provider)