阜和教育
        CCNA培训
        CCNP培训
        CCSP培训
        CCIE培训
        CCIP培训
        CCVP培训
        Exchange 2003培训
        Exchange 2007培训
        Forefront培训
        MOSS 2007培训
        Sccm 2007培训
        SCOM 2007培训
        Window 7培训
        Windows server 2003培训
        Windows server 2008培训
        Sql Server 2005培训
        RHCE培训
        RHCT培训
        OCA培训
        OCP培训
        OCM培训
        H3CNE培训
        H3CSE培训
        BIG-IP培训
        Firepass培训
        ITIL V2培训
        ITIL V3培训
        Jncis培训
        Jncia培训
        Jncie培训
        Jncip培训
        Jncis培训
        Jncia培训
    阜和教育> 最新公告 > 在SharePoint Server 2007中创建定制的用户管理模块
跳过导航链接

在SharePoint Server 2007中创建定制的用户管理模块

2010-5-27 10:23:00
文章摘要:在SharePoint Server 2007中创建定制的用户管理模块 在SharePoint Portal Server 2003的时代,它被说得最多的一个问题就是其用户系统必须使用Active Directory,我们必须在域里面为用户创建相应的AD账号,然后才能将AD账号添加为SharePoint站点用户。如果企业已经部署了AD,那么这...
SharePoint Server 2007中创建定制的用户管理模块
 
      在SharePoint Portal Server 2003的时代,它被说得最多的一个问题就是其用户系统必须使用Active Directory,我们必须在域里面为用户创建相应的AD账号,然后才能将AD账号添加为SharePoint站点用户。如果企业已经部署了AD,那么这不会是一个多大的问题(反而会成为其一个优点),但是对于没有部署AD的企业,或者要将SharePoint站点发布到Internet上的场景,这就是一个不小的问题了。
 
      幸好SharePoint Server 2007中已经完全支持定制的用户管理模块,它使用了ASP.NET 2.0的Membership Provider机制来作为其用户管理的底层机制,这样就带给了我们非常大的灵活性。假如在企业中已经存在了一套用户认证系统(比如某某LDAP服务器,或者某某OA系统),那么我们可以很容易的让SharePoint Server 2007使用同一套用户认证系统,这样,SharePoint Server 2007本身不必要存储用户的信息。当然,通过Membership Provider机制,你也可以将用户名和密码保存在某一个数据源中(比如SQL Server数据库)。
 
      首先,我们要用Visual Studio 2005编写一个定制的Membership Provider,方法我就不多说了,MSDN和网络上都有足够详细的文档来描述如何创建一个Membership Provider。你要做的仅仅是创建一个普通的类,然后让它继承自System.Web.Security.MembershipProvider,然后再实现所有需要实现的方法即可。实际上,SharePoint Server 2007并不会使用每一个方法,如果我记得没错的话,它主要调用的方法包括:FindUsersByName(), GetAllUsers(), GetUser(), ValidateUser()等。
 
      为了说明问题,配合演示,我编写了一个最简单的TextFileMembershipProvider,将编译得到的程序集部署到服务器的GAC中。TextFileMembershipProvider从一个文本文件中得到用户的用户名和密码信息。
      然后打开要使用这个TextFileMembershipProvider的SharePoint站点集所对应的IIS网站的磁盘根目录下的web.config文件,在“<system.web>”节点下面添加相应的MemberShip节点:
<membership defaultProvider="TextFileMembershipProvider">
<providers>
<add name="TextFileMembershipProvider" type="MOSSSecurity.TextFileMembershipProvider, MOSSSecurity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1686c4895244ca01" description="" filePath="C:\Inetpub\wwwroot\wss\VirtualDirectories\81\Users.txt" />
</providers>
</membership>
 
