场景:通常需要为sharepoint打通其他的系统整合到sharepoint认证,ad通常是为内部域用户,外网访问的可以使用membership来登录,那么这个既可以内部用户访问,外部用户也可以访问 ,另外也可以把其他的用户加到membership里面.
目录:
- 用aspnet_sqlreg创建memebership数据库
- 用网站管理工具添加用户和角色
- 为以下添加连接字符串:
- 你的应用程序(application)
- 管理中心(central administration)
- 令牌服务程序(secure token service application)
- 为以下添加memebership和providers
- 你的应用程序(application)
- 管理中心(central administration)
- 令牌服务程序(secure token service application)
- 创建一个新的应用程序
打开管理中心,找到管理web应用程序
点击后弹出一个界面,点击ribbon工具栏新建一个application
在弹出的窗口中选择基于身份的验证(Claims Based Authentication),完成后IIS将创建一个新的IIS站点,如果需要你可以修改这个站点名字,如Sharepoint --FBA Test ,这里需要选一个可用的端口.
向下滑动一点,配置基于forms的认证,选择开启基于forms认证,并且配置membership提供者命名为FBAMembership,接着配置角色提供者FBARoles
最后一步配置应用程序池为网络服务
滑倒底部点击OK,这个需要10-15秒创建一个新的application. 创建完成后出现如下画面;
除了使用基于windows认证之外还是用了基于forms认证,点击ok创建一个site collection并且把windows 帐号设置为主要的管理员(primary)
-
创建membership存储并且添加用户
- 创建数据库
打开visual studio 2010窗口命令工具,输入aspnet_sqlreg,回车后弹出一个向导配置数据库.按照默认将数据库命名为membershipdb,结构如下:
接下来的事情将是要添加一些用户和角色到数据库中,别且使用vs修改web配置文件中的连接字符串.在“<connectionStrings/>” 节点里面
<connectionStrings> <clear/> <add name="AspNetSqlProvider" connectionString="data source=xxx; Integrated Security=SSPI;Initial Catalog=membershipdb;" providerName="System.Data.SqlClient" /> </connectionStrings>
然后在</system.web> 标记结束的地方,添加下面的节点,这里用AspNetSqlMembershipProvider和AspNetSqlRoleProvider来命名比较好记,等之后配置的时候使用FBAMembership和FBARoles,这个命名是次要的,主要是数据库指向的字符串名字和应用程序的名字要正确.
1: <membership defaultProvider="AspNetSqlMembershipProvider"> 2: <providers> 3: <clear /> 4: <add name="AspNetSqlMembershipProvider" 5: connectionStringName="AspNetSqlProvider" 6: applicationName="/" 7: type="System.Web.Security.SqlMembershipProvider, System.Web, 8: Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 9: </providers> 10: </membership> 11: <roleManager defaultProvider="AspNetSqlRoleProvider"> 12: <providers> 13: <clear/> 14: <add name="AspNetSqlRoleProvider" 15: connectionStringName="AspNetSqlProvider" 16: applicationName="/" 17: description="Stores and retrieves roles data from the local Microsoft SQL Server database" 18: type="System.Web.Security.SqlRoleProvider, System.Web, 19: Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 20: 21: </providers> 22: </roleManager>
- 使用web site管理工具添加用户
默认情况下程序配置为windows认证,需要改成forms认证,切换到安全选项卡,点击来自网络并且保存.
保存后web.config会默认已经被修改成forms认证.在安全选项卡启用角色,点击管理或创建角色,选择FBAAdministrators,FBAOwners和FBAUsers
点击创建用户链接创建一个adminfba,并且分配角色为FBAAdministrators
你还可以创建其他的用户并且分配到不同的角色里面,如ownerfbs分配到FBAOwners角色中,userfbs分配到FBAUsers角色中
另外创建用户的时候密码有一些要求.
具体参见memebership默认设置
- 给SQL Server加权限
当我们创建了sharepoint的application,我们需要在IIS的应用程序池里面设置为网络服务帐号.这个可以连通sql认证.或许你需要在真实的环境中使用其他的帐号.
需要为应用程式池添加一个登陆账号.
下一步为他们添加适当的权限,把帐号添加到
aspnet_Membership_BasicAccess 和 aspnet_Roles_BasicAccess 角色中
千万要记住必须做这些设置,不然回报安全错误.
- 给sharepoint加基于form的认证
添加的方法同asp.net站点一样,不过我们可以使用IIS 管理工具来添加.
-
- 添加连接字符串
打开站点名字为SharePoint – FBA Test
双击连接字符串选项,并且添加一个名为AspNetSqlProvider 然后点击确定.
然后到sharepoint的web.config检查如下:
1: <connectionStrings> 2: <add name="AspNetSqlProvider" 3: connectionString="data source=xxx; Integrated Security=SSPI;Initial Catalog=memebershipdb;" 4: providerName="System.Data.SqlClient" /> 5: </connectionStrings>
然后到管理中心作如上操作.
再到web service里面找到节点SecurityTokenServiceApplication添加连接字符串同上.
添加memebership和role的角色
打开IIS管理工具,展开SharePoint – FBA Demo,点击provider,创建一个FBARoles角色并且类型为SqlRoleProvider,应用程序输入“/” 连接字符串选择AspNetSqlProvider
再添加一个FBAMembership角色,类型是SqlMembershipProvider,连接字符串为AspNetSqlProvider,application是“/”
所有添加完了之后打开配置文件就是这样:
<membership defaultProvider="i"> <providers> <add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> <add name="FBAMembership" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="AspNetSqlProvider" enablePasswordReset="false" enablePasswordRetrieval="false" passwordFormat="Clear" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" /> </providers> </membership> <roleManager defaultProvider="c" enabled="true" cacheRolesInCookie="false"> <providers> <add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> <add name="FBARoles" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" applicationName="/" connectionStringName="AspNetSqlProvider" /> </providers> </roleManager>
点击SharePoint Central Administration v4” 做如上操作,添加FBAMembership 和FBARoles 像之前描述得那样.展开SharePoint Web Services做法雷同.
-
- 为管理中心修改web.config
- 为令牌服务(secure token service)修改web.config
- 验证是否已经修改成功
然后到管理中心去打开添加用户,如果在弹出的对话框中可以看到在membership中配置的用户和角色,那么说明已经正常了,
用户的字符串像这个样子:“i:0#.f|fbamembership|adminfba”.
然后把用户设为full control
在新站点上可能看到如下错误,
选择forms认证并且登录为adminfbs即可.
登录进去你将拥有管理员的权限.
现在这个用户有完全控制,可以把之前在memebership中的角色配置到sharepoint组里面.
然后用其他的各种角色的帐号测试一下. 权限低的角色将限制了一部分权限.