使用 Active Directory 域中的 SPNEGO 实施单点登录

提供了简单且受保护的 GSS-API 协商 (SPNEGO) 机制,以在 Active Directory 域中实施单点登录

开始之前

该任务需要网络中的以下元素:

以下过程包含基于以下设置的示例:
  • mycompany.com 是用于域中所有主机的 TCP/IP 域的名称。
  • ITDEV.COM 是 Active Directory 域的名称。
  • it_directory.mycompany.com 是运行目录服务器的主机。它还运行 Kerberos KDC。
  • it_domain.mycompany.com 是运行 Active Directory 域控制器的主机。
  • it_buildforge.mycompany.com 是安装 Build Forge 的主机。
  • bfuser 是 Build Forge 系统的域用户名。
  • happy_user 是示例用户的域用户名,该示例用户将在 Web 浏览器中使用 SSO 来访问 Build Forge。

关于此任务

执行以下任务以在 Active Directory 域和 KDC 中实施 SPNEGO SSO。为每个任务提供了具有详细过程的部分。
注: SPNEGO 拦截器可用于 Active Directory 除外的任何 KDC。

过程

  1. 设置 Active Directory 用户和服务主体。
  2. 设置 Kerberos 文件。
  3. 将 Build Forge 配置为使用 Active Directory 和 SPNEGO。
  4. 配置浏览器客户机以进行安全访问。
  5. 通过 SSO 访问 Build Forge。

设置 Active Directory 用户和服务主体

Build Forge 服务器和 Build Forge 客户机必须在 Active Directory 域中进行设置。

开始之前

以下过程需要 Windows 2003 SP2 的支持工具。它们包含 setspn 命令,该命令对于在 Active Directory 中设置服务主体是必需的。从 Windows Server 2003 产品 CD 或 Microsoft Download Center 中安装支持工具。

关于此任务

Build Forge 客户机和服务器处于 Active Directory 域时,当登录至 Windows 主机时用户将生成 Kerberos 凭证令牌。然后当该用户尝试访问 Build Forge 服务器时,SPNEGO拦截器接收用户令牌并验证该令牌。通过验证的标识通过配置的 Microsoft Active Directory LDAP 服务器传递至 Build Forge 来执行登录。

过程

  1. 登录至域控制器主机。 在本示例中,主机为 it_example.mycompany.com
  2. 如果 Build Forge 主机尚不是成员,请将其添加至 Active Directory 域。 在本示例中,将主机 it_buildforge 添加至 ITDEV.COM 域。此时该主机在域中具有标准名称 it_buildforge.ITDEV.COM
  3. 将 Build Forge 用户添加至 Active Directory 域。 在本示例中,创建用户 bfuser
    要点:
    • 选择密码从不到期。可以选择其他密码管理。但是,将需要在每次密码到期时为 Build Forge 服务器输入新的密码。
    • 帐户选项卡中,选择帐户是信任委派
  4. 如果用户帐户不存在,请在 Microsoft Active Directory 中为所有的客户机创建用户帐户。 在本示例中,要创建一个名为 happy_user 的用户。
  5. 为 Build Forge 创建服务主体名称(SPN)。 在本示例中,Active Directory 用户 bfuser 与服务名称 HTTP/it_buildforge.mycompany.com 相关联以创建 Build Forge 服务器的 SPN it_buildforge
    setspn -A HTTP/it_buildforge.mycompany.com bfuser

    HTTP 是 Build Forge 服务的服务名称。

设置 Kerberos 认证的文件

需要在 Build Forge 主机上设置启动文件(Kerberos 客户机配置文件)和密钥表文件。

