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

分三块: 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>

标签: SharepointAuthentication.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.注册完毕后必须要关掉浏览器,然后重新打开浏览器登录,否则报错。

时间: 2024-10-12 15:28:22

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

SharePoint 2013 表单认证使用ASP.Net配置工具添加用户

前 言 上面一篇博客,我们了解到如何为SharePoint 2013配置表单身份认证,但是添加用户是一个麻烦事儿:其实,我们还可以用Asp.Net的配置工具,为SharePoint 2013添加表单用户,下面让我们简单介绍下,如何操作. 打开Visual Studio,新建项目,选择Asp.net web application类型,如下图: 点击OK,进入选择模板页面,如下图: 创建完毕,双击打开web.config,如下图: 添加数据库连接串,连接的是我们表单认证的数据库,不要写错了,如下图

SharePoint 2013 表单认证使用ASP.Net配置工具加入用户

前 言 上面一篇博客,我们了解到怎样为SharePoint 2013配置表单身份认证.可是加入用户是一个麻烦事儿:事实上,我们还能够用Asp.Net的配置工具,为SharePoint 2013加入表单用户,以下让我们简介下.怎样操作. 打开Visual Studio.新建项目,选择Asp.net web application类型.例如以下图: 点击OK,进入选择模板页面.例如以下图: 创建完成,双击打开web.config,例如以下图: 加入数据库连接串,连接的是我们表单认证的数据库,不要写错

sharepoint 2013基于AD的Form表单登录(二)——form登录页面自定义

配置好了sharepoint 2013基于AD的Form登录,只是成功了第一步,如何自定义登录页呢?特别是不要出现sharepoint2013自带登录页面,每次登录前还需要选择是否是form或者windows验证. 打开vs2012新建sharepoint 2013 project,在layouts目录下添加application page,页面命名为CustomLogin.aspx. 前台页面:为避免母版页中其他控件影响,注意继承的是simple.master         后台页面:继承F

sharepoint 2013基于AD的Form表单登录(四)——开发自定义登录过程需要引用文件路径。

1.Microsoft.IdentityModel.dll 位置 %ProgramFiles%\ReferenceAssemblies\Windows Identity Foundation\v3.5 2.Microsoft.SharePoint.IdentityModel.dll位置 C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.IdentityModel\v4.0_15.0.0.0__71e9bce111e94

基于Extjs的web表单设计器 第六节——界面框架设计

基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计 基于Extjs的web表单设计器 第七节——取数公式设计 基于Extjs的web表单设计器 第八节——表单引擎设计 这一节我给大家介绍一下表单设

SharePoint Designer定制MOSS/WSS表单页面

SharePoint Designer定制MOSS/WSS表单页面 分类: sharepoint 学习札记2011-12-20 15:07 825人阅读 评论(0) 收藏 举报 sharepointserverbordertableclassassembly 方法一.使用SharePoint Designer配合enderingTemplate文件来定制MOSS/WSS表单页面 以通知列表(DispForm.aspx)为例,系统默认的通知列表样式如下: 默认样式用于新闻发布的时候确实不符合中国人

基于JQuery实现表单元素值的回写

form.jsp: <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html &

Form authentication(表单认证)问题

前言 最近在做ASP.NET MVC中表单认证时出了一些问题,特此记录. 问题 进行表单认证时,在 PostAuthenticateRequest 事件中从Cookie值中解密票据.如下: protected void Application_PostAuthenticateRequest(Object sender, EventArgs e) { var authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; if

django基于模型的表单

1.url路由-------------------------------path("test/", app01_views.test) 2.views.py视图和基于模型的表单----------------------------------- from django.shortcuts import render, HttpResponse # Create your views here. from django.db import connectionfrom app01.