程序园

弹奏键盘人生,拂去青春的尘土,留下的只有岁月的痕迹
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

身份验证示例(从微软网站上复制的,怕链接失效)

Posted on 2009-11-16 21:50  程旭圆  阅读(657)  评论(0编辑  收藏  举报

源文链接:http://technet.microsoft.com/zh-cn/library/cc262069.aspx

本文内容:

本文包括几个常见的表单身份验证提供程序和 Web 单一登录 (SSO) 身份验证提供程序的示例配置设置。

SQL 成员资格提供程序

下表为使用 ASP.NET 表单身份验证连接到 SQL 成员资格提供程序提供了 Web.config 文件项示例。

配置步骤 说明和 Web.config 文件项示例

启用 ASP.NET 表单身份验证。

可以在 SharePoint 管理中心网站的“编辑验证”页上将特定区域的身份验证类型设置为表单身份验证。

这会自动将在 Web.config 文件的 authentication 元素中为该区域指定的模式更改为表单。

例如:

<authentication mode="Forms">
</authentication>

注册成员资格提供程序。

如果要使用本地服务器上的 Microsoft SQL Server 数据库软件作为成员资格提供程序数据库,并为成员资格提供程序名称指定 AspNetSqlMembershipProvider,则可能不需要对 Web.config 文件进行任何其他更改。在这种情况下,如果 machine.config 文件具有正确的 AspNetSqlMembershipProvider 配置,则可以将其用于 Windows SharePoint Services,而不用进行任何更改。

如果 machine.config 文件中的默认配置不适用(例如,如果要在远程服务器上使用 SQL Server 数据库),则必须针对 Web 应用程序和管理中心网站编辑 Web.config 文件以在成员资格提供程序数据库的 connectionStrings 元素中指定连接信息。

例如:

<connectionStrings>

<add name="SqlProviderConnection" connectionString="server=SQLSERVERMACHINE;database=aspnetdb;Trusted_Connection=True" />

</connectionStrings>

将 SQLSERVERMACHINE 替换为在其上安装了 SQL Server 成员资格数据库的服务器计算机的名称。

接下来,添加 membershipproviders 元素以在 Web.config 文件中注册成员资格提供程序。因为已经在 machine.config 文件中注册了默认提供程序,所以必须在 <add> 元素前面添加 <remove> 元素。

例如:

<membership defaultProvider="AspNetSqlMembershipProvider">

<providers>

<remove name="AspNetSqlMembershipProvider" />

<add connectionStringName="SqlProviderConnection" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</membership>

对于 Web 应用程序和管理中心网站,membership 元素必须包含在 Web.config 文件的 system.web 元素内。

注册角色管理器(可选)。

通过将 roleManager 元素添加到 Web.config 文件的 system.web 元素中,可以使用 ASP.NET 的默认角色提供程序。例如:

<roleManager enabled="true" />

前面的语法使用在 machine.config 文件中定义的 AspNetSqlRoleProvider。此角色管理器可以连接到 SQL Server 的本地或远程实例中的 ASPNETDB 数据库。如果要将远程服务器上的 SQL Server 数据库用作角色提供程序数据库,则必须编辑 Web.config 文件以指定远程数据库服务器的连接信息。

例如:

<connectionStrings>

<add

name="SqlProviderConnection"

connectionString="server=SQLSERVERMACHINE; database=aspnetdb; Trusted_Connection=True"

/>

</connectionStrings>

将 SQLSERVERMACHINE 替换为承载 SQL 数据库的远程服务器的名称。可以为成员资格提供程序和角色管理器这两者指定相同的 connectionStringName 元素值,因此,不需要为角色提供程序添加新的 connectionStrings 元素。但是,如果要对角色提供程序使用不同的数据库,则必须为角色提供程序添加一个单独的 connectionStrings 元素。

接下来,您需要添加 roleManagerproviders 元素以在 Web.config 文件中注册 roleManager 提供程序。因为已经在 machine.config 文件中注册了默认提供程序,所以必须在 <add> 元素前面添加 <remove> 元素。

例如:

<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">

<providers>

<remove name="AspNetSqlRoleProvider" />

<add connectionStringName="SqlProviderConnection" applicationName="/" description="Stores and retrieves roles data from the local Microsoft SQL Server database" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</roleManager>

对于 Web 应用程序和管理中心网站,roleManager 元素必须包含在 Web.config 文件的 system.web 元素内。

注册 HTTP 模块。

不适用

Active Directory 成员资格提供程序

下表为通过 ASP.NET 表单身份验证使用 Active Directory 目录服务成员资格提供程序提供了 Web.config 文件项示例。

Note 注意:

这将仅适用于单个域的情况。

配置步骤 说明和 Web.config 文件项示例

启用 ASP.NET 表单身份验证。

可以在管理中心的“编辑验证”页上将特定区域的身份验证类型设置为表单身份验证。

这会自动将在 Web.config 文件的 authentication 元素中为该区域指定的模式更改为表单。

例如:

<authentication mode="Forms">
</authentication>

还可以在 forms 元素中指定登录页 URL,例如:

<authentication mode="Forms">
    <forms loginUrl="/_layouts/login.aspx"></forms>
</authentication>

注册成员资格提供程序。

如果要将 Active Directory 服务器用于成员资格提供程序,则必须编辑 Web.config 文件以注册成员资格提供程序。为此,必须在 connectionStrings 元素中指定 Active Directory 服务器连接信息。

例如:

<connectionStrings>

<add name="ADConnectionString"

connectionString=

"LDAP://DirectoryServer/CN=Users,DC=DirectoryServer " />

</connectionStrings>

将 DirectoryServer 替换为成员资格目录服务器的名称。

<membership defaultProvider="MembershipADProvider">

<providers>

<add name="MembershipADProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

connectionStringName="ADConnectionString"/></providers>

</membership>

Note 注意:
前面的示例未指定帐户凭据。如果未指定帐户凭据,则使用应用程序的进程标识来访问 Active Directory。

如果需要用另一个帐户访问 Active Directory,则可以在 connectionUsernameconnectionPassword 属性中指定不同的帐户凭据,这意味着将以纯文本形式提供用户名和密码。因此,建议对此配置部分进行加密。有关详细信息,请参阅下面的文章:

注册角色管理器(可选)。

注册 HTTP 模块。

不适用

LDAP 成员资格提供程序

下表为将 ASP.NET 表单身份验证与轻型目录访问协议 (LDAP) 成员资格提供程序一起使用提供了 Web.config 文件项示例。

配置步骤 说明和 Web.config 文件项示例

启用 ASP.NET 表单身份验证。

可以在管理中心的“编辑验证”页上将特定区域的验证类型设置为表单身份验证。

这会自动将在 Web.config 文件的 authentication 元素中为该区域指定的模式更改为表单。

<system.web>
 <!-mode=[Windows|Forms|Passport|None]>
 <authentication mode="Forms" />
</system.web>

注册成员资格提供程序。

membership 元素必须包含在 Web.config 文件的 system.web 元素内。

<membership defaultProvider="LdapMembershipProvider">

<providers>

<add

name="LdapMembership"

type="Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"

server="DC"

port="389"

useSSL="false"

userDNAttribute="distinguishedName"

userNameAttribute="sAMAccountName"

userContainer="CN=Users,DC=userName,DC=local"

userObjectClass="person"

userFilter="(|(ObjectCategory=group)(ObjectClass=person))"

scope="Subtree"

otherRequiredUserAttributes="sn,givenname,cn"

/>

</providers>

</membership>

您将需要更改为 serveruserContainer 属性指定的值以匹配您的环境。

注册角色管理器(可选)。

<roleManager defaultProvider="LdapRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".PeopleDCRole">

<providers>

<add

name="LdapRoleProvider"

type="Microsoft.Office.Server.Security.LDAPRoleProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"

server="DC"

port="389"

useSSL="false"

groupContainer="DC=userName,DC=local"

groupNameAttribute="cn"

groupMemberAttribute="member"

userNameAttribute="sAMAccountName"

dnAttribute="distinguishedName"

groupFilter="(ObjectClass=group)"

scope="Subtree"

/>

</providers>

</roleManager>

您将需要更改为 servergroupContainer 属性指定的值以匹配您的环境。

注册 HTTP 模块。

不适用

Web SSO 与 ADFS

Microsoft Windows Server 2003 R2 操作系统引入了 Active Directory 联合身份验证服务 (ADFS),这使组织能够安全地共享用户的标识信息。ADFS 提供 Web 单一登录 (SSO) 技术以在一个联机会话过程中向多个 Web 应用程序验证用户。

ADFS 附带以下两个成员资格和角色提供程序对:

  • SingleSignOnMembershipProvider/SingleSignOnRoleProvider   Windows Server 2003 R2 附带的标准成员资格提供程序和角色提供程序

  • SingleSignOnMembershipProvider2/SingleSignOnRoleProvider2   在部分信任环境中运行的成员资格提供程序和角色提供程序。这些提供程序包含在 Windows Server 2003 R2 Service Pack 2 中。

SingleSignOnMembershipProvider/SingleSignOnRoleProvider

下表为使用标准提供程序的 Web SSO ADFS 环境提供了 Web.config 文件项示例。

配置步骤 说明和 Web.config 文件项示例

启用 ASP.NET 表单身份验证。

<system.web>
 <!-mode=[Windows|Forms|Passport|None]>
 <authentication mode="Forms" />
</system.web>

注册成员资格提供程序。

<membership defaultProvider="SingleSignOnMembershipProvider">

<providers>

<add

name="SingleSignOnMembershipProvider"

type="System.Web.Security.SingleSignOn.SingleSignOnMembershipProvider, System.Web.Security.SingleSignOn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

fs="https://FEDERATIONSERVER/adfs/fs/federationserverservice.asmx"

/>

</providers>

</membership>

对于 fs 属性,将 FEDERATIONSERVER 替换为实际的服务器名称。

membership 元素必须包含在 Web.config 文件的 system.web 元素内。

注册角色管理器(可选)。

<roleManager enabled="true" defaultProvider="SingleSignOnRoleProvider">

<providers>

<add

name="SingleSignOnRoleProvider"

type="System.Web.Security.SingleSignOn.SingleSignOnRoleProvider, System.Web.Security.SingleSignOn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

fs="https://FEDERATIONSERVER/adfs/fs/federationserverservice.asmx"

/>

</providers>

</roleManager>

对于 fs 属性,需要将 FEDERATIONSERVER 替换为实际的服务器名称。

注册 HTTP 模块。

<httpModules>

<add name="Identity Federation Services Application Authentication Module" type="System.Web.Security.SingleSignOn.WebSsoAuthenticationModule, System.Web.Security.SingleSignOn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" />

</httpModules>

SingleSignOnMembershipProvider2/SingleSignOnRoleProvider2

如果要实现第二个 ADFS 提供程序集,则用于注册成员资格提供程序和角色管理器的设置不同。下表为 Web SSO ADFS 环境(使用在部分信任环境中运行的提供程序)提供了 Web.config 文件项示例。

配置步骤 说明和 Web.config 文件项示例

启用 ASP.NET 表单身份验证。

<system.web>
 <!-mode=[Windows|Forms|Passport|None]>
 <authentication mode="Forms" />
</system.web>

注册成员资格提供程序。

<membership defaultProvider="SingleSignOnMembershipProvider2">

<providers>

<add name="SingleSignOnMembershipProvider2"

type="System.Web.Security.SingleSignOn.SingleSignOnMembershipProvider2, System.Web.Security.SingleSignOn.PartialTrust, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

fs=https://FEDERATIONSERVER/adfs/fs/federationserverservice.asmx

/>

</providers>

</membership>

对于 fs 属性,将 FEDERATIONSERVER 替换为实际的服务器名称。

membership 元素必须包含在 Web.config 文件的 system.web 元素内。

注册角色管理器(可选)。

<roleManager enabled="true" defaultProvider="SingleSignOnRoleProvider2">

<providers>

<add

name="SingleSignOnRoleProvider2"

type="System.Web.Security.SingleSignOn.SingleSignOnRoleProvider2, System.Web.Security.SingleSignOn.PartialTrust, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

fs="https://FEDERATIONSERVER/adfs/fs/federationserverservice.asmx"

/>

</providers>

</roleManager>

对于 fs 属性,需要将 FEDERATIONSERVER 替换为实际的服务器名称。

注册 HTTP 模块。

<httpModules>

<add name="Identity Federation Services Application Authentication Module" type="System.Web.Security.SingleSignOn.WebSsoAuthenticationModule, System.Web.Security.SingleSignOn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" />

</httpModules>

下载此书籍

本主题包含在以下可下载书籍内,以方便您阅读和打印:

有关可下载书籍的完整列表,请参阅 Office SharePoint Server 2007 的可下载书籍