Sharepoint默认情况下,所采用的成员资格认证是基于AD(活动目录)进行验证,而在定制好的Sharepoint网站在向外网发布后,需要注册的用户才可以对网站进行修改操作,非注册用户则只能对网站进行浏览。那么这样就需要用户登录系统的步骤,而利用AD(活动目录)模式来对用户进行资格验证就需要将企业活动目录服务发布到外网上才行,这样不太方便也不安全,所以需要改变登录Sharepoint网站的成员资格认证方式即采用Web页面的Form表单验证。
为Sharepoint网站配置成Form表单验证的步骤:
1、创建Sql Server数据库,可利用VS 2005或VS 2008的命令行工具,利用aspnet_regsql命令来启动创建用于保存用户信息的数据库向导
2、打开VS 2005或VS 2008创建Web应用程序,并配置Web应用程序的web.config文件使Web应用程序可连接到创建的用户信息数据库中,然后打开Web应用程序的[Solution Explorer]窗口并单击启动[Asp.net Configuration]的配置页面,并根据页面的提示信息创建用户信息。注意:在[Asp.net Configuration]的配置页面中选择“安全”选项卡然后单击“选择身份验证类型”进行此页面并选择“通过 Internet”即通过Form表单身份验证。
修改Web应用程序的Web.config的文件,分为如下几处:
a、<system.web>标签上添加
<connectionStrings>
<add name="AspNetSqlProvider" connectionString="server=数据库所在的服务器名称或IP地址;uid=登录数据库用户名;pwd=登录数据库密码;initial catalog=数据库的名称"/>
</connectionStrings>
b、在<system.web>与</system.web>标签内添加
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add connectionStringName="AspNetSqlProvider"
passwordAttemptWindow="10"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
description="描述信息"
name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
<providers>
<remove name="AspNetSqlRoleProvider" />
<add connectionStringName="AspNetSqlProvider"
applicationName="/"
description="描述信息"
name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
3、打开Sharepoint管理中心创建Web应用程序及对应的Sharepoint网站集
4、配置新创建的Sharepoint网站及Sharepoint管理中心的Web.config文件,即配置连接到用户成员的数据库及网站验证所采用的成员资格验证与角色资格验证
注意:这里Sharepoint网站Web.config文件的配置与刚在VS中新建的Web应用程序里的web.config配置是一样的,除了Sharepoint管理中心有差异。
修改Sharepoint管理中心的Web.config文件分为如下几处:
主要是修改<roleManager>标签 里的defaultProvider属性修改成继承于WSS3.0角色管理以便更好的与WSS3.0整合,若使用自定义的则不能与WSS3.0进行整合起来。
a、<system.web>标签上添加
<connectionStrings>
<add name="AspNetSqlProvider" connectionString="server=数据库所在的服务器名称或IP地址;uid=登录数据库用户名;pwd=登录数据库密码;initial catalog=数据库的名称"/>
</connectionStrings>
b、在<system.web>与</system.web>标签内添加
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add connectionStringName="AspNetSqlProvider"
passwordAttemptWindow="10"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
description="描述信息"
name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<remove name="AspNetSqlRoleProvider" />
<add connectionStringName="AspNetSqlProvider"
applicationName="/"
description="描述信息"
name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
5、在Sharepoint管理中心配置刚新建的Sharepoint Web应用程序的成员验证方式及角色验证并启用“Form表单”验证,与启用“匿名访问”(可以不用,若启用匿名访问则可以使网站任意的用户都可访问,且在网站的页面上会多个有“登录”功能)
打开Sharepoint管理中心——》应用程序管理——》验证提供程序,并定位到要更改的Sharepoint Web应用程序,然后在“成员身份提供程序名称”文本框中输入“AspNetSqlMembershipProvider",在“角色管理器名称”的文本框中输入“AspNetSqlRoleProvider”,在“验证类型”处选择“表单”
6、打开IE访问新建并启用Form表单验证的Sharepoint网站,可出现用户登录的页面,输入用户名与密码