使用 Microsoft 客户端配置单一登录

以下部分描述如何通过基于简单和受保护协商(Simple and Protected Negotiate,简称 SPNEGO)机制和 Kerberos 协议的 Windows 身份验证以及 WebLogic 协商标识声明提供程序来使用 Microsoft 客户端设置单一登录(Single Sign-On,简称 SSO)。

  • Microsoft 客户端单一登录概述
  • 使用 Microsoft 客户端实现 SSO 的系统要求
  • 使用 Microsoft 客户端进行单一登录:主要步骤
  • 创建 WebLogic Server 的 Kerberos 标识
  • 将 Microsoft 客户端配置为使用 Windows 集成身份验证
  • 创建 JAAS 登录文件
  • 配置标识声明提供程序
  • 通过启动参数在 WebLogic Server 中使用 Kerberos 身份验证
  • 验证 Microsoft 客户端的 SSO 配置

Microsoft 客户端单一登录概述

通过使用 Microsoft 客户端进行单一登录 (SSO),可以在 WebLogic Server 域中运行的 Web 应用程序或 Web Service 与 Microsoft 域中的 .NET Web Service 客户端或浏览器客户端(例如,Internet Explorer)之间进行跨平台身份验证。Microsoft 客户端必须使用基于简单和受保护协商 (SPNEGO) 机制的Windows 身份验证。

跨平台身份验证通过仿真使用 Kerberos 协议的本地 Windows 到 Windows 身份验证服务的协商行为来实现。为使跨平台身份验证正常运行,非 Windows 服务器(本文中为 WebLogic Server)需要解析 SPNEGO 标记才能提取随后将用于身份验证的 Kerberos 标记。

使用 Microsoft 客户端实现 SSO 的系统要求

要通过 Microsoft 客户端使用 SSO,需要:

在主机上安装:

  • Windows 2000 或更高版本
  • 完全配置的 Active Directory 身份验证服务。特定的 Active Directory 要求包括:
    • 用于映射 Kerberos 服务的用户帐户
    • 这些帐户的服务委托人名称(Service Principal Name,简称为 SPN)
    • 创建 Keytab 文件并复制到 WebLogic Server 域的启动目录中
  • 已正确安装 WebLogic Server 并将其配置为通过 Kerberos 进行身份验证(如本文所述)

在客户端系统上安装:

  • Windows 2000 Professional SP2 或更高版本
  • 以下类型的客户端之一:
    • 经过适当配置的 Internet Explorer 浏览器。支持 Internet Explorer 6.01 或更高版本。
    • .NET Framework 1.1 和经过适当配置的 Web Service 客户端。

      客户端必须登录到 Windows 2000 域并且必须从该域中的 Active Directory 服务器获取 Kerberos 凭据。本地登录将不起作用。

使用 Microsoft 客户端进行单一登录:主要步骤

使用 Microsoft 客户端配置 SSO 需要经过对 Microsoft Active Directory、客户端和 WebLogic Server 域的设置过程(有关这些过程的详细信息,请参阅以下部分)。

  • 在 Active Directory 中定义一个委托人来表示 WebLogic Server。Kerberos 协议使用 Microsoft 中的 Active Directory 服务器来存储所需的安全信息。
  • 需要在 Microsoft 域中访问的任何 Microsoft 客户端都必须设置为使用 Windows 集成身份验证,以便在可用时发送 Kerberos 票据。
  • 在 WebLogic Server 域的安全领域中,配置一个协商标识声明提供程序。SSO 中使用的 Web 应用程序或 Web Service 需要以特定的形式设置身份验证。此外,还必须创建定义 WebLogic Server 的 Kerberos 标识的位置的 JAAS 登录文件。

