分三块: 1.配置 2.数据库添加用户 3.创建注册的页面
大纲 见黄色高亮处
1
先参考: 把配置文件弄好
http://www.cnblogs.com/jianyus/p/4617548.html
SharePoint 2013 配置基于表单的身份认证
前 言
这里简单介绍一下为SharePoint 2013 配置基于表单的身份认证,简单的说,就是用Net提供的工具创建数据库,然后配置SharePoint 管理中心、STS服务、Web应用程序的三处web.config即可。下面,让我们以图文的方式了解创建的具体过程吧。
使用微软提供的工具,创建数据库,找到Framework64下的aspnet_regsql,如下图:
这里我发现C:\Windows\Microsoft.NET\Framework64的v2.0.50727路径下和v4.0.30319路径下都有这个文件,试着分别运行了,发现没什么区别;
双击aspnet_regsql,弹出创建向导,点击下一步,如下图:
选择安装选项,我们是要配置,不是移除,如下图:
填写数据库服务器名和数据库名称,我这里是单独实例,不是默认的实例,所以server看起来比较奇怪,如下图:
确认你的设置,是不是正确,如下图:
数据库已经被创建或修改,这时我们可以连接到数据库上查看一下了,如下图:
打开Sql Server管理工具,可以看到我们创建的数据库和表,确实已经创建了,如下图:
而后修改CA、STS服务、Web App的web.config即可;
打开IIS,从IIS里找到管理中心的站点,右键浏览,修改配置文件,如下图:
当然,如果你非常熟悉,直接去找到配置文件即可;
如下配置文件,用Visual Studio打开,记事本也可以,但是结构不清晰;
如下位置添加数据库连接串(</SharePoint>和<system.web>之间),如下图:
<connectionStrings> <add name="SqlConnectionString" connectionString="Data Source = DB;Initial Catalog = FormAuthenticationDB;Integrated Security = SSPI"/> </connectionStrings>
如下位置添加Membership Provider和Role Provider
按 Ctrl+C 复制代码
<textarea style="margin:0px; padding-top:0px; padding-left:0px; width:708px; height:393.6px; font-family:'Courier New'; font-size:12px; line-height:1.5"></textarea>
按 Ctrl+C 复制代码
添加完毕的截图,覆盖掉已经存在的空节点,如下图:
修改STS服务的配置文件,通过IIS找到,如下图:
在</system.serviceModel>下面添加数据库连接字符串,如下图:
在下面直接添加<system.web>节点和Membership Provider和Role Provider,如下图:
修改Web App的配置文件,如下图:
在</SharePoint>下面,添加数据库连接字符串,如下图:
找到下图位置,添加我们的节点,如下图:
添加完毕,如下图:
到此,配置文件均修改成功,去管理中心修改Web App的认证即可。
打开管理中心,找到我们要配置的web应用程序,点击验证提供程序,如下图:
勾选FBA认证,并填写我们的membership和provider,然后保存,如下图:
打开网站,已经可以选择登陆方式了,如下图:
选择表单登陆,进入登陆页面(但是此时还不能登录,因为没有为网站添加form认证的用户),如下图:
去管理中心,修改网站集管理员,查找已经添加好的用户,如下图:
而后用linyu来登陆,可以发现已经登陆上来了,说明表单认证配置成功!
查看用户信息,账户名称确实是表单认证的账户,如下图:
总 结
其实表单认证的配置是SharePoint开发的一个基本配置,拿出来也是给大家一个参考,希望能给需要的人带来帮助。
2
然后下载:
http://cks.codeplex.com/releases/view/7450
或: http://fbamanagementtool.codeplex.com/
Forms Based Authentication (FBA) User Management Tool for SharePoint 2010
http://cks.codeplex.com/releases/view/7450
或: http://fbamanagementtool.codeplex.com/
这个工具将在AspnetDb中创建 user1 … user50等50个用户,密码为!Passw0rd。
在管理中心 安全性 指定Web应用程序用户策略中, 添加用户,
即可登陆了...(添加的用户要是表单用户)
参考:
之前公司开发的Sharepoint 网站使用的是Classic Mode Authentication方式(基于Windows AD方式),近期的客户需求需要使这个已投入使用的Sharepoint应用不但能支持原有的AD认证方式,并且还要能支持Form方式。
于是问题出来了,一般我们在新创建一个Web Application时,系统会让你决定此Web Application到底是基于哪一种Authentication,如下图:
而一旦你部署了此Web Application,一朝你想要修改它,你在Sharepoint的 Central Administration 界面上就再也找不到重新设定此Web Application认证方式的途径了。
此处,作为一个整体总结,描述具体的操作步骤(有些步骤,尤其是准备步骤,你可以在网上找到不少的参考,在此处只是作为一个整体把它们备注下来)。
1. 创建Form认证需要使用的用户数据库,这里使用AspnetDb。
1.1 在服务器上启动cmd (最好以Administrator方式启动) 并转到目录 C:\Windows\Microsoft.NET\Framework\v2.0.50727下,也可以通过下图操作在此目录下进入cmd命令行模式
1.2 执行 aspnet_regsql.exe命令创建AspnetDb数据库,各步骤见下图:
命令运行后出现如下界面
按默认设置一路Next
完成创建后,可以到服务器上找到创建的AspnetDb数据库。
2. 在AspnetDb数据库上创建用户。
你可以自行在AspnetDb上创建用户,也可以通过工具快速生成用户。
2.1下载 FBA User Management Tool
http://fbamanagementtool.codeplex.com/
http://cks.codeplex.com/releases/view/7450
2.2 解压缩MembershipSeeder.zip并启动release目录下的 MembershipSeeder.exe,分别设置Config,Users和密码,然后点击Create进行创建,如下图:
这个工具将在AspnetDb中创建 user1 … user50等50个用户,密码为!Passw0rd。
可以进入数据库中查看:
3.配置Sharepoint环境下的相关 Web.config
主要是两个Web.Config.(建议在配置任何web.config文件之前先备份原文件,以备操作失误使得SharePoint崩溃时用于恢复)
一是:C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\SecurityToken\web.config
<system.net>
<connectionManagement>
<add address="*" maxconnection="10000" />
</connectionManagement>
</system.net>
<connectionStrings>
<add name="FBASQLConnectionString"
connectionString="Data Source=MySQL;Initial Catalog=aspnetdb;
Persist Security Info=True;User ID=MyApp;Password=MyPwd"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<roleManager enabled="true" cacheRolesInCookie="false">
<providers>
<add name="SqlRoleProvider"
type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider,
Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" />
<add connectionStringName="FBASQLConnectionString"
applicationName="/"
description="Stores and retrieves roles from SQL Server"
name="FBArole"
type="System.Web.Security.SqlRoleProvider, System.Web,
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
<membership>
<providers>
<add name="SqlMembershipProvider"
type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider,
Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" />
<add connectionStringName="FBASQLConnectionString"
passwordAttemptWindow="5"
enablePasswordRetrieval="false"
enablePasswordReset="false"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="true"
passwordFormat="Hashed"
description="Stores and Retrieves membership data from SQL Server"
name="FBArole"
type="System.Web.Security.SqlMembershipProvider, System.Web,
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
<authentication mode="Windows" />
</system.web>
二是:修改配置管理中心的web.config
可以通过下图所示跳到管理中心的Web.config所在目录:
A.在<configuration>节点下添加
<system.net>
<connectionManagement>
<add address="*" maxconnection="10000" />
</connectionManagement>
</system.net>
<connectionStrings>
<add name="FBASQLConnectionString"
connectionString="Data Source=YourServer;Initial Catalog=aspnetdb;
Persist Security Info=True;User ID=MyApp;Password=MyPwd"
providerName="System.Data.SqlClient" />
</connectionStrings>
B.更新roleManager和 membership 节点:
<roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true" cacheRolesInCookie="false">
<providers>
<add name="SqlRoleProvider"
type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider,
Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" />
<add connectionStringName="FBASQLConnectionString"
applicationName="/"
description="Stores and retrieves roles from SQL Server"
name="FBArole"
type="System.Web.Security.SqlRoleProvider, System.Web,
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
<membership>
<providers>
<add name="SqlMembershipProvider"
type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider,
Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" />
<add connectionStringName="FBASQLConnectionString"
passwordAttemptWindow="5"
enablePasswordRetrieval="false"
enablePasswordReset="false"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="true"
passwordFormat="Hashed"
description="Stores and Retrieves membership data from SQL Server"
name="FBArole"
type="System.Web.Security.SqlMembershipProvider, System.Web,
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
标签: Sharepoint, Authentication.FBA
3
再配置注册用户的界面: 参考
http://www.cnblogs.com/fanwenxuan/archive/2010/09/18/1830353.html
SharePoint 2010的Form认证的用户注册功能
说明:
这不是一个完成的方案,过程中还是有很多的用户体验方面的问题需要改进。
前提:
SharePoint 2010 配置好了Form认证。相关的配置方法参考:http://donalconlon.wordpress.com/2010/02/23/configuring-forms-base-authentication-for-sharepoint-2010-using-iis7/
如果要配置 LDAP provider的form认证,这篇文章是个不错的选择:http://blogs.technet.com/b/speschka/archive/2009/11/05/configuring-forms-based-authentication-in-sharepoint-2010.aspx
场景:
SharePoint 2010 配置完Form认证之后,我们需要向SQL数据库中添加新的用户。这一步有什么问题吗?当然有,就是所有的操作都的管理员来做:管理员添加帐号,设置初始密码等等。那么有没有其他的解决方案?用户能不能自定注册网站用户,管理员审批权限呢?
答案是肯定的,要不然也不会写这篇博客了。
方案:
首先我们看一下Form认证的登录页面:
通过URL我们得知,这是一个Application页面,也就是在服务器上真实存在的,路径是:C:\inetpub\wwwroot\wss\VirtualDirectories\<Applicationname>\_forms\default.aspx.
打开页面查看源代码(主要代码):
<asp:login id="signInControl" FailureText="<%$Resources:wss,login_pageFailureText%>" runat="server" width="100%"> <layouttemplate> <asp:label id="FailureText" class="ms-error" runat="server"/> <table width="100%"> ... </table> </layouttemplate> </asp:login>
其实就是普通的ASP.Net控件,所以接下来的操作也不太难了。
步骤:
第一步,向这个页面添加一个链接按钮,指向注册页面:
代码以及效果如下:
<asp:login id="signInControl" FailureText="<%$Resources:wss,login_pageFailureText%>" runat="server" width="100%"> <layouttemplate> <asp:label id="FailureText" class="ms-error" runat="server"/> <table width="100%"> ... <tr> <td colspan="2" align="right"><asp:LinkButton id="RegisterNew" text="Sign Up" runat="server" PostBackUrl="SignUp.aspx" /></td> </tr> </table> </layouttemplate> </asp:login>
第二步,创建自定义注册页面,并且保存在C:\inetpub\wwwroot\wss\VirtualDirectories\<Applicationname>\_forms文件夹下面。这里主要使用了<asp:CreateUserWizard>控件。这样就不要要而外写逻辑代码了。
<%@ Page Language="C#" MasterPageFile="~/_layouts/simple.master" %> <asp:Content ContentPlaceHolderId="PlaceHolderPageTitle" runat="server"> SignUp </asp:Content> <asp:Content ContentPlaceHolderId="PlaceHolderPageTitleInTitleArea" runat="server"> Sign Up </asp:Content> <asp:Content ContentPlaceHolderId="PlaceHolderSiteName" runat="server"/> <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"> <asp:CreateUserWizard ID="SignUp" runat="server" CreateUserButtonText="Sign Up"> <TextBoxStyle CssClass="ms-inputuserfield" /> <WizardSteps> <asp:CreateUserWizardStep runat="server" Title="Sign Up"></asp:CreateUserWizardStep> <asp:CompleteWizardStep runat="server"></asp:CompleteWizardStep> </WizardSteps> </asp:CreateUserWizard> </asp:Content>
第三步,测试。
注册:
关闭浏览器,重新登录。(由于方案不完善,如果不关掉浏览器的话,那么会报错)。登录的结果如下:(管理员还没有给该用户添加权限)
添加权限:
不足:
1.注册页面的样式没有搞定,很丑,很丑;
2.注册完毕后必须要关掉浏览器,然后重新打开浏览器登录,否则报错。