过程

  1. 在运行 Build Forge 的主机上设置启动文件。
    • Windows 系统:
      • 将文件命名为 krb.ini,并将其置于 C:\winnt。 如果 C:\winnt 不存在,请创建该目录。
      • default_keytab_name 设置为 FILE:C:\winnt\krb5.keytab
    • UNIX 和 Linux 系统:
      • 将文件命名为 krb.conf,并将其置于 C:\winnt。
      default_keytab_name 设置为 FILE:/etc/krb5.keytab

    以下示例文件是使用示例系统的域和区域设置针对 Windows 设置的。

    [libdefaults]
    		default_realm = ITDEV.COM
    		default_keytab_name = FILE:C:\winnt\krb5.keytab
    		default_tkt_enctypes = rc4_hmac
    		default_tgs_enctypes = rc4_hmac
    #	kdc_default_options = 0x40800000
    		forwardable  = true
    		renewable  = true
    		noaddresses = true
    		clockskew  = 300
    [realms]
    		ITDEV.COM = {
    				kdc = it_directory.itdev.com:88
    				default_domain = mycompany.com
    [domain_realm]
    		.mycompany.com = ITDEV.COM
    注: 如果客户机主机和 Build Forge 服务器主机之间的时钟偏差大于 300 秒,那么令牌将无效。将客户机和服务器主机上的时间、日期和时区设置在偏差限制内。
  2. 设置 Kerberos 密钥表文件。 当客户机尝试访问 Build Forge 服务器 URL 时,Build Forge 服务器将使用密钥表文件验证 Kerberos 令牌。在域控制器主机上使用 ktpass 命令来创建文件。ktpass 命令包含在必备 Windows 资源工具箱中。以下示例使用在示例场景中对 Build Forge 设置的 Build Forge 服务主体名称和 Active Directory 用户名。 使用您自己的密码替换 -pass Rat1onal。 出于清晰性,在示例中显示了换行符。请勿在 ktpass 命令中使用这些换行符。
    ktpass -out C:\it_buildforge.keytab 
    -princ HTTP/it_buildforge.mycompany.com@ITDEV.COM 
    -mapuser bfuser -mapop set 
    -pass Rat1onal /crypto RC4-HMAC-NT /rndpass /ptype KRB5_NT_SRV_HST
    将 it_buildforge.keytab 重命名为 krb5.keytab,并将其置于 Build Forge 主机上包含 Kerberos 启动文件的目录中。
    • 对于 Windows:C:\winnt\
    • 对于 UNIX 和 Linux:/etc

将 Build Forge 配置为使用 Active Directory 和 SPNEGO

过程

  1. 在 Build Forge 中,将 LDAP 设置为指向 Active Directory 域控制器。
    1. 在 Build Forge 中,单击管理 > LDAP
    2. 按如下所示创建新的 LDAP 配置并设置属性来设置对域控制器的访问。
      • 名称:设置为 Active Directory 域的名称。在示例环境中,这将是 itdev
      • 管理员 DN:设置为域中的管理员用户。
      • 映射访问组:否
      • 主机:设置为域控制器主机的 IP 地址。
      • 绑定用户帐户:是
      • 协议:LDAP
      • 显示名称:displayname
      • 专有名称:distinguishedname
      • 组名:memberof
      • 邮件名称:displayname
      • 搜索条件:on=users,do=domainname,do=domainextension。 在示例环境中,这将是 on=users,do=itdev,do=.com
      • 唯一标识:sAMAccountNames=%
    3. 单击设为缺省值 该配置必须作为缺省 LDAP 配置。
  2. 设置 SPNEGO 的 Build Forge 环境变量。
    1. 在 Build Forge 中,转至环境 > SPNEGO SSO 的环境
    2. bf_spnego_service_name 设置为 HTTP 这将与服务主体名称相匹配。
    3. bf_spnego_server_name 设置为 Build Forge 服务器主机的标准主机名 it_buildforge.mycompany.com 如果未设置该变量,那么 INetAddress API 将尝试查找主机名。
    4. bf_spnego_realm 设置为 Kerberos 域名称 ITDEV.COM。 如果未设置该变量,那么将使用 Kerberos 启动文件中的值。
  3. 启用 SPNEGO 拦截器。
    1. 在 Build Forge 中,转至管理 > 安全性 > SSO > SPNEGO SSO 拦截器
    2. 将“活动”属性设置为“是”,然后单击保存
    3. 管理 > 安全性 > SSO中,将 SPNEGO SSO 拦截器移至列表顶部。 使用 SPNEGO SSO 拦截器的“SSO 选项”菜单中的移动至顶部选择,然后单击保存

配置 SSO 的客户机浏览器

客户机浏览器必须将安全性设置设置为使用 SPNEGO。

关于此任务

对用于访问 Build Forge 的浏览器(Microsoft Internet Explorer 或 Mozilla Firefox)使用客户机设置指示信息。

过程

通过 SSO 访问 Build Forge

输入服务器 URL 以通过 SSO 测试登录。

过程

  1. 使用处于 Active Directory 用户列表中的用户名登录至处于 Active Directory 域的主机。
  2. 打开浏览器。
  3. 输入 Build Forge 服务器主机的 URL。 使用示例配置时,它将是 http://it_buildforge.mycompany.com。 如果 SSO 配置正确,将看见 Build Forge 管理控制台。
  4. 请验证显示在 Build Forge 控制台右上方的用户名是否与客户机的 Windows 登录名相匹配。

反馈