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

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

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

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

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

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

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

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

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

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

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

 

Web.config文件中的<system.web>一节上面,添加如下配置节:
<connectionStrings>
    <add name="SpiritCustomService" connectionString="LDAP://moss"/>
  </connectionStrings>

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

 

然后,需要在“<system.web>”节里面添加如下配置节:  

    <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属性的值不要写错,要和前面一篇设置提供程序时的名称相同。

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

      3)attributeMapUsernameattributeMapEmail的值都是AD中相应的属性名称。

       4) connectionUsernameconnectionPassword的值是连接使用的账号与密码。

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

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

 

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

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

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

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

 

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

 

 

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

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

 

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

 

 

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

 

 

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

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

 

基本的配置就到这里了。。。

 

你可以发现,等你进入到网站后通过人员新增的相关界面也同样可以搜索到我们配置的PROVIDER的帐号,那是因为我们修改80端口的WEB。CONFIG的缘故。

 

其实,虽然我们登陆的也是WINDOWS一样的帐号,但是WINDOWS认证时,他的帐户名是域名\帐号名,而设置FORM认证后确是PROVIDER名\帐号名,网上有很多人教授如何设置WINDOW和FORM双认证的,,但是请别忘记了一个重要的,当你做完双认证后,所有的权限必须得重新配置一遍。

 

今天介绍到这里

 

下面两章将介绍

在FORM认证将如何修改登陆页面,LOGIN.ASPX和LOGIN.MASTER

在FORM认证环境下如何通过代码进行人员权限的新增

 

 

 

posted @ 2009-02-23 20:12  雷君  阅读(3133)  评论(6编辑  收藏  举报