设为首页 收藏本站
查看: 985|回复: 0

[经验分享] SharePoint 2010启用FBA步骤概要

[复制链接]

尚未签到

发表于 2015-9-25 12:44:01 | 显示全部楼层 |阅读模式
  参考: http://donalconlon.wordpress.com/2010/02/23/configuring-forms-base-authentication-for-sharepoint-2010-using-iis7/
  步骤概要:
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>
  12)PeoplePicker不能显示用户全名
  asp.net默认的membership用户属性只支持账号,不支持显示名,peopleEditor也就无法显示用户全名。
  即使用sharepoint2010fba的解决方案可以添加全名,peopleEditor也无法显示。经过研究sharepoint2010fba是先把用户账号添加进membership db,然后把用户添加到SPSite中同时设置显示名。
  解决方案:既然sharepoint2010fba已经把用户添加进网站了,那么控制peopleEditor直接查询网站用户而不是查询membership即可。
  运行命令:
stsadm -o setproperty -url http://app99.test.com -pn peoplepicker-onlysearchwithinsitecollection -pv yes
  后记: 在采用ActiveDirectoryMembershipProvider的时候,有同样的问题,这时候要完美的解决用户问题,设置onlysearchwithinsitecollection 后,最好开发一个自定义的添加AD账号作为表单用户的功能,在添加账号的同时设置用户其他属性。
  这样设置后,在PeoplePicker中直接输入用户名,不能完全匹配,需要设置app.PeoplePickerSettings.PeopleEditorOnlyResolveWithinSiteCollection = true;
  var app = SPWebApplication.Lookup(new Uri("http://dc:93"));
            Console.WriteLine(app.PeoplePickerSettings.OnlySearchWithinSiteCollection);
  app.PeoplePickerSettings.PeopleEditorOnlyResolveWithinSiteCollection = true;
              app.Update();
  参考:http://support.microsoft.com/kb/967135/zh-cn
  
  13)如果自定义页面用了PeopleEditor,可以设置: PeopleEditor1.PrincipalSource = Microsoft.SharePoint.Utilities.SPPrincipalSource.UserInfoList;
  
  若是采用基于AD用户的Form认证,可以参考: http://www.c-sharpcorner.com/uploadfile/nipuntomar/sharepoint-2010-form-based-authentication-using-active-directory/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118706-1-1.html 上篇帖子: SharePoint特性一览 下篇帖子: SharePoint 客户端对象模型 (一) ECMA Script
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表