背景:

Project Server 2007安装后生成的WEB管理网站Project Web Access默认采用Windows验证,并自动将安装时登录系统的计算机管理员指定为Project Web Access的超级管理员,默认端口为80。若安装PWA的计算机机器名为PWAServer, 则可以通过http://PWAServer:80来访问PWA。目前情况是PWA需要在非域环境下使用,用户账户和密码需要使用已有系统用户数据库中的用户名和密码,实现PWA登录用户与已有系统用户的统一管理。

经过阅读资料了解到PWA支持FORM验证机制(事实上是SharePoint Server 3.0支持Windows验证和Form验证,而PWA是基于SharePoint Server 3.0实现的一个SPS网站),该验证机制基于微软的Membership用户管理与登录框架,微软已提供了一个默认的实现,称为SqlMembershipProvider, 通过简单地修改PWA的web.config,并运行几个配置程序,就可以让PWA支持FORM验证(配置过程网上有很多文章讲到)。微软默认实现的缺点是登录用户的用户名和密码信息必须存储在微软默认生成的SQL Server数据库中,而不能自定义存储位置,这显然不能满足之前的要求。

微软的默认实现不能支持用户名密码的自定义存储,看来只有重新实现一个MembershipProvider。后来经过查阅Membership SDK和相关的SPS资料,通过开发自己的MembershipProvider,结合SharePoint Server的配置,最终实现了PWA的FORM验证和自定义的用户来源。具体步骤如下:

一、配置Form Authentication Based PWA网站

要让PWA支持FORM登录,SharePoint Server的做法是生成与原网站一摸一样的一套网站,更改新网站的验证方式为允许匿名登录和FORM登录,新网站和原网站页面相同,访问的内容数据库也相同,只是配置的登录模式不同,从而实现同一个PWA,两种登录模式。下面是PWA Form验证网站的配置过程:

1. 进入Share Point 管理中心网站,进入"应用程序管理",点击"SharePoint Web 应用程序管理"下的"创建或扩展WEB应用程序",选择"扩展现有WEB应用程序",进入扩展页面。

2. 界面中首先选择要扩展的Web应用程序,在这里我选择"Share Point – 80"网站,对应的访问链接是http://PWAServer:80。

3. 选择新建IIS网站,端口填任意未使用的端口,也可以用默认提供的端口。这里我们选择填81;

4. 验证程序选择NTLM,选择允许匿名访问,安全套接字选择否。

5. URL此时自动变成了http://PWAServer:81, 区域选择Internet,确定并保存。

6. 进入"应用程序管理",进入"应用程序安全性"下的"验证提供程序";区域选择"Internet",进入。

7. 验证类型选择"表单",勾选启用匿名访问;

8. 成员身份提供程序名称填配置文件中配置的MembershipProvider名,此处我们填CIMCMember(也可以是其他名称)。

9. 角色管理器名称留空。

10. 点击保存按钮保存。

至此我们完成了PWA Form验证网站http://PWAServer:81的配置,但该网站到目前为止还不能访问,还需要为它开发MembershipProvider适配器,将我们自定义的用户名密码数据库同PWA连接起来。下一步我们来做这个事情。

二、开发MemberShipProvider适配器

微软的Membership框架基于接口和面向对象设计,扩展Membership Provider首先需要继承虚基类System.Web.Security.MembershipProvider。MembershipProvider实现了若干公共方法、同时也定义了若干虚方法,需要子类来实现它。这些方法主要完成从用户库增删改查用户信息、用户密码信息、验证登陆用户、用户锁定和找回密码等功能。对于PWA的Form登录,最终只调用到适配器的一个方法,即

//
// 摘要:
// 验证数据源中是否存在指定的用户名和密码。
//
// 参数:
// username:
// 要验证的用户的名称。
//
// password:
// 指定的用户的密码。
//
// 返回结果:
// 如果指定的用户名和密码有效,则为 true;否则为 false。
public abstract bool ValidateUser(string username, string password);

这个方法接收登录用户输入的用户名和密码,返回是否成功登陆的布尔值。很显然,我们只要在这个函数中写自己的验证逻辑,从自己的用户数据库中检索用户名和密码就可以实现登录用户名和密码的对接。具体实现略。

在实现自定义MembershipProvider的过程中,还可以对某些属性进行重载,以控制Membership的某些细节功能,例如:

Int MinRequiredPasswordLength 控制最小输入密码长度,可根据实际情况返回长度

bool EnablePasswordReset 是否允许重置密码。如果返回值为true的话,还需要重载相关重置密码的函数。

bool EnablePasswordRetrieval 是否允许用户找回密码。如果返回值为true的话,还需要重载相关找回密码的函数。