要使用 Microsoft 客户端配置 SSO,请执行下列操作:

  1. 将网络域配置为使用 Kerberos。请参阅将网络域配置为使用 Kerberos 。
  2. 创建 WebLogic Server 的 Kerberos 标识。
    1. 在运行 WebLogic Server 的主机的 Active Directory 中创建用户帐户。
    2. 创建该帐户的服务委托人名称。
    3. 创建该帐户的用户映射和 keytab 文件。

      请参阅创建 WebLogic Server 的 Kerberos 标识 。

  3. 选择一个 Microsoft 客户端(Web Service 或浏览器)并将其配置为使用 Windows 集成身份验证。请参阅将 Microsoft 客户端配置为使用 Windows 集成身份验证 。
  4. 将 WebLogic Server 域设置为使用 Kerberos 身份验证。
    1. 创建一个 JAAS 登录文件并使其指向步骤 1 中创建的 Microsoft 域中的 Active Directory 服务器和 keytab 文件。请参阅创建 JAAS 登录文件 。
    2. 配置 WebLogic Server 安全领域中的协商标识声明提供程序。请参阅配置协商标识声明提供程序 。
  5. 使用特定的启动参数启动 WebLogic Server。请参阅通过启动参数在 WebLogic Server 中使用 Kerberos 身份验证 。

以下部分将详细描述这些步骤。

将网络域配置为使用 Kerberos

通过使用 Active Directory 和 Kerberos 服务,Windows 域控制器可以充当 Kerberos 密钥分发中心(Key Distribution Center,简称 KDC)。在任何域控制器上,Active Directory 和 Kerberos 服务都自动运行。

要在网络域控制器中配置 Kerberos,需要将每台要访问 KDC 的计算机配置为查找 Kerberos 领域和可用的 KDC 服务器。在 Windows 计算机上,修改 C:/winnt 文件夹中的 krb5.ini 文件。在 UNIX 计算机上,修改 krb5.conf 文件,其默认位置为 /etc/krb5/ 。例如:

清单 6-1 示例 krb5.ini 文件

[libdefaults]
default_realm = MYDOM.COM (Identifies the default realm.Set its value to your Kerberos realm)
default_tkt_enctypes = des-cbc-crc
default_tgs_enctypes = des-cbc-crc
ticket_lifetime = 600

[realms]

