使用 ADFS 配置 Web SSO 身份验证 (Office SharePoint Server)

本文内容:

  • 关于联合身份验证系统

  • 开始之前

  • 配置 Extranet Web 应用程序使用 Web SSO 身份验证

  • 允许用户访问 Extranet 网站

  • 使用人员选取器

  • 使用电子邮件声明和 UPN 声明

  • 使用组声明和组织组声明

关于联合身份验证系统

Microsoft Office SharePoint Server 2007 为联合身份验证方案提供支持,在此方案中,身份验证系统对于承载 Office SharePoint Server 2007 的计算机而言不是本地系统。联合身份验证系统也称为 Web 单一登录 (SSO) 系统。一个公司中的用户通过使用 Active Directory 联合身份验证服务 (ADFS) 及其现有的 Active Directory 帐户,可以访问由另一个公司承载的服务器。ADFS 还在这两个公司之间建立信任关系,并为最终用户提供完美的一次性登录体验。ADFS 依靠 302 重定向对最终用户进行身份验证。在对用户进行身份验证之后,会向用户颁发身份验证令牌 (Cookie)。

开始之前

在使用 ADFS 为 Extranet Web 应用程序配置 Web SSO 身份验证之前,您应该熟悉以下资源:

备注

使用人员选取器向 Windows SharePoint Services 3.0 添加用户时,Windows SharePoint Services 3.0 将根据提供程序验证用户,在此示例中,提供程序是 ADFS。因此,应在配置 Windows SharePoint Services 3.0 之前先配置联合服务器。

Important重要说明:

安装过程已被捕获在一个 VBScript 文件中,您可以使用该文件将 Office SharePoint Server 2007 配置为使用 ADFS 进行身份验证。此脚本文件包含在文件 (SetupSharePointADFS.zip) 中,并且可从 Microsoft SharePoint 产品和技术博客上获得,列在“附件”部分中。有关详细信息,请参阅博客页面用于将 SharePoint 配置为使用 ADFS 进行身份验证的脚本(该链接可能指向英文页面)

