步骤概要:
1)通过C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe 创建aspnet membeship db,将SharePoint的服务账号添加为这个库的Owner。
2)针对管理中心站点,配置FBA,以便可以选择SqlUser作为站点管理员
A-通过IIS管理器,添加数据库连接字符串:AspNetSqlMembershipProvider
<connectionStrings>
<add connectionString="Server=.;Database=aspnetdb;Integrated Security=true" name="AspNetSqlMembershipProvider" providerName="System.Data.SqlClient" />
</connectionStrings>
注意:
如果手工修改web.config,不要加<remove/>,否则会删掉默认的一个连接,造成后面配置失败.
如果采用集成windows认证访问数据库,必须确保应用程序池账号具有访问数据库的权限
B-通过IIS管理器,添加Provider/提供程序:
<roleManager>
<providers>
<add name="SqlRole" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="AspNetSqlMembershipProvider" />
</providers>
</roleManager>
<membership>
<providers>
<add name="SqlMember" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="AspNetSqlMembershipProvider" enablePasswordReset="false" enablePasswordRetrieval="false" passwordFormat="Clear" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" />
</providers>
</membership>
注意:采用IIS管理器,ASP.NET下的"提供程序"操作,不要直接修改web.config
3)针对SecurityTokenWebApp,配置FBA,以便SecurityTokenWebApp的服务支持数据库用户,操作同上。
4)创建Web Application,认证方式选择Claims(基于声明的身份认证),启用Windows认证,启用FBA,提供程序名称对应填写
SqlMember和SqlRole.
5) 针对新创建的App,配置FBA,同2.
6) 添加初始用户和角色。因为第一步创建的aspnet用户库是空的,没有任何用户信息,所以首先要创建角色和用户。IIS7具有管理用户和角色的功能。
在IIS管理器中,进入"Asp.net角色",将SqlRole设置成默认提供程序,然后添加一个默认角色。
在IIS管理器中,进入"Asp.net用户",将SqlMember设置成默认提供程序,然后添加一个默认用户(管理员)。
添加完角色和用户后,再把默认角色和用户提供程序分别设置回c和i,否则用户登陆时会失败。
注意:这个步骤只针对WebApp进行,管理中心和SecurityTokenWebApp不必进行此配置。
7)创建SiteCollection,输入Sql用户作为管理员
8)现在用户已经可以登录了。但是登陆前需要先选择认证方式,一般不应该把这个复杂性暴露给客户。但是如果把Windows身份认证删除后,爬网功能会失效,所以我们采用修改系统页面的方式,使之直接跳转到Form认证的页面
修改方法:
打开C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\template\identitymodel\login\default.aspx,添加以下代码:
<script runat="server" language="C#">
void Page_Load(object s, EventArgs e){ string url = Request.RawUrl; string formLoginUrl = url.Replace("/_login/", "/_forms/"); Response.Redirect(formLoginUrl,true); } </script>
9)启用Form认证后的用户管理如何做呢?建议采用以下开源项目:
http://sharepoint2010fba.codeplex.com/
10)在使用FBA管理用户的过程中,我们可能有疑问:asp.net 的角色在SharePoint中起什么作用呢?
asp.net的角色就相当于采用AD认证时,AD中的Domain Group,可以把角色添加到SharePoint的组中。
11)做了以上操作后,在PeoplePicker中不能对用户进行模糊搜索,需要在WebApp的web.config增加:
<PeoplePickerWildcards>
<clear />
<add key="SqlMember" value="%" />
<add key="SqlRole" value="%" />
</PeoplePickerWildcards>
转载:http://www.cnblogs.com/jianyi0115/archive/2012/12/10/2811397.html