MOSS中实现Form认证煤安认证的防爆电磁阀2010-12-10 11:09:02| 分类: moss Form 认证 | 标签: |字号大中小 订阅 本文主要参考了这几篇文章:http://blog.163.com/szmax_limin/blog/static/58182861200711266918320/ http://www.cnblogs.com/shangmeizhai/category/87313.html http://www.cnblogs.com/volnet/archive/2007/04/02/696424.html 今天主要是想实现MOSS的Form认证,查了诸多资料,现根据实现流程,完整的整理粘贴一下。 主要是想实现:有一部分机器是加入域的,而另一个部分机器是未加入域的,所以希望既可以使用Windows集成验证方式也可以使用Form验证方式登录MOSS站点。
具体如下: 注意:上边文章用的是intranet,实际上我用的是internet.下边部分也是如此,凡出现intranet的地方请用internet替换。之所以如此,是因为我实在难以如原作者那样有耐心的将完整图片抓下来。造成大家理解不便的话,抱歉抱歉。 下边又用了“AspNetActiveDirectoryMembershipProvider”,实际上我用的是“AspNetSqlMembershipProvider”,所以大家按照下图设置的时候需要注意一下。
1.进入“管理中心”的“应用程序管理”界面,点击“应用程序安全性”节中的“验证提供程序”。 3. 点击“Intranet”,将进入“编辑验证”设置界面。在“验证类型”一节中,选择“表单”选项,并在“匿名访问”一节中,勾选“启用匿名访问”复选框。
角色管理員名稱:AspNetSqlRoteProvider. 5. 再向下拉动页面滚动条,点击“确定”按钮。 6.之后,在返回的“验证提供程序”界面,将可以看到其“Intranet”提供程序的“成员身份提供程序名称”一列的值,从“Windows”变成了“AspNetActiveDirectoryMembershipProvider”。----此处将是AspNetSqlMembershipProvider 上一篇中,我们为站点的镜像81端口的Web应用设置了新的Form验证提供程序,下面我们还需要修改其Web.config文件,使其设置的提供程序可以被使用。 1.进入磁盘中81端口Web应用的主目录。 4. 在Web.config文件中的<system.web>一节上面,添加如下配置节: <connectionStrings> <add name="AspNetSqlProvider" connectionString="Database=WSS_Content_0f64aee1faa84ca796fa30c6e72726e0;Server=localhost;User ID=sa;Password=123456;Trusted_Connection=False;" /> </connectionStrings> 注意:WSS_Content_0f64aee1faa84ca796fa30c6e72726e0是我站点对应的DB,可以通过管理站点的-- Application Management--- Content databases看到。
<membership defaultProvider="AspNetSqlMembershipProvider"> <providers> <remove name="AspNetSqlMembershipProvider" /> <add connectionStringName="AspNetSqlProvider" passwordAttemptWindow="10" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" description="" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </membership> <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider"> <providers> <remove name="AspNetSqlRoleProvider" /> <add connectionStringName="AspNetSqlProvider" applicationName="/" description="" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </roleManager> 注意: 1)connectionStringName属性的值不要写错,要和前面一篇设置提供程序时的名称相同。 OK,到了最关键的地方了。
刚才上边配置认证方式为“membership”,有经验的同志应该知道,这需要用到微软自己设计的一些表,所以我们需要将这些表加给我们上边提到的的WSS_Content_0f64aee1faa84ca796fa30c6e72726e0。 步骤如下:--当然数据库要选我们自己的数据库,如我选的是WSS_Content_0f64aee1faa84ca796fa30c6e72726e0 一、 打开aspnet_regsql.exe,单独使用以下语句将启动配置向导,你也可以利用命令行参数来完成配置过程。 好了,完成了关键的一步,现在表有了,可显然一个用户也没有,我们自己建页面加吗? 不用不用,看这里。需要注意的是,在下边文章提到的修改config文件出,我偷懒使用了前边所提到的config配置。不过我加了个节点“minRequiredNonalphanumericCharacters="0"”
打開【Microsoft Visual Studio 2005】,點選【File】【New】【Web Site...】
在【New Web Site】對話框,選擇【ASP.NET Web Site】,【Location】輸入此 Project 的名稱與存放位置,決定好之後點選【OK】
當按下 OK 之後,即開始建立專案相關的檔案,建立完成後可以看到 FormMA 這個專案下面有三個檔案,點選【web.config】修改連線字串。 在<configuration> <appSettings/> 與 <system.web> 之間,修改原來的 <connectionStrings> 為下列資訊, <connectionStrings> <add name="AspNetSqlProvider" connectionString="Database=WSS_Content_0f64aee1faa84ca796fa30c6e72726e0;Server=localhost;User ID=sa;Password=123456;Trusted_Connection=False;" /> </connectionStrings>
接著在 <system.web> 與 <system.web/> 之間,輸入下列資訊, <membership defaultProvider="AspNetSqlMembershipProvider"> <providers> <remove name="AspNetSqlMembershipProvider" /> <add connectionStringName="AspNetSqlProvider" passwordAttemptWindow="10" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" minRequiredPasswordLength="3" minRequiredNonalphanumericCharacters="0" description="" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </membership> <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider"> <providers> <remove name="AspNetSqlRoleProvider" /> <add connectionStringName="AspNetSqlProvider" applicationName="/" description="" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </roleManager>
當上述資訊輸入完成後,在【Solution Explorer】點選最右邊的【ASP.NET Configuration】,ASP.NET即開始產生一個虛擬的 Web 應用程式管理介面
ASP.NET網站管理工具頁面
進到此網站管理工具頁面後,我們先確認此管理工具是否有連接到資料庫,且剛剛設定的相關提供者 (Provider) 是不是都正常連接;所以我們點選【提供者】頁簽,再點選【位每項功能選取不同的提供者 (進階)】
進入進階選項後,可看到如下的畫面,我們分別測試【成員資格提供者】與【角色提供者】,點選【測試】連結即可開始測試
只要連接成功,則測試會回傳【已順利建立與資料庫的連接】的資訊
連接沒問題後,點選【安全性】頁簽,準備選取驗證類型來更改驗證方式與增加使用者帳號;點選【選取驗證類型】
選擇【從網際網路】,並按下【完成】
接下來直接點選【建立使用者】,當然您可以新增角色,但我們角色將使用 WSS 的角色,所以這邊不設定
點了建立使用者後,在下面的表單註冊帳戶資訊,如果剛有新增角色,則角色欄會出現可選取的角色,記得勾選【現用使用者】,然後按下【建立使用者】
按下建立使用者後,出現【完成...】等資訊,按下【繼續】則可在新增使用者
當建立完成後,可以在【安全性】頁簽看到使用者與角色相關的資訊
到现在为止,我们已经追加了几个用个给咱们刚才建的表中。我们使用新建的用户登录我们的站点,会无法进行任何操作,因为我们没有分配任何权限呢。
现在继续。
配制管理中心
打開管理中心所在的磁盤路徑(如我這里是C:\Inetpub\wwwroot\wss\VirtualDirectories\35784,你可以打开IIS找到管理站点的物理路径)修改其下的Web.config文件. web.config文件的修改如下: a. 加入一個連接資料庫的connectionStrings來連接到存儲用戶資料的sql數據庫 <connectionStrings> <add name="AspNetSqlProvider" connectionString="Database=WSS_Content_0f64aee1faa84ca796fa30c6e72726e0;Server=localhost;User ID=sa;Password=123456;Trusted_Connection=False;" /> </connectionStrings> b. 在system.web下加入成員及角色來源 - 表示這個系統的使用者/角色存儲在哪 <membership defaultProvider="AspNetSqlMembershipProvider"> <providers> <remove name="AspNetSqlMembershipProvider" /> <add connectionStringName="AspNetSqlProvider" passwordAttemptWindow="10" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" description="" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </membership> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"> <providers> <remove name="AspNetSqlRoleProvider" /> <add connectionStringName="AspNetSqlProvider" applicationName="/" description="" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </roleManager> c. 註意了,復雜前面的到這里來時要注冊改一個地方哦,比較下 http://moss:81中角色:<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider"> 管理中心中的色色:<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"> 不一樣吧,這個可記得要改哦,不然的話你的管理中心都使用AD帳戶登錄不了了
然后,进入sharepoint 管理中心,Application Management----Site collection administrators. 将我们镜像站点的Primary site collection administrator(次要網站集合管理員):设为我们刚才新追加给数据库的用户中的随便一个,然后我们就可以使用这个用户登录我们的镜像站点了。 切忌:你第一次進入需要使用你剛添加的 次要網站集合管理員登錄哦,進去後再設置其它用戶的權限即可。 好,到此就完全结束了,好长啊。 |
|
来自: xiaozhenyu > 《SharePoint技术》