博客地址:http://blog.csdn.net/shelleyliu0415
概括介绍:基于Forms-based的身份验证是基于 ASP.NET Membership和Role provider 提供程序身份验证的基于Claims-Based的identity management系统,基于Forms-based authentication 根据用户在logon form(通常是一个网页)中键入的credentials 验证用户身份。未经身份验证的请求将重定向到登录页,用户必须在该页中提供有效凭据并提交表单。系统会为经过身份验证的请求发布一个 Cookie,其中包含用于重建后续请求的标识的项。
接下来图文并茂形式为大家介绍一下如何在SharePoint 2016 RC中部署FBA环境。
整个部署分为四个阶段,分别为:
- 第一阶段:在CA中创建一个以Forms-based Authentication的Web Application
- 第二阶段:配置ASP.net的DB用来存储FBA User和Roles的信息
- 第三阶段:创建Role和Users
- 第四阶段:为Web Application配置Membership和Role Provider
具体部署步骤:
第一阶段:创建Web Application,勾选“Enable Forms Based Authentication”,填写ASP.NetMembership Provider Name以及Role Manager Name,如下图所示:
第二阶段:配置ASP.net的DB用来存储FBA User和Roles的信息。
- 开始->运行->cmd,输入cd C:\Windows\Microsoft.NET\Framework\v2.0.50727。
- 输入ASPNET_REGSQL,会运行“ASP.NET SQL Server Setup Wizard”。
- 点击Next至Select the Server and Database界面,Server处填写SQL的实例名,认证方式可以选择Windows认证或者sa认证,如果是windows认证,请确保当前运行命令的用户有DB creator权限。Database处填写一个用来存储FBA User & Roles的DB名,即我们所要创建的DB名。在这里,我们使用的认证方式是windows认证方式,具体填写内容如下图所示。如果你想采用sa认证的方式去创建,请确保配置SharePoint的用户对这个sa用户创建出来的DB拥有“读”的权限。Next至finish,DB创建完毕。
第三阶段:创建Role和Users,具体步骤如下:
- 找一个位置新建个文件夹,用于存储链接DB的Web Configure文件(通过该文件,界面化创建user和roles)。我们可以把这个文件夹建在C盘的根目录下,这样方便查询。
- 运行Visual Studio 2008,File->Open->Web Site,选择File System下刚创建的物理文件夹FBA,打开。
- 在Solution Explorer中,右键点击路径,选择add new item,选择Web Configuration File,命名默认为Web.Config。
- 配置文件中搜索<system.web>,在行代码上方输入<connectionstrings>……<connectionStrings>一段代码(可在附件的配置文件中查找),输入后检查,如果我们输入的这段代码上方有多余的<connectionStrings>节点需要删除。
<connectionStrings>
<remove name="AspNetDbFBADemoConnectionString"/>
<add name="AspNetDbFBADemoConnectionString"
connectionString="Data source=SharePoint2016;IntegratedSecurity=SSPI;Initial Catalog=FBA"
providerName="System.Data.SqlClient" />
</connectionStrings>
注:此处有几个地方需要改一下名字,Data source后边填写SQL的实例名,Initial Catalog后边填写我们在第一步中创建的DB名。
<system.web>以下的代码全部删除掉,用下边这一段代码来代替。
<authentication mode="Forms" />
<membership defaultProvider="FBADemoMember">
<providers>
<add connectionStringName="AspNetDbFBADemoConnectionString"
enablePasswordRetrieval="false"
enablePasswordReset="false"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
name="FBADemoMember" type="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</membership>
<!--role provider -->
<roleManager enabled="true"defaultProvider="FBADemoRole">
<providers>
<add connectionStringName="AspNetDbFBADemoConnectionString"
applicationName="/"
name="FBADemoRole" type="System.Web.Security.SqlRoleProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>
</system.web>
</configuration>
- save之后点击Website->ASP.NET Configuration,在弹出的页面点击Security,点击Select Authentication Type,选择From the internet,并点击右下角的Done按钮。
- 然后就可以创建roles和user了。
第四阶段:为Web Application配置Membership和RoleProvider,参考了MSDN的相关资料,点击链接。
- 新 Web Application的 Web.Config 文件,C点击路径C:\inetpub\wwwroot\wss\VirtualDirectories,找到Web Site对应端口号的Folder打开,将Web.Config文件保存一份,然后用vs打开,在</configSections> tag后输入如下:
<connectionStrings>
<addname="AspNetSqlMembershipProvider"
connectionString="Initial Catalog=FBA;datasource=SharePoint2016;Integrated Security=SSPI;" />
</connectionStrings>
在<Providers> tag里, <membership> tag下添加如下信息,
<add name="FBADemoMember"
connectionStringName="AspNetSqlMembershipProvider"
applicationName="/"
type="System.Web.Security.SqlMembershipProvider,
System.Web,Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
在<Providers> tag里,在<RoleManager>Section下输入如下信息,如图所示:
add name="FBADemoRole"
type="System.Web.Security.SqlRoleProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AspNetSqlMembershipProvider"
applicationName="/" />
保存Web Config文件。
- 管理中心 Web 应用程序 Web.Config 文件,点击路径C:\inetpub\wwwroot\wss\VirtualDirectories,找到CA Web Site对应端口号的Folder打开,将Web.Config文件保存一份,然后用vs打开,在</configSections> tag后输入如下:
<connectionStrings>
<addname="AspNetSqlMembershipProvider"
connectionString="Initial Catalog=FBA;datasource=SharePoint2016;Integrated Security=SSPI;" />
</connectionStrings>
在<Providers> tag里,在<RoleManager>Section下输入如下信息,如图所示:
add name="FBADemoRole"
type="System.Web.Security.SqlRoleProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AspNetSqlMembershipProvider"
applicationName="/" />
在<Providers> tag里, <membership> tag下添加如下信息,
<add name="FBADemoMember"
connectionStringName="AspNetSqlMembershipProvider"
applicationName="/"
type="System.Web.Security.SqlMembershipProvider,
System.Web,Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
保存Web Config文件。
- Security Token Service Web.Config 文件,点击路径C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\WebServices\SecurityToken,将web.config文件保存一份,然后用vs打开,在 <Configuration> 部分,添加以下示例条目:
<connectionStrings>
<addname="AspNetSqlMembershipProvider"
connectionString="Initial Catalog=FBA;datasource=SharePoint2016;Integrated Security=SSPI;" />
</connectionStrings>
在</configuration>上填写如下信息:
<system.web>
<roleManagerenabled="true" cacheRolesInCookie="false"cookieName=".ASPXROLES" cookieTimeout="30"cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true"cookieProtection="All" createPersistentCookie="false"maxCachedResults="25">
<providers>
<addconnectionStringName="AspNetSqlMembershipProvider"applicationName="/" name="AspNetSqlRoleProvider"type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<addname="FBADemoRole"
type="System.Web.Security.SqlRoleProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AspNetSqlMembershipProvider"
applicationName="/" />
</providers>
</roleManager>
<membershipuserIsOnlineTimeWindow="15" hashAlgorithmType="">
<providers>
<addconnectionStringName="AspNetSqlMembershipProvider"enablePasswordRetrieval="false" enablePasswordReset="true"requiresQuestionAndAnswer="true" passwordAttemptWindow="10"applicationName="/" requiresUniqueEmail="false"passwordFormat="Hashed" name="AspNetSqlMembershipProvider"type="System.Web.Security.SqlMembershipProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<addname="FBADemoMember"
connectionStringName="AspNetSqlMembershipProvider"
applicationName="/"
type="System.Web.Security.SqlMembershipProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
</system.web>
在上述条目中,替换以下内容:
- <add name="membership" 中您的成员资格提供程序的名称。
- data source=" Your Server" 中您的Server Name。
- <add name="roleManager" 中您的角色管理器的名称。
- connectionStringName="AspNetSqlMembershipProvider"
在添加此条目之后,保存并关闭 Web.Config 文件。
最后,验证配置是否正确,在配置FBA的Web Application下,new一个Site Collection,成功之后,给FBA的User权限,如下图所示:
成功赋予权限之后,用该FBA User登录SiteCollection,如下图所示:
登录成功,显示Jeff登录,如下图所示:
如果配置期间发现CA访问不了,请仔细检查CA的Web Config文件是否配置有问题,如果用户跳转出现问题,请检查Token Service的Web Config文件是否正确配置。
谢谢大家的阅读!