配置 Extranet Web 应用程序使用 Web SSO 身份验证

  1. 安装声明感知应用程序的 Web 代理。

  2. 下载并安装在运行 ADFS 和 Microsoft Windows SharePoint Services 3.0 的基于 Windows Server 2003 R2 的计算机上不能从 Windows SharePoint Services 3.0 中调用角色提供程序和成员资格提供程序 (http https://go.microsoft.com/fwlink/?linkid=145397&clcid=0x804) 中介绍的 ADFS 的修补程序。此修补程序将包含在 Windows Server 2003 Service Pack 2 (SP2) 中。

  3. 安装 Office SharePoint Server 2007,配置服务器场中的所有服务和服务器,然后创建一个新的 Web 应用程序。默认情况下,此 Web 应用程序将被配置为使用 Windows 身份验证,并且它将成为您的 Intranet 用户访问网站的入口点。在本文使用的示例中,该网站名为“http://trey-moss”。

  4. 在另一区域扩展您在步骤 2 中创建的 Web 应用程序。在 SharePoint 管理中心网站的“应用程序管理”页面上,单击“创建或扩展 Web 应用程序”,再单击“扩展现有 Web 应用程序”,然后执行下列操作:

    1. 添加一个主机标头。这是 DNS 名称,Extranet 中的用户将通过它获知该网站。在本例中,其名称为“extranet.treyresearch.net”。

    2. 将区域更改为 Extranet。

    3. 为网站赋予一个主机标头名称,您将在 DNS 中配置该名称,以便 Extranet 用户根据它执行解析。

    4. 单击“使用安全套接字层(SSL)”,并将端口号更改为 443。ADFS 需要将网站配置为使用 SSL。

    5. 在“负载平衡的 URL”框中,删除文本字符串“:443”。Internet Information Services (IIS) 将自动使用端口 443,因为您在上一个步骤中指定了该端口号。

    6. 完成页面上的其余步骤以完成 Web 应用程序扩展。

  5. 在“备用访问映射 (AAM)”页面上,验证这些 URL 与下表中的 URL 是否类似。

    内部 URL 区域 区域的公用 URL

    http://trey-moss

    默认

    http://trey-moss

    https://extranet.treyresearch.net

    Extranet

    https://extranet.treyresearch.net

  6. 在 IIS 中向 Extranet 网站添加 SSL 证书。请确保此 SSL 证书是颁发给“extranet.treyresearch.net”的,因为这是客户端在访问网站时将使用的名称。

  7. 通过执行下列操作,在您的 Web 应用程序上将 Extranet 区域的身份验证提供程序配置为使用 Web SSO:

    1. 在场的管理中心网站的“应用程序管理”页面上,单击“身份验证提供程序”。

    2. 单击页面右上角处的“更改”,然后选择您要对其启用 Web SSO 的 Web 应用程序。

    3. 在为此 Web 应用程序映射的两个区域列表中(假设这两个区域都使用 Windows 系统),单击 Extranet 区域的“Windows”链接。

    4. 在“验证类型”部分中,单击“Web 单一登录”。

    5. 在“成员资格提供程序名称”框中,键入

      SingleSignOnMembershipProvider2

      请记下这个值;您将要将其添加到 web.config 文件中的 <membership> 部分的 name 元素中,您将在本过程的后续部分编辑 web.config 文件。

    6. 在“角色管理器名称”框中,键入

      SingleSignOnRoleProvider2

      请记下这个值;您将要将其添加到 web.config 文件中的 <roleManager> 部分的 name 元素中,您将在本过程的后续部分编辑 web.config 文件。

    7. 请确保“是否启用客户端集成”设置设为“否”。

    8. 单击“保存”。

现在,您的 Extranet Web 应用程序已配置为使用 Web SSO。但是,此时还无法访问网站,因为没有人拥有访问权限。下一步就是向用户分配权限以便他们能够访问此网站。

备注

选择 WebSSO 作为身份验证提供程序之后,将自动在 IIS 中为 SharePoint 网站启用“匿名身份验证”(无需任何用户操作)。此设置对于网站允许仅使用声明进行访问是必需的。

允许用户访问 Extranet 网站

  1. 使用文本编辑器打开默认区域中正在使用 Windows 身份验证的网站的 web.config 文件。

  2. 在 <system.web> 节点中的任意位置添加以下条目。

    <membership>

    <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://fs-server/adfs/fs/federationserverservice.asmx" />

    </providers>

    </membership>

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

    <providers>

    <remove name="AspNetSqlRoleProvider" />

    <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://fs-server/adfs/fs/federationserverservice.asmx" />

    </providers>

    </roleManager>

  3. 更改“fs-server”的值以反映您的资源联合服务器(“adfsresource.treyresearch.net”)。确保您在管理中心的“身份验证提供程序”页面上输入了正确的成员资格提供程序和角色管理器名称。在将此条目添加到 web.config 后,正在使用 Windows 身份验证的默认区域网站上的“人员选取器”就能够获知 ADFS 提供程序,因此,也就能够解析 ADFS 声明。这使您能够在网站上向 ADFS 声明授予权限。

  4. 执行下列操作以授予 ADFS 声明对网站的访问权限:

    1. 以网站管理员的身份导航到默认区域上使用 Windows 身份验证的网站。

    2. 单击“网站操作”菜单,指向“网站设置”,然后单击“高级权限”。

    3. 单击“新建”,然后单击“添加用户”。

    4. 若要添加用户声明,请在“用户/组”部分中指定其电子邮件地址或用户主要名称。如果从联合服务器既发送 UPN 声明又发送电子邮件声明,则 SharePoint 将使用 UPN 来验证 MembershipProvider。因此,如果希望使用电子邮件,则必须在联合服务器中禁用 UPN 声明。请参阅“使用 UPN 声明和电子邮件声明”以了解详细信息。

    5. 若要添加组声明,请在“用户/组”部分中键入您希望 SharePoint 网站使用的声明的名称。例如,在联合服务器上,创建一个名为“Adatum Contributers”的组织组声明。像添加 Windows 用户或组一样,将声明名称“Adatum Contributers”添加到 Sharepoint 网站中。您可以将“主成员 [参与讨论]”分配给此声明,这样,使用此组声明访问 SharePoint 网站的任何用户都将对网站拥有“参与者”访问权限。

    6. 选择适当的权限级别或 SharePoint 组。

    7. 单击“确定”。

  5. 使用您选择的文本编辑器打开 Extranet 网站的 web.config 文件,并在 <configSections> 节点中添加以下条目。

    <sectionGroup name="system.web">

    <section name="websso" type="System.Web.Security.SingleSignOn.WebSsoConfigurationHandler, System.Web.Security.SingleSignOn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null" />

    </sectionGroup>

  6. 将以下条目添加到 <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" />

    备注

    在 web.config 文件的 <httpModules> 节点中,应始终在 Sharepoint SPRequest 模块后面指定 ADFS 身份验证模块。最安全的做法是将其添加为该节中最后一个条目。

  7. 在 <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" />

    </providers>

    </membership>

    <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 />

    </providers>

    </roleManager>

    <websso>

    <authenticationrequired />

    <auditlevel>55</auditlevel>

    <urls>

    <returnurl>https://your_application</returnurl>

    </urls>

    <fs>https://fs-server/adfs/fs/federationserverservice.asmx</fs>

    <isSharePoint />

    </websso>

    备注

    将“fs-server”的值更改为您的联合服务器计算机,并更改“your_application”的值以反映您的 Extranet Web 应用程序的 URL。

  8. 以对 Extranet 网站拥有访问权限的 ADFS 用户身份浏览到“https://extranet.treyresearch.net”网站。

关于使用管理中心

您还可以使用管理中心策略向 ADFS 用户授予权限,但是出于下列原因,最好不要使用这种方法:

  • 按策略授予权限是一项不太细致的操作。它允许用户(或组)在每个网站中、在整个 Web 应用程序的每个网站集中都拥有相同的权限集。使用它时应非常慎重;在此特定方案中,我们可以不使用这种方法向 ADFS 用户授予访问权限。

  • 在 Extranet 环境中使用这些网站之后,内部用户很有可能将负责授予对网站和内容的访问权限。由于只有服务器场管理员有权访问管理中心网站,因此,这种情况在内部用户可从使用 Windows 身份验证的默认区域网站中添加 ADFS 声明时最有意义。

  • 由于使用不同的提供程序扩展 Web 应用程序,因此可以配置其中的一个或多个提供程序,使之能够从当前在此 Web 应用程序上使用的各个提供程序中查找用户和组。在此方案中,我们配置使用 Windows 身份验证的网站,以便允许该网站的用户从一个网站选择其他 Windows 用户、Windows 组和 ADFS 声明。

使用人员选取器

人员选取器不能执行通配符搜索来搜索角色。如果您有一个名为 Readers 的 Web SSO 角色提供程序角色,并在“人员选取器”搜索对话框中键入 Read,它将找不到您的声明。如果键入 Readers,它就会找到该声明。这不属于缺陷,只不过是不能使用角色提供程序执行通配符搜索而已。

默认情况下,命令行可执行文件(如 stsadm.exe)将无法解析 ADFS 声明。例如,您可能希望使用 stsadm.exe –o adduser 命令向 Extranet 网站中添加一个新用户。为了使 Stsadm(或其他可执行文件)能够解析用户,请执行下列操作创建一个新的配置文件:

  • 在 stsadm.exe 所在的同一个目录 (%programfiles%\Common Files\Microsoft Shared Debug\Web Server Extensions\12\BIN) 中创建一个名为 stsadm.exe.config 的新文件。在 stsadm.exe.config 文件中添加以下项:

    <configuration>

    <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://fs-server/adfs/fs/federationserverservice.asmx" />

    </providers>

    </membership>

    <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://fs-server/adfs/fs/federationserverservice.asmx" />

    </providers>

    </roleManager>

    </system.web>

    </configuration>

    备注

    将“fs-server”的值更改为您的资源联合服务器(“adfsresource.treyresearch.net”)。

使用电子邮件声明和 UPN 声明

若要配置联合服务器是否能够向 Office SharePoint Server 2007 发送电子邮件声明或 UPN 声明,请执行以下过程。

  1. 在联合服务器上的“管理工具”中,打开 ADFS 管理单元。

    备注

    也可以通过在“运行”对话框中键入 ADFS.MSC 来打开 ADFS 管理单元。

  2. 选择您的 Office SharePoint Server 2007 应用程序节点(您的应用程序应该已添加到节点列表中)。

  3. 在右侧的声明列表中,右键单击“电子邮件”,然后选择“启用”或“禁用”。

  4. 在右侧的声明列表中,右键单击“UPN”,然后选择“启用”或“禁用”。

    备注

    如果同时启用了 UPN 和电子邮件,那么 Office SharePoint Server 2007 将使用 UPN 来执行用户声明验证。因此,配置 Office SharePoint Server 2007 时,请注意您输入的是哪个用户声明。另外请注意,仅当联合服务器所接受的 UPN 后缀和电子邮件后缀相同时,UPN 声明才能一致正常工作。这是因为成员资格提供程序是基于电子邮件的。由于配置 UPN 声明存在这种复杂性,因此电子邮件是推荐的用于成员身份验证的用户声明设置。

使用组声明和组织组声明

在 Office SharePoint Server 2007 中,可以通过将 Active Directory 组添加到 SharePoint 组或直接添加到权限级别来将权限分配给 Active Directory 组。可以计算得出给定用户对网站拥有的权限级别,计算依据是该用户所属的 Active Directory 组、该用户所属的 SharePoint 组以及该用户已被直接添加到的所有权限级别。

如果您将 ADFS 用作 Office SharePoint Server 2007 中的角色提供程序,则该过程将有所不同。Web SSO 提供程序无法直接解析 Active Directory 组,而是通过使用组织组声明来解析组。对 Office SharePoint Server 2007 使用 ADFS 时,必须在 ADFS 中创建一组组织组声明。然后,就可以将多个 Active Directory 组与一个 ADFS 组织组声明关联。

为了让组声明可以适应最新版本的 ADFS,需要在您的 ADFS 服务器上的 IIS 中为 ADFS 应用程序编辑 web.config 文件。

打开 web.config 文件,将 <getGroupClaims /> 添加到 <System.Web> 节点内的 <FederationServerConfiguration> 节点中,如以下示例所示。

<configuration>
     <system.web>
          <FederationServerConfiguration>
               <getGroupClaims />
          </FederationServerConfiguration>
     </system.web>
</configuration>

在 Adatum(帐户林)中,执行以下操作:

  1. 创建一个名为 Trey SharePoint Readers 的 Active Directory 组。

  2. 创建一个名为 Trey SharePoint Contributors 的 Active Directory 组。

  3. 将 Alansh 添加到 Readers 组,将 Adamcar 添加到 Contributors 组。

  4. 创建一个名为 Trey SharePoint Readers 的组织组声明。

  5. 创建一个名为 Trey SharePoint Contributors 的组织组声明。

  6. 右键单击 Active Directory 帐户存储,然后单击“新组声明提取”。

    1. 选择 Trey SharePoint Readers 组织组声明,然后将其与 Active Directory 组 Trey SharePoint Readers 关联。

    2. 重复步骤 6,然后将 Trey SharePoint Contributors 组织组声明与 Active Directory 组 Trey SharePoint Contributors 关联。

  7. 右键单击 Trey Research 帐户伙伴,然后创建传出声明映射:

    1. 选择 Trey SharePoint Reader 声明,然后映射到传出声明 adatum-trey-readers。

    2. 选择 Trey SharePoint Contributor 声明,然后映射到传出声明 adatum-trey-contributors。

备注

声明映射名称在各组织间必须达成一致,它们必须完全匹配。

在 Trey Research 一侧,启动 ADFS.MSC,然后执行以下操作:

  1. 创建一个名为 Adatum SharePoint Readers 的组织组声明。

  2. 创建一个名为 Adatum SharePoint Contributors 的组织组声明。

  3. 为您的声明创建传入组映射:

    1. 右键单击 Adatum 帐户伙伴,然后单击“传入组声明映射”。

    2. 选择 Adatum SharePoint Readers,然后将其映射到名称为 adatum-trey-readers 的传入声明。

    3. 选择 Adatum SharePoint Contributors,然后将其映射到名称为 adatum-trey-contributors 的传入声明。

  4. 右键单击 Office SharePoint Server 2007 Web 应用程序,然后在 Reader 声明和 Contributor 声明上单击“启用”。

以网站管理员的身份浏览到 Trey Research 一侧的“http://trey-moss”网站,然后执行以下操作:

  1. 单击“网站操作”菜单,指向“网站设置”,然后单击“人员和组”。

  2. 单击您的网站的“Members”组(如果尚未选择它)。

  3. 单击“新建”,然后单击工具栏上的“添加用户”。

  4. 单击“用户/组”框旁边的通讯簿图标。

  5. 在“人员选取器”对话框中的“查找”框中,键入

    Adatum SharePoint Readers

    在“授予权限”部分中,选择 SharePoint 组“主访问者 [Readers]”。

  6. 在“查找”框中,键入

    Adatum SharePoint Contributors

    在“授予权限”部分中,选择 SharePoint 组“主成员 [参与讨论]”。

下载此书籍

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

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