对于其他用不到的方法和属性,直接throw new Exception("The method or operation is not implemented.");

三、配置文件修改

自定义MembershipProvider开发好后,需要配置到PWA中才能使用,以下是配置步骤:

1. 将自定义MembershipProvider编译后形成的dll,连同该dll依赖的其他dll一起,拷贝到http://PWAServer:81网站的bin目录中(默认是C:\Inetpub\wwwroot\wss\VirtualDirectories\81\bin)。

2. 修改http://PWAServer:81网站的web.config文件加入以下配置信息:

在<system.web>节中增加红色部分,代码安全策略配置节

<securityPolicy>
<trustLevel name="WSS_Medium" policyFile="C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\config\wss_mediumtrust.config" />
<trustLevel name="WSS_Minimal" policyFile="C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\config\wss_minimaltrust.config" />
<!--自定义安全级别-->
<trustLevel name="Full" policyFile="internal"/>
</securityPolicy>

将<system.web>节中的trust安全策略节替换成红色部分

<!--<trust level="WSS_Minimal" originUrl="" />-->
<trust level="Full" originUrl="" />

以上两个节修改了PWA的代码加载安全策略,保证了PWA能正常加载我们开发的代码。

在<system.web>节中增加自定义MembershipProvider配置节:

<!--自定义membership配置节-->
<membership defaultProvider="CIMCMember">
<providers>
<add name="CIMCMember" type="Hnas.Net2.PWAExtention.Membership.ImpMembershipProvider, Hnas.Net2.PWAExtention.Membership" portalAppName="CIMCPortal" />
</providers>
</membership>

注意:本节中的配置的Provider name是CIMCMember,必须与第一节中"验证提供程序"配置中指定的成员身份提供程序名称相同,PWA通过此名称来查找和加载MembershipProvider。

3. 向web.config配置文件添加MembershipProvider依赖的其他配置信息,例如访问数据库时用到的数据库访问框架配置信息,连接字符串配置等。此处添加的是我公司自己的数据库访问框架配置信息

<section name="hnas.databaseSettings" type="Hnas.Application.Data.Configuration.DatabaseSettingsSection, Hnas.Application.Data, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />

<!--数据库连接字符串-->
<hnas.databaseSettings>
<add name="IMPPortalServerDB" type="Hnas.Application.Data.SqlClient.SqlDatabase, Hnas.Application.Data, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" connectionString="data source=10.2.57.64\cimcbase;user=user;pwd=hnas_95071000;database=PortalServer" />
</hnas.databaseSettings>

4. 重复以上三步,将dll和配置信息同时添加到http://PWAServer:80网站的目录和配置文件中去。

四、Form登录用户添加

与windows验证环境下添加PWA访问用户相同,只有在PWA中建立了相应的用户映射,对应的来自自定义用户库的账号才能够登录PWA。添加PWA FORM验证用户的过程如下:

