在SharePoint 2010中使用表单认证

在WSS 3.0或MOSS 2007中如果要同时使用Windows集成认证和窗体认证,必须扩展已有的Web Application到另一个端口,然后为不同的区域各自选择认证方式。这是个不错的方案,但仍然有以下问题,

  • 两者本质上是两个独立的网站,依赖于同一个内容数据据。一些自定义内容需要被部署两次,例如自定义Web Part。
  • 两者的URL不同

SharePoint 2010基于声明的混合认证方式,解决了以上问题。

使用AspNetSqlMembershipProvider设置声明认证

为SharePoint 2010设置AspNetSqlMembership窗体认证的主要步骤与SharePoint 3.0相似。本文在不同之处会重点指出。

配置AspNetMembershipProvider

先使用aspnet_regsql这个工具创建用于Asp.Net Membership认证的数据库,可取名为aspnetdb。

使用Visual Studio创建一个网站,便于在该网站的配置文件中设置提供程序。
设置<authentication mode="Forms" />,以使用窗体认证。
在web.config添加连接字符串。

 
  
< connectionStrings >
  < add connectionString ="Server=localhost;Database=aspnetdb;Integrated Security=true" name ="MyAspNetDB" providerName ="System.Data.SqlClient" />
</ connectionStrings >

在<system.web>节点下添加Memebership定义。

<membership defaultProvider="MyAspNetMembers">
  
<providers>
<add connectionStringName="MyAspNetDB"
applicationName
="/"
name
="MyAspNetMembers"
type
="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="MyAspNetRoles">
<providers>
  
<add connectionStringName="MyAspNetDB"
  applicationName
="/"
  name
="MyAspNetRoles"
  type
="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>

这里都显式定义了连接字符串、membership和roleManager,而不是使用默认的AspNetSqlMembershipProvider定义。这是为了在后面SharePoint的设置中使用相同配置。

在Visual Studio中选择菜单网站->ASP.Net配置,检查设置是否正确,并添加用于测试的用户和角色。
2010070415283316.jpg

创建SharePoint 2010 Web应用程序

在SharePoint 2010的管理中心新建Web应用程序。(Vista/Win7/Windows 2008下必须以管理员身份运行IE才能在管理中心创建Web应用程序)

2010070415321961.jpg
此处,必须选择“基于声明的身份验证”才能使用基于窗体的身份认证。这与SharePoint 3.0不同。如果在这里选择了“经典模式身份认证”,SharePoint 2010仍然会允许扩展Web应用程序并设置不同的区域,但是在区域的安全性设置中,无法设置窗体认证。
选中“启用基于窗体的身份验证”,并在下方的文本框中输入在上面步骤中设置的Membership提供程序和角色管理器名称。

设置SharePoint 2010管理中心网站web.config

打开管理中心网站的web.config。将上面步骤中的ConnectionString, Membership和RoleManager全部复制到管理中心web.config中对应位置。
并在PeoplePickerWildcards中添加所定义的MyAspNetMembers提供程序。

 
  
< PeoplePickerWildcards >
< clear />
< add key ="AspNetSqlMembershipProvider" value ="%" />
<add key="MyAspNetMembers" value="%" />
</ PeoplePickerWildcards >

设置新建Web应用程序的web.config

将上面步骤中的ConnectionString, Membership和RoleManager设置添加到新建web应用程序的web.config对应位置中。注意保留其中已有的提供程序与默认值。

 
  
< 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 connectionStringName ="MyAspNetDB"
applicationName
="/"
name
="MyAspNetMembers"
type
="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</ 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 connectionStringName ="MyAspNetDB"
applicationName
="/"
name
="MyAspNetRoles"
type
="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</ providers >
</ roleManager >

设置Security Token Service(STS)的web.config

SharePoint 2010是通过STS验证用户声明的,为了让STS能进行正确的验证,必须在STS的web.config中配置同样的提供程序。
STS工具的路径为C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\SecurityToken。

打开其web.config,添加配置如下。

 
  
< system.web >
< membership >
< providers >
< add connectionStringName ="MyAspNetDB"
applicationName
="/"
name
="MyAspNetMembers"
type
="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</ providers >
</ membership >

< roleManager >
< providers >
< add connectionStringName ="MyAspNetDB"
applicationName
="/"
name
="MyAspNetRoles"
type
="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</ providers >
</ roleManager >
</ system.web >
< connectionStrings >
< add connectionString ="Server=localhost;Database=aspnetdb;Integrated Security=true" name ="MyAspNetDB" providerName ="System.Data.SqlClient" />
</ connectionStrings >

其中,不需要为membership或roleManager设置默认的提供程序。

创建网站集并设置用户

一切配置就绪后,就可以为新建的Web应用程序创建网站集并设置用户。如图,administrator为Windows用户,stanley为基于ASP.Net Membership的窗体认证用户。

2010070416034178.jpg
点击“浏览”图标可以查找到Windows认证和窗体认证的用户。
2010070416073794.jpg

转载于:https://www.cnblogs.com/xiaoyw/articles/1770851.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值