码迷,mamicode.com
首页 > 数据库 > 详细

SharePoint 2013 基于数据库的表单认证FBA,并添加注册界面

时间:2016-07-13 16:50:41      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:

分三块: 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路径下都有这个文件,试着分别运行了,发现没什么区别;

clip_image002

  双击aspnet_regsql,弹出创建向导,点击下一步,如下图:

clip_image004

  选择安装选项,我们是要配置,不是移除,如下图:

clip_image006

  填写数据库服务器名和数据库名称,我这里是单独实例,不是默认的实例,所以server看起来比较奇怪,如下图:

clip_image008

  确认你的设置,是不是正确,如下图:

clip_image010

  数据库已经被创建或修改,这时我们可以连接到数据库上查看一下了,如下图:

clip_image012

  打开Sql Server管理工具,可以看到我们创建的数据库和表,确实已经创建了,如下图:

clip_image014

  而后修改CA、STS服务、Web App的web.config即可;

  打开IIS,从IIS里找到管理中心的站点,右键浏览,修改配置文件,如下图:

  当然,如果你非常熟悉,直接去找到配置文件即可;

clip_image016

  如下配置文件,用Visual Studio打开,记事本也可以,但是结构不清晰;

clip_image018

  如下位置添加数据库连接串(</SharePoint>和<system.web>之间),如下图:

clip_image020

<connectionStrings>
<add name="SqlConnectionString" connectionString="Data Source = DB;Initial Catalog = FormAuthenticationDB;Integrated Security = SSPI"/>
</connectionStrings>

  如下位置添加Membership Provider和Role Provider

clip_image022

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

  添加完毕的截图,覆盖掉已经存在的空节点,如下图:

clip_image024

  修改STS服务的配置文件,通过IIS找到,如下图:

clip_image026

  在</system.serviceModel>下面添加数据库连接字符串,如下图:

clip_image028

  在下面直接添加<system.web>节点和Membership Provider和Role Provider,如下图:

clip_image030

  修改Web App的配置文件,如下图:

clip_image032

  在</SharePoint>下面,添加数据库连接字符串,如下图:

clip_image034

  找到下图位置,添加我们的节点,如下图:

clip_image036

  添加完毕,如下图:

clip_image038

  到此,配置文件均修改成功,去管理中心修改Web App的认证即可。

  打开管理中心,找到我们要配置的web应用程序,点击验证提供程序,如下图:

clip_image040

  勾选FBA认证,并填写我们的membership和provider,然后保存,如下图:

clip_image042

  打开网站,已经可以选择登陆方式了,如下图:

clip_image044

  选择表单登陆,进入登陆页面(但是此时还不能登录,因为没有为网站添加form认证的用户),如下图:

clip_image046

  去管理中心,修改网站集管理员,查找已经添加好的用户,如下图:

clip_image048

  而后用linyu来登陆,可以发现已经登陆上来了,说明表单认证配置成功!

clip_image050

  查看用户信息,账户名称确实是表单认证的账户,如下图:

clip_image052

总 结

  其实表单认证的配置是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>
复制代码

  


  






        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认证的登录页面:

 image

通过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>

image

第二步,创建自定义注册页面,并且保存在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>

 

 

第三步,测试。

注册:

image 

image

关闭浏览器,重新登录。(由于方案不完善,如果不关掉浏览器的话,那么会报错)。登录的结果如下:(管理员还没有给该用户添加权限)

image

添加权限:

image

不足:

1.注册页面的样式没有搞定,很丑,很丑;

2.注册完毕后必须要关掉浏览器,然后重新打开浏览器登录,否则报错。


SharePoint 2013 基于数据库的表单认证FBA,并添加注册界面

标签:

原文地址:http://blog.csdn.net/yulinxx/article/details/51889790

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!