1. 访问windows验证版本的PWA( http://PWAServer:80/pwa)。

2. 进入服务器设置->管理用户,选择新建用户。

3. 勾选"可将用户作为资源分配",可以让添加的用户直接成为PWA企业资源;

4. 填写显示名称,邮件等基本信息;

5. 用户身份验证选择"使用完全限定成员身份提供程序用户名(MembershipProvider:UserAccount)进行 Forms 身份验证",用户登录账户填写的格式为MembershipProvider:UserAccount, MembershipProvider为配置文件中配置的成员身份提供程序名称,UserAccount为自定义用户数据库中的登录账号。此处我们的项目中填的是CIMCMember:youxin;

6. 填写其他非必填内容,勾选权限选项,为用户指定PWA使用权限。勾选的时候还可以使用"使用模版设置权限"功能,快速选择预定义角色包含的权限范围;

7. 点击"保存"创建用户。

至此,我们已经创建了名为CIMCMember:youxin的FORM登录用户,该用户与我们自定义用户库中的账号youxin相关联。

当我们访问PWA FORM验证网站http://PWAServer:81/pwa下的任意页面时,系统会首先转到登录页面,要求输入用户名和密码。此时输入的用户名只能使用注册用户时输入的用户账号的后半部分,即注册时用的是CIMCMember:youxin,登录时应使用youxin。

从 <http://www.cnblogs.com/yxin1322/archive/2009/08/26/pwa_formbasedsite_impl.html> 插入

转载于:https://www.cnblogs.com/gill/archive/2010/05/27/1745410.html

Project Web Access 2007自定义FORM验证登录实现 zt相关推荐

  1. 360浏览器无法下载project 2007的Project Web Access ActiveX

    在360浏览器中无法下载project 2007的Project Web Access ActiveX 控件; 同一台计算机,在IE或者傲游中可以下载和安装,但在360浏览器中就总是"无法正 ...

  2. Project Web Access ActiveX控件 安装

    转载自:http://msproject.bokee.com/viewdiary.16209626.html 当您第一次启动 Microsoft Project Web Access 时,会提示您下载 ...

  3. 无法下载安装Project Web Access ActiveX 控件

    在访问Project Web Access 的时候,若访问项目中心,或者资源中心等,均需要下载相关ActiveX控件,由于IE配置的各不相同,有时可能导致ActiveX控件,无法下载安装.    通常 ...

  4. 二、SpringSecurity 自定义手机验证登录方式

    简介 在上一篇文章中,我们介绍了如何搭建一套基于SpringSecuity的项目框架,并且进行了演示,本文将继续扩展项目功能,实现自定义用户登录功能. 项目源码仓库:Gitee 代码分支:lesson ...

  5. access 虚拟服务器,创建 Communicator Web Access 虚拟服务器

    身份验证方法 创建虚拟服务器时,需要从身份验证机制开始指定多个关键属性的值.Communicator Web Access 提供了多个身份验证选项. 集成的(NTLM/Kerberos)密码身份验证 ...

  6. 本地JAVA开发页面使用AzureAD(AAD)验证登录

    我们前一篇文章介绍了本地使用APS.NET开发的WEB服务如何使用AZURE AD(AAD)验证登录,今天我们主要介绍本地使用JAVA开发的WEB服务如何使用AAD验证登录.其实方法跟ASP.NET是 ...

  7. 【逗老师带你学IT】Kiwi Syslog Web Access与Active Directory集成认证

    Kiwi Syslog Server是一款应用于Windows系统的系统日志守护进程,能够接收并记录系统日志,各种设备的SYSLOG消息,内置丰富的日志记录选项,能详细记录各种防火墙日志,并进行筛选分 ...

  8. shiro表单登录认证及退出(自定义form认证器)

    博主地址:http://blog.csdn.net/zcl_love_wx 注意:此文是基于springMVC框架的,所以关于springMVC的配置这里不说,后面有时间专门写一个shiro整合spr ...

  9. Office Communication Server(OCS)2007 Communicator Web Access(CWA)的部署

    Office Communication Server(OCS) 2007 Communicator Web Access(CWA)的部署 导语: 前两篇我们讲解了Office Communicati ...

最新文章

  1. 技术干货 | 如何选择上班路线最省时间?从A/B测试数学原理说起
  2. 通俗讲java反射机制ioc,结合反射说明SpringIOC的实现原理
  3. 模型裁剪--Rethinking the Value of Network Pruning
  4. tp5权限管理代码_权限系统控制到按钮级别开源推荐 Spring BootShiroVue
  5. 【Python学习系列八】Python实现线性可分SVM(支持向量机)
  6. 【NLP】2020深度文本匹配最新进展:精度、速度我都要!
  7. java gt lt_Java运算符,,|,||,^,lt;lt;,gt;gt;,~,gt;gt;gt;
  8. 信息学奥赛一本通1349-最优布线问题
  9. html5圆形旋转菜单js,jquery 圆形旋转图片滚动切换效果
  10. Spring基础学习笔记-Bean的基础知识
  11. mysql 查询商品列表 显示tag_让前台页面商品列表显示后台数据库中的商品
  12. 黑白极简设计行业企业官网模板
  13. OpenShift 4 - 容器访问限速和Route访问限制流
  14. 【渝粤教育】电大中专药剂学基础知识 (2)_1作业 题库
  15. Tp 引入 simple_html_dom.php
  16. CUDA编程入门教程
  17. 信息安全原理与技术第八次实验:拒绝服务攻击与防范
  18. ShareX+七牛云搭建博客图床
  19. 在vue项目中快速使用element UI
  20. 中国芯片的突破带来压力,美国芯片龙头将再度裁员,或已后悔不迭

热门文章

  1. 7-2 任务调度的合理性
  2. java fina_[转]Java中fina以及static的意义
  3. 使用Postman生成接口测试文档
  4. 【经验分享】一名慕星人多年的工作感想
  5. Nutanix携手Veeam简化数据保护
  6. 【DP】探索数字迷塔
  7. Prim算法(matlab实现)
  8. 南开大学计算机学院暑期夏令营,【2021夏令营】关于举办2020年南开大学 “e入计网”优秀大学生云端夏令营的通知...
  9. 马来西亚的吉梦达乳胶床垫以纯天然的姿势震憾入驻中国
  10. 小程序wx.showToast一闪,持续时间短