MYDOM.COM = {
kdc = (host running the KDC)
(For Unix systems, you need to specify port88, as in :88)
admin_server = MachineA
default_domain = MYDOM.COM

[domain_realm]
.mydom.com = MYDOM.COM

[appdefaults]
autologin = true
forward = true
forwardable = true
encrypt = true

创建 WebLogic Server 的 Kerberos 标识

Active Directory 提供对服务委托人名称 (SPN) 的支持,SPN 是 Kerberos 身份验证中的关键组件。它们是服务器上所运行的服务的唯一标识符。需要为使用 Kerberos 身份验证的每一项服务都设置 SPN,这样客户端才能识别网络上的服务。SPN 通常类似于 [email protected]。需要定义 SPN 来表示 Kerberos 领域中的 WebLogic Server。如果某项服务未设置 SPN,客户端将无法找到该服务。如果未正确设置 SPN,Kerberos 身份验证将无法进行。Keytab 文件是用于存储 SPN 的机制。Keytab 文件将复制到 WebLogic Server 域并在登录过程中使用。此配置步骤描述如何创建 WebLogic Server 的 SPN、用户映射和 keytab 文件。

此配置步骤需要使用下列 Active Directory 实用工具:

  • setspn— Windows 2000 资源工具包
  • ktpass— Windows 2000 分发 CD 中的 Program Files/Support Tools

注意:
setspnktpass Active Directory 实用工具都是 Microsoft 的产品。因此,BEA Systems 不提供有关此类实用工具的完整文档。有关详细信息,请参阅适当的 Microsoft 文档。

要创建 WebLogic Server 的 Kerberos 标识,请执行下列步骤:

  1. 在 Active Directory 服务器中,为运行 WebLogic Server 的主机创建一个用户帐户(选择“新建”>“用户”,而不是“新建”>“计算机”)。

    在创建该用户帐户时,应使用计算机的简单名称。例如,如果主机名为 myhost.example.com ,则在 Active Directory 中创建一个名为 myhost. 的用户。

    请记录下创建用户帐户时定义的密码。在步骤 3 中将需要使用该密码。请勿选择“User must change password at next logon ”选项或任何其他密码选项。

  2. 配置新用户帐户以使其符合 Kerberos 协议。此用户帐户的加密类型必须是 DES 并且必须要求进行 Kerberos 预身份验证。
    1. 在左窗格的“用户”树中,用鼠标右键单击该用户帐户的名称,然后选择“属性”。
    2. 选择“帐户”选项卡并选中“此帐户需要使用 DES 加密类型”框。确保未选中其他框,尤其不要选中“不要求进行 Kerberos 预身份验证”框。
    3. 设置加密类型可能会损坏密码。因此,应重置用户密码,方法是用鼠标右键单击该用户帐户的名称,选择“重设密码”,然后重新输入之前指定的同一密码。
  3. 使用 setspn 实用工具为步骤 1 中创建的用户帐户创建服务委托人名称 (SPN)。请输入下列命令:
    setspn -a host/myhost.example.com myhost

    setspn -a HTTP/myhost.example.com myhost
  4. 使用以下命令检查与您的用户帐户关联的 SPN:
    setspn -L account name

    这是一个重要步骤。如果将同一服务链接到 Active Directory 服务器中的另一帐户,则客户端将不会向服务器发送 Kerberos 票据。

  5. 使用 ktpass 实用工具创建用户映射:

    Windows
    ktpass -princ host/ [email protected] -pass password -mapuser myhost -out c:/temp/myhost.host.keytab

  6. 创建 keytab 文件。在 Windows 上,ktab 实用工具管理密钥表中的委托人名称和密钥对,并允许您列出、添加、更新或删除委托人名称和密钥对。在 UNIX 上,最好使用 ktpass 实用工具。

    Windows

    1. 在运行 WebLogic Server 的主机上运行 ktab 实用工具来创建 keytab 文件:
      ktab -k keytab-filename
       -a [email protected]
    2. 将 keytab 文件复制到 WebLogic Server 域的启动目录中。

      UNIX

    3. 使用 ktpass 实用工具并通过类似以下形式的命令创建用户映射,其中 password 是在步骤 1 中创建的用户帐户的密码:
      ktpass -princ HTTP/
      [email protected]
       -pass 
      password
       -mapuser myhost 
      -out c:/temp/myhost.HTTP.keytab
    4. 将步骤 a 中创建的 keytab 文件复制到 WebLogic Server 域的启动目录中。
    5. 以根用户身份登录,然后使用 ktutil 实用工具将它们合并到一个 keytab 文件中,如下所示:
      ktutil: "rkt myhost.host.keytab"
      ktutil: "rkt myhost.HTTP.keytab"
      ktutil: "wkt mykeytab"
      ktutil: "q"
  7. 运行 kinit 实用工具验证 Kerberos 身份验证是否正常运行。
    kinit -k -t 
    keytab-file
     
    account-name

    其输出应类似以下内容:

    New ticket is stored in cache file C:/Documents and 
    Settings/Username/krb5cc_MachineB

将 Microsoft 客户端配置为使用 Windows 集成身份验证

应确保将需要用于单一登录的 Microsoft 客户端配置为使用 Windows 集成身份验证。以下部分描述如何将 .NET Web 服务器和 Internet Explorer 浏览器客户端配置为使用 Windows 集成身份验证。

配置 .NET Web Service

要将 .NET Web Service 配置为使用 Windows 身份验证,请执行下列操作:

  1. 在 Web Service 的 web.config 文件中,将 IIS 和 ASP.NET 的身份验证模式设置为 Windows,如下所示:
     

    此设置通常是默认设置。

  2. 添加 Web Service 客户端需要传递给代理 Web Service 对象的语句,以便通过 SOAP 发送凭据。

    例如,如果某项 Web Service 的 Web Service 客户端由代理对象 conv 表示,则语法为:

    /*
    * 明确将凭据传递到 Web Service
    */
    conv.Credentials =
    System.Net.CredentialCache.DefaultCredentials;
配置 Internet Explorer 浏览器

要将 Internet Explorer 浏览器配置为使用 Windows 身份验证,请在 Internet Explorer 中执行以下过程:

配置本地 Intranet 域
  1. 在 Internet Explorer 中,选择“工具”>“Internet 选项”。
  2. 选择“安全”选项卡。
  3. 选择“本地 Intranet”,然后单击“站点”。
  4. 在“本地 Intranet”弹出窗口中,确保选中“包括所有不使用代理服务器的站点”和“包括没有列在其他区域的所有本地 (Intranet) 站点”选项。
  5. 单击 “高级”
  6. 在“本地 Intranet”(高级)对话框中,添加所有要在参与 SSO 配置的 WebLogic Server 实例中使用的相对域名(例如,myhost.example.com ),然后单击“确定”。
配置 Intranet 身份验证
  1. 选择“工具”>“Internet 选项”。
  2. 选择“安全”选项卡。
  3. 选择“本地 Intranet”,然后单击“自定义级别...”。
  4. 在“安全设置”对话框中,滚动到“用户验证”部分。
  5. 选择“只在 Intranet 区域自动登录“。使用此选项时,用户不必重新输入登录凭据,它是此解决方案的关键部分。
  6. 单击“确定”。
验证代理设置

如果启用了代理服务器,则:

  1. 选择“工具”>“Internet 选项”。
  2. 选择“连接”选项卡,然后单击“局域网设置”。
  3. 验证代理服务器地址和端口号是否正确。
  4. 单击“高级”。
  5. 在“代理服务器设置”对话框中,确保在“例外”字段中输入了所有需要的域名。
  6. 单击“确定”关闭“代理服务器设置”对话框。
为 Internet Explorer 6.0 设置集成身份验证

如果运行 Internet Explorer 6.0,则除了已描述的设置外,还需要进行另一项设置。

  1. 在 Internet Explorer 中,选择“工具”>“Internet 选项”。
  2. 选择“高级”选项卡。
  3. 滚动到“安全”部分。
  4. 确保选中“启用集成 Windows 身份验证(需要重启动)”,然后单击“确定”。
  5. 如果未选中此选项,请重新启动计算机。

创建 JAAS 登录文件

如果在 Windows 或 UNIX 平台上运行 WebLogic Server,则需要 JAAS 登录文件。JAAS 登录文件指示要的 WebLogic 安全框架使用 Kerberos 身份验证并定义包含 WebLogic Server 的 Kerberos 标识信息的 keytab 文件的位置。该文件的位置在 WebLogic Server 的 java.security.auth.login.config 启动参数中指定,如通过启动参数在 WebLogic Server 中使用 Kerberos 身份验证 中所述。

清单 6-2 包含一个用于 Kerberos 身份验证的示例 JAAS 登录文件。

清单 6-2 用于 Kerberos 身份验证的示例 JAAS 登录文件

com.sun.security.jgss.initiate {

     com.sun.security.auth.module.Krb5LoginModule required
     principal="[email protected] " useKeyTab=true
     keyTab=mykeytab storeKey=true;
};

com.sun.security.jgss.accept {

     com.sun.security.auth.module.Krb5LoginModule required
     principal="[email protected] " useKeyTab=true
     keyTab=mykeytab storeKey=true;

};

配置标识声明提供程序

WebLogic Server 包含一个安全提供程序 - 协商标识声明提供程序,它可支持使用 Microsoft 客户端的单一登录 (SSO)。此标识声明提供程序会解码简单和受保护协商 (SPNEGO) 标记来获取 Kerberos 标记,并在验证 Kerberos 标记后将 Kerberos 标记映射到 WebLogic 用户。需要在 WebLogic 安全领域中配置协商标识声明提供程序,以便启用 Microsoft 客户端的 SSO。请参阅“管理控制台联机帮助”中的配置协商标识声明提供程序 和配置身份验证和标识声明提供程序 。

通过启动参数在 WebLogic Server 中使用 Kerberos 身份验证

要在 WebLogic Server 中使用 Kerberos 身份验证,请在启动 WebLogic Server 时使用下列启动参数:

-Djava.security.krb5.realm=Example.COR
P
-Djava.security.krb5.kdc=ADhostname
-Djava.security.auth.login.config=krb5Login.conf
-Djavax.security.auth.useSubjectCredsOnly=false
-Dweblogic.security.enableNegotiate=true

其中

  • java.security.krb5.realm 定义运行 Active Directory 服务器的 Microsoft 域。
  • java.security.krb5.kdc 定义运行 Active Directory 服务器的主机名。
  • java.security.auth.login.config 定义 Kerberos 登录信息的位置。
  • javax.security.auth.useSubjectCredsOnly 指定可以使用主题凭据之外的身份验证机制。
  • weblogic.security.enableNegotiate 可使 WebLogic Server 中的 Servlet 容器支持 SPNEGO 使用的协商标记。

 

原文出处(点击此处)

你可能感兴趣的:(windows,weblogic,server,Microsoft,SSO,internet)