如何实现基于AD的MOSS的FORM认证方式

首先,想先讲讲MOSS的认证方式。

 

默认MOSS安装完是采用AD的认证方式,首先AD的认证方式比较适合于内部网络,不建议在外部网络使用,因为开启AD认证要开启相应不必要的端口,并且目前代理服务器通常设置只允许80端口访问,这样将不能访问基于AD的MOSS系统。因此,很多人想到了FORM表单认证,早在2003年前, 大家都会对SHAREPOINT只能支持AD认证报有遗憾,那么随着MOSS2007的推出,网上已经有很多人学会了如何配置一个FORM认证的MOSS 系统。

 

但是网上的文章基本上都是基于ASPNET数据库的,而我们现实的生产环境中要求实现一个基于AD的用户数据,但是又提供FORM认证的系统。

 

可能网上也有一小部分人有简单介绍过相关的文章,那么,我现在就将完整的步骤以及相关的原理重新解释一下,希望能够帮助一部分人。

 

  1. 首先配置“验证提供程序”

进入“管理中心”的“应用程序管理”界面,点击“应用程序安全性”节中的“验证提供程序”。

clip_image002

 

在“验证提供程序”配置管理界面中,我们可以发现列表中有默认的提供程序,如果你扩展了应用程序,可能还多了一个区域叫“Intranet”的提供程序。如下图

clip_image004

 

点击“默认”,将进入“编辑验证”设置界面。在“验证类型”一节中,选择“表单”选项,并在“匿名访问”一节中,勾选“启用匿名访问”复选框。

clip_image006

 

然后向下拉动页面滚动条,在“成员身份提供程序名称”设置节中,输入“AspNetActiveDirectoryMembershipProvider”。

这个名称必须和下面的WEB。CONfig里的配置一致。

clip_image008

 

再向下拉动页面滚动条,点击“确定”按钮。

clip_image010

 

之后,在返回的“验证提供程序”界面,将可以看到其“默认”提供程序的“成员身份提供程序名称”一列的值,从“Windows”变成了“AspNetActiveDirectoryMembershipProvider”。

 

完成了以上步骤后,我们就把80端口访问的默认区域的验证方式改成了利用 AspNetActiveDirectoryMembershipProvider来验证了,这个provider是 System.Web.Security命名空间下的一个类。很多时候我们可以通过修改Provider来修改Form的认证方式。

 

在这个时候,你如果重新进入80端口的网站的时候,你可以看到下图

clip_image012

 

但是,无论如何,你是没有权限进去的,哪怕是管理员的帐户都没有办法,这是因为你现在已经使用了FORM帐号登陆了,之前配置的信息呢,是WINDOWS的帐号(虽然他们的帐号都叫administrator)

下面我们需要修改两个步骤。

 

一、修改80目录下的WEB。CONFIG

clip_image014

 

在Web.config文件中的一节上面,添加如下配置节:

<connectionStrings>
<add name="SpiritCustomService" connectionString="LDAP://moss"/>
</connectionStrings>

其中"SpiritCustomService"是自定义的名称,将会被后面的配置节所用到。“moss”是服务器的名称。

 

clip_image016

 

然后,需要在“”节里面添加如下配置节:

<membership defaultProvider="AspNetActiveDirectoryMembershipProvider"> 
    <providers> 
        <add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="SpiritCustomService" connectionProtection="Secure" applicationName="/_layouts/login.aspx" connectionUsername="CONTOSO\wssadmin"connectionPassword="ilovespirit" attributeMapUsername="sAMAccountName" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" attributeMapEmail="mail" requiresQuestionAndAnswer="false" /> 
    </providers> 
</membership>

 

注意:

1)name属性的值不要写错,要和前面一篇设置提供程序时的名称相同。

2)connectionStringName的值要和上一步ConnectionStrings节中设置的名称相同。

3)attributeMapUsername、attributeMapEmail的值都是AD中相应的属性名称。

4) connectionUsername和connectionPassword的值是连接使用的账号与密码。

5) minRequirePasswordLength和minRequiredNonalphanumericCharacters都是组策略的设置,要根据实际的设置填写。

     添加完成后,保存所做修改。

clip_image018

二、更改IIS管理中心目录下的WEB.CONFIG

(是管理中心的那个站点,即SharePoint 3.0 管理中心管理页,而不是其它网站集,此站点可能在IIS目录下(SharePoint Central Administration v3)查看路径,一定要注意)

 

打开管理中心所在的磁盘路径(如我這里是C:\Inetpub\wwwroot\wss\VirtualDirectories\35784,你可以打开IIS找到管理站点的物理路径)修改其下的Web.config文件.

 

修改的代码同第一点,这里不再截图和解释。

当你做完两个步骤后,你就可以往网站上增加权限了。但是你现在会发现,你不知道如何增加权限。我们需要再进行下面的步骤

 

然后进入管理中心界面,在“应用程序管理”界面中点击“Web应用程序的策略”。

clip_image020

 

在“Web应用程序的策略”的管理界面中,点击“添加用户”按钮。

clip_image022

 

在“添加用户”界面中,选择我们的站点和区域,并单点“下一步”按钮。

clip_image024

 

然后在“选择用户”一节中,点击“浏览用户”按钮。

clip_image026

 

此时会弹出浏览用户的对话框,在查找文本框中输入你的管理账号名称,如“wssadmin”,然后点击“查找”按钮(一个放大镜图标),然后下面的列 表中会列出账号的相关信息,可以发现“账户名”有“AspNetActiveDirectoryMembershipProvider”前缀。单点“添 加”按钮,最后点击“确定”按钮。

clip_image028

 

对话框关闭后,会发现“选择用户”的文本框中已经有了我们所选择的账户,我们再在下面的“选择权限”一节中勾选“完全控制”选项,并单击“完成”按钮。

clip_image030

 

此时,在“Web的应用程序策略”界面中,我们就可以看到,我们为默认区域添加了一个完全控制的管理账户。同时,通过账户的名称前缀,可以看出该账户是由我们的Provider提供的。

clip_image032

 

最后,再使用该账号登录我们的镜像站点,会发现他已经具有了完全控制的权限。通过该用户,也可以在站点中为其他用户添加权限。

posted @ 2012-02-23 14:56  poisson_notes  阅读(1011)  评论(0编辑  收藏  举报