Sharepoint 2010配置form认证方式(SQL账号)
一、准备工作:
1、首先我们创建我们form认证中所需要的数据库。
找到aspnet_regsql.exe,一般在C:\Windows\Microsoft.NET下,根据操作系统进行选择。因为本人是win2008 R2x64,所以打开目录为C:\Windows\Microsoft.NET\Framework64\v2.0.50727
2、双击运行后,点击下一步,然后选择为应用程序配置sql server,如图:
3、填写,服务器名称及数据库名称,然后点击下一步
4、完成
二、Form配置工作
1:创建一个基于身份认证的应用程序(具体参见上篇基于AD)
MembershipProvider 成员
RoleManager 角色
如图:
2:修改管理中心,我们创建的应用程序,还有Web服务里面的SecurityTokenServiceApplication这个3个地方的web.config
每个地方都要加连接数据库的字符串(最好自己新建的账户给予单独的DB owner访问数据库,不然可能访问不到数据)
<connectionStrings>
<addname="SQLConnectionString"connectionString="Data Source=profitsp;Database=WSS_Content_80;User ID=sa;password=xxxx" />
</connectionStrings>
找到管理中心的<system.web></system.web>,配置如下:
<roleManagerdefaultProvider="AspNetWindowsTokenRoleProvider"enabled="true"cacheRolesInCookie="false">
<providers>
<addconnectionStringName="SQLConnectionString"applicationName="/"description="Stores and retrieves roles from SQL Server"name="RoleManager"type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
<membershipdefaultProvider="MembershipProvider">
<providers>
<addconnectionStringName="SQLConnectionString"passwordAttemptWindow="5"enablePasswordRetrieval="false"enablePasswordReset="false"requiresQuestionAndAnswer="true"applicationName="/"requiresUniqueEmail="true"passwordFormat="Hashed"description="Stores and Retrieves membership data from SQL Server"name="MembershipProvider"type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
找到应用程序的<system.web></system.web>,配置如下
<membershipdefaultProvider="i">
<providers>
<addname="i"type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<addconnectionStringName="SQLConnectionString"passwordAttemptWindow="5"enablePasswordRetrieval="false"enablePasswordReset="false"requiresQuestionAndAnswer="true"applicationName="/"requiresUniqueEmail="true"passwordFormat="Hashed"description="Stores and Retrieves membership data from SQL Server"name="MembershipProvider"type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
<roleManagercacheRolesInCookie="false"defaultProvider="c"enabled="true">
<providers>
<addname="c"type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<addconnectionStringName="SQLConnectionString"applicationName="/"description="Stores and retrieves roles from SQL Server"name="RoleManager"type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
找到SecurityTokenServiceApplication站台web.config,它里面没有<system.web></system.web>,你需要自己添加
<system.web>
<roleManagerdefaultProvider="c"enabled="true"cacheRolesInCookie="false">
<providers>
<addname="c"type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<addconnectionStringName="SQLConnectionString"applicationName="/"description="Stores and retrieves roles from SQL Server"name="RoleManager"type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
<membershipdefaultProvider="i">
<providers>
<addname="i"type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<addconnectionStringName="SQLConnectionString"passwordAttemptWindow="5"enablePasswordRetrieval="false"enablePasswordReset="false"requiresQuestionAndAnswer="true"applicationName="/"requiresUniqueEmail="true"passwordFormat="Hashed"description="Stores and Retrieves membership data from SQL Server"name="MembershipProvider"type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
</system.web>
3 改好后,可以自己创建一个用户。先设置默认的提供程序,然后就能用iis的功能添加用户。添加好用户后记得还原默认提供程序
4、配置站点form验证
5、用刚才建立的form账号设置为站点集管理员
6、在iis中进行验证,参看如下
双击功能视图中的(连接字符串),然后,在打开的视图中,选择右边的“添加”。然后,在弹出窗口中输入我们连接字符串的名称、数据库服务器、数据库名称、及指定凭据。凭据为我们刚刚数据库中建立的用户名(baigujing),最后点击确定按钮。如图:
(3)、回到管理中心站点的功能视图,双击提供程序,然后选择列表中的(.NET角色)选项,点击添加按钮,在弹出的窗口中依次填写,选择类型、名称、ApplicationName、ConnectionaStringName。然后点击确定。如图:
(4)、回到提供程序界面,然后在列表中选择(.NET用户)选项,单击添加按钮,在弹出的窗口中依次填写类型、名称、applicationname、connectionstringname,然后点击确定。如图:
7、完成,可以进行登录测试
参考文章:
http://blog.sina.com.cn/s/blog_7778950d0100uu64.html
http://blog.csdn.net/foxdave/article/details/5793696