然后打开“SharePoint 3.0管理中心”所对应IIS网站的磁盘根目录下的web.config文件,如上面所说的再做一遍。
 
      看到这里,你可能要犯嘀咕了,在SharePoint站点集的web.config上添加这个membership说明嘛,还有些道理,因为我们要在这个站点集上使用这个定制的用户管理模块嘛,但是对“SharePoint 3.0管理中心”这个站点的web.config下手又有和用意呢?简单说来这是因为,我们必须要让“SharePoint 3.0管理中心”这个站点也能够识别TextFileMembershipProvider所提供的用户信息,后面有这么做的详细理由。
 
      执行一下iisreset之后,用IE打开“SharePoint 3.0管理中心”,然后在“应用程序管理”中找到“验证提供程序”,点击进去,然后更改上方的“Web应用程序”为我们希望使用TextFileMembershipProvider的SharePoint站点集所使用的Web应用程序,然后点击页面上的“默认”链接,在出现的更改页面中输入我们想要这个Web应用程序使用的MembershipProvider的名字,同时将验证类型改成表单验证(Forms验证),确定即可。
改完之后,验证提供程序配置界面中就会显示我们的Web应用程序使用的,是“TextFileMembershipProvider”啦。
      现在,那个想定制的SharePoint站点已经使用我们编写的TextFileMembershipProvider了,但是,我们会遇到一个问题,如果我们现在去访问那个站点,那么那个站点会要求我们登录,但是由于到现在为止,TextFileMembershipProvider能够提供的任何一个用户都不是那个站点的用户,也就说在那个SharePoint站点中没有任何权限,所以我们总是不能登录到那个SharePoint站点中。
 
      解决这个问题的方法,就是在管理中心的“Web应用程序的策略”中,配置一个TextFileMembershipProvider能提供的用户对那个SharePoint站点具有完全控制的权限,然后我们就可以使用那个用户登录到SharePoint站点中了。顺便说一下,“Web应用程序的策略”中配置的用户权限信息,具有最大的优先权。
 
      在管理中心里面打开“应用程序管理”页面上的“Web应用程序的策略”链接,然后点击“添加用户”,选对要定制的Web应用程序,然后在下面的选择区域下拉框中选中“默认”,“下一步”。
      在“用户”文本框中输入通过TextFileMembershipProvider能够获取一个用户名,然后点击一下下面的“检查名称”,如果配置没有问题,这时SharePoint Server 2007是能够通过TextFileMembershipProvider来确认这个用户的信息的(这也就是我们需要在“SharePoint 3.0管理中心”的web.config中也加上“TextFileMembershipProvider”配置项的原因,否则在这里,“SharePoint 3.0管理中心”不会认通过“TextFileMembershipProvider”提供的用户),然后选中页面下方的“完全控制”,“完成”。
      现在,我们就可以访问要定制的SharePoint站点了,由于它被配置为使用表单验证,所以当我们访问它时,会自动被引导到一个登录页面。如果没有看到下面的登录页面,确认一下SharePoint站点的web.config文件中有如下的配置项:
<authentication mode="Forms">
<forms loginUrl="~/_layouts/Login.aspx" />
</authentication>
 
      填入正确的用户名和密码(在我的这个演示里面,就是那个文本文件中的用户信息,呵呵),然后就可以登录到SharePoint站点中了。
      接着,你就可以到SharePoint站点的站点设置的用户管理里面,为这个站点添加更多的用户了。
      怎么样,是不是很容易呢?创建定制的用户组管理模块的方法和这一样,为它编写一个定制的RoleProvider,然后在web.config中添加相应的配置项即可。
上一篇:MOSS 2007基础:开发自定义WebPart
下一篇:增强 SharePoint 安全性的 7 项新功能
文章摘要:增强 SharePoint 安全性的 7 项新功能 为您的 Microsoft Office SharePoint Server (MOSS) 2007 环境实施有效安全措施可以显著降低日常管理费用,同时允许团队 在安全的环境中协作并共享业务数据。MOSS 2007 内置创新的身份验证功能,使您能够通过自定义身份验证提供程序、基于表单的 Internet 风格身份验证和 Web 单一登录 (SSO),充分利用基于 Web 的安全标准。而且,MOSS 还提供对公司资产(例如 2007 Microsoft®...