zoukankan      html  css  js  c++  java
  • SharePoint 2010启用FBA步骤概要

    参考: 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/

  • 相关阅读:
    Linux-exec族函数
    Linux-竟态初步引入
    Linux-waitpid介绍
    Java基础:Java运算符:算术运算符
    Java中的算术运算符
    JAVA冒泡排序
    引用 java的一些基本概念
    Tomcat服务器的下载安装跟基本配置
    Tomcat配置Web站点
    Tomcat+JSP经典配置实例
  • 原文地址:https://www.cnblogs.com/jianyi0115/p/2811397.html
Copyright © 2011-2022 走看看