AI智能
改变未来

spnego_通过使用SPNEGO集成Microsoft Windows身份验证

spnego

关于本系列
这个由三部分组成的系列文章“使用带有WebSphere Liberty的SAML 2.0进行跨域单点登录”介绍了在混合云环境中使用IBM®Cloud的端到端单点登录(SSO)解决方案。 它说明了如何使用WebSphere®Liberty使云上的Java™EE标准应用程序能够安全地调用私有网络中公开的服务。 在此解决方案中,您将了解如何配置IBM WebSphere Liberty的标准功能(不进行任何自定义)以启用Java EE安全性并在不同的域上传播经过身份验证的主题。

当将运行Microsoft®Windows®的计算机连接到域,并且用户使用其域凭据登录到计算机时,Windows操作系统将与域控制器联系以对用户进行身份验证。 在许多组织中,用户具有运行连接到域控制器的Windows操作系统的计算机,并且他们具有要登录到其计算机的域用户名和密码,这种情况在许多组织中很常见。 如果用户经常需要连接到在公司内部网中运行的Web应用程序,则需要提供相同的域用户名和密码。

本教程系列的第3部分将展示如何扩展第1 部分和第2 部分中介绍的SSO解决方案,以使用现有的Microsoft Active Directory基础结构进行身份验证和授权。 您将看到如何以安全的方式访问云应用程序,而不会挑战用户的凭据。

要完成本部分中的解决方案,您必须已经阅读并完成了第1 部分和第2 部分中的步骤。 另外,您必须确保网络上安装了Windows Server操作系统。

解决方案概述

假设您登录到运行Windows并连接到Microsoft域的计算机。 当您在操作系统登录表单中输入域,用户名和密码时,将向Microsoft Active Directory发出请求以对您的凭据进行身份验证。 浏览器从这台计算机连接到在IBM WebSphere Liberty应用程序服务器上运行的Web应用程序。

当您请求受基于角色的授权(Java身份验证和授权服务)安全性保护的资源时,如果尚未进行身份验证,浏览器会提示您提供用户名和密码。 您必须登录,因为应用程序服务器检测到您未通过身份验证,并将WWW-Authenticate:Basic标头添加到HTTP响应中。 浏览器将截取该标头,并显示登录表单。 您输入您的凭据。 然后,应用程序服务器根据其用户注册表对其进行检查,建立安全上下文,并执行基于角色的授权,以查看是否允许您访问所需的资源。

现在,假设应用程序服务器配置有轻型目录访问协议(LDAP)用户注册表,该注册表指向登录您的计算机时已通过身份验证的Microsoft Active Directory。 在这种情况下,您可以使用域凭据也登录到Web应用程序。

您还可以配置承载应用程序的应用程序服务器和浏览器,以与计算机的操作系统API协商身份验证,而不会提示您登录。特别是,您可以在服务器上配置简单和受保护的GSS-API协商机制 (SPNEGO)功能。托管Web应用程序的WebSphere Liberty应用程序服务器。

通过启用此功能,当您将浏览器连接到Web应用程序并请求受保护的资源时(如果未通过身份验证),服务器会将WWW-Authenticate:Negotiate标头添加到HTTP响应中。 如果您的浏览器配置为授权资源所属域的协商,则它将拦截标头并调用Windows API从Microsoft Active Directory获取Kerberos票证(SPNEGO令牌)。 SPNEGO令牌从浏览器发送回应用服务器。 SPNEGO功能会验证令牌,并使用它从LDAP(Microsoft Active Directory)用户注册表中检索用户名和组。 然后,应用程序服务器使用用户名和组来创建经过身份验证的主题,并对您请求的资源执行基于角色的授权检查。

要探索SPNEGO认证过程的详细信息,请参阅IBM知识中心中的使用SPNEGO Web认证的HTTP请求的单点登录 。

SPNEGO身份验证可以与服务提供商发起的SSO流程共存,这在第1部分中已经说明,因为它们具有独立的任务。 在本部分的解决方案中,仅在服务提供者将用户重定向到身份提供者(IdP)以执行身份验证并完成其任务之前,身份提供者生成SAML令牌之后,才进行SPNEGO身份验证。 下图说明了刚刚描述的SSO序列。

在本教程中,您将在Windows Server上启用Microsoft Active Directory域服务 (AD DS)角色。 然后,您创建一个Microsoft域网络。 (在此示例中,我们使用

samlsso.sample.net

。)AD DS在Windows 2000 Server,Windows Server 2003,Windows Server 2008和Windows Server 2012上受支持。它不适用于其他Microsoft操作系统。 在本教程中,我们使用Windows Server 2008 R2。

您在AD DS中创建所需的用户和组以及服务主体名称(SPN) 。 IdentityServer使用SPN对AD DS执行Kerberos身份验证。 您配置IdentityServer。 您将第1部分中的基本用户注册表替换为指向AD DS的LDAP用户注册表,然后安装并配置SPNEGO功能。

最后,使用操作系统凭据(Microsoft域凭据)在第1 部分和第2 部分中创建的应用程序之间执行单点登录(SSO)。 您设置Windows计算机以连接到Microsoft域,并配置计算机的浏览器以协商Kerberos票证。

下图说明了在此部分中配置的解决方案体系结构。 域网络(在左下角的红色框中)和用于实现SSO的通信协议包括:

  • 所有Web应用程序之间的HTTPS
  • IdentityServer和AD DS之间的LDAP
  • KRB5,Kerberos协议,用户计算机的Windows操作系统使用该协议来获取Kerberos票证

IdentityServer是我们解决方案中唯一拥有用户注册表的服务器,这意味着:

  • 您无需更改在第1 部分和第2 部分中完成的SSO解决方案设置。
  • 您无需将AD DS暴露给云,因为它仅需要与IdentityServer(和用户的计算机)进行通信。

配置Microsoft Active Directory域控制器

要配置Active Directory域服务,首先,如果尚未安装AD DS角色,请在Microsoft Windows Server上安装它。 然后,您创建Microsoft域网络。 接下来,您配置所需的用户和组以运行示例以及SPNEGO身份验证所需的SPN。

安装Active Directory域服务

在开始之前,请使用管理员帐户登录到Microsoft Windows Server。 然后,要安装Active Directory域服务:

  1. 在Windows桌面上,选择开始->运行 。
  2. 在打开的窗口中,键入
    ServerManager.msc

    。

  3. 在“ 服务器管理器”窗口中,右键单击“ 角色”,然后选择“ 添加角色” 。
  4. 在“ 开始之前”选项卡上,单击“ 下一步” 。
  5. 在服务器角色选项卡上,选择Active Directory域服务 ,然后单击下一步 。

  6. 在“ Active Directory域服务和确认”选项卡上,单击“ 下一步” 。

    此时,安装开始。 您可以在向导的“ 进度”选项卡上对其进行监视。 安装完成后,将显示“ 结果”页面,您可以在其中看到所有功能均已成功安装。 在此示例中,仅安装了AD DS,但如果未找到其他依赖项(例如.NET Framework功能),则可能会看到它们已安装。

  7. 在“ 结果”页面上,单击“ 关闭”以返回到“ 服务器管理器”窗口。

创建域

为Microsoft Windows网络创建域:

  1. 在ServerManager窗口中,展开角色 ,然后单击Active Directory域服务 。
  2. 在“ 摘要”下 ,单击“运行Active Directory域服务安装向导(dcpromo.exe)” 。
  3. 在“ Active Directory域服务安装向导”的第一个窗口中,单击“ 下一步” 。
  4. 在有关提高安全性的警告消息窗口中,单击下一步 。
  5. 在下一个窗口中,选择在新林中创建新域,然后单击下一步 。
  6. 在“ 命名林根域的名称”窗口中,输入您的域。 您必须以小写形式输入域名。 在此示例中,我们使用
    samlsso.sample.net

    。 单击下一步 。

  7. 在“ 设置林功能级别”窗口中,选择功能级别。 我们选择与最新版本相对应的级别,在本示例中为Windows Server 2008 R2 。 您可以看到不同的级别,具体取决于所运行的操作系统。 单击下一步 。
  8. 在下一个窗口中,选择DNS服务器 ,除非您打算使用现有的DNS服务器进行配置。 单击下一步 。
  9. 如果您的Window Server计算机已分配了动态IP,则会有一条消息通知您有关IP的信息。 然后,您可以选择是要使用DHCP服务器进行配置还是稍后分配静态IP。 我们在本教程中使用DHCP服务器 ,即使Microsoft不推荐使用DHCP服务器 ,本示例也可以使用它。 在生产环境中,可以使用静态IP进行设置。
  10. 在下一个窗口中,单击是 。
  11. 配置AD DS文件的位置。 在此示例中,我们接受默认位置。 单击下一步 。
  12. 在下一个窗口中,输入Restore Mode Administrator的密码。 您必须根据AD DS安全策略来编写它,该策略使用大写字母,小写字母和数字的组合。 我们在本教程中使用
    Passw0rd

    。 单击下一步 。

  13. 在最后一个窗口中,单击“ 完成” ,然后重新启动计算机。

如果要在Windows Server 2012上安装,则向导会稍有不同。 有关详细信息,请参阅安装新的Windows Server 2012 Active Directory林(级别200) 。

可选:更改密码策略

  1. 在Windows桌面上,单击开始->运行 。 键入
    gpmc.msc

    。

  2. 在组策略管理控制台中,展开组策略管理->森林:samlsso.sample.net->域-> samlsso.sample.net 。 右键单击默认域策略,然后选择编辑 。
  3. 在“ 组策略管理编辑器”窗口中,展开默认域策略->计算机配置->策略-> Windows设置->安全设置->帐户策略 。 点击密码策略 ,您可以在右窗格中查看设置。
  4. 要更改设置,请右键单击该策略,选择“ 属性” ,然后进行更改。 一段时间后,将加载策略。

创建组

填充Microsoft Active Directory中的用户和组。 首先,创建所需的组:

  • 身份请求者
  • FrontendServiceUsers
  • CloudServiceUsers
  • LocalServiceUsers

要创建组:

  1. 在Windows桌面上,选择开始 -> 运行。
  2. 在打开的窗口中,键入
    ServerManager.msc

    。

  3. 展开角色-> Active Directory域服务-> Active Directory用户和计算机 。
  4. 右键单击samlsso.sample.net,然后选择New- > Group 。
  5. 在“新建对象-组”窗口中: [ol]对于组名称 ,输入
    IdentityRequestors

    。

  6. 对于“ 组范围” ,选择“ 全局” 。
  7. 对于“ 组类型” ,选择“ 安全性” 。
  8. 单击确定 。

现在创建了IdentityRequestor组。

  • 重复步骤3-5,创建FrontendServiceUsers,CloudServiceUsers,LocalServiceUsers组。
  • [/ol]

    创建用户

    要创建所需的用户,首先,创建一个技术用户,稍后在IdentityServer Liberty配置文件中对其进行配置以连接到AD DS。 您不需要在以前设置的任何组中使用此用户,因为不需要访问该应用程序。 该用户将仅属于“域用户”组,这是新用户的默认组。

    要创建用户:

    1. 在Windows桌面上,单击开始 -> 运行 。
    2. 在尚未打开的窗口中,键入
      ServerManager.msc

      。

    3. 展开角色-> Active Directory域服务-> Active Directory用户和计算机 -> samlsso.sample.net 。
    4. 右键单击用户,然后选择新建->用户 。
    5. 在“新建对象-用户”窗口中,对于名字和用户登录名,输入
      wasuser

      。 单击下一步 。

    6. 设置新用户的密码。 我们使用
      Passw0rd

      作为容易记住的密码。 清除所有复选框选项,然后选择“ 密码永不过期” 。 单击下一步 。

    7. 点击完成 。

      现在创建了用户

      wasuser

      。

    8. 重复步骤3-7,以创建四个新用户: rob , max , bobby和alice 。
    9. 为这些用户设置适当的成员身份,以重现IdentityServer基本用户注册表中的配置。 单击用户 。 在“服务器管理器”窗口的中间窗格中,您将看到用户列表。
    10. 右键单击rob,然后选择属性 。
    11. 在“ 成员”选项卡上,单击“ 添加” 。
    12. 在“选择组”窗口中的“ 输入要选择的对象名称”框中,输入
      IdentityRequestors

      。 您也可以单击“ 高级”和“立即查找”以获取所有对象的完整列表。 单击确定 。

    13. 重复步骤10-13 ,为max , bobby和alice创建成员身份,如下所示:
        max→

        IdentityRequestors; FrontendServiceUsers
        IdentityRequestors; FrontendServiceUsers
      • 鲍比→
        IdentityRequestors; FrontendServiceUsers; CloudServiceUsers
        IdentityRequestors; FrontendServiceUsers; CloudServiceUsers
      • 爱丽丝→
        IdentityRequestors; FrontendServiceUsers; CloudServiceUsers; LocalServiceUsers
        IdentityRequestors; FrontendServiceUsers; CloudServiceUsers; LocalServiceUsers

      提示:我们列出了用分号分隔的组。 分号字符是搜索对象向导中的特殊条目分隔符,可用于将组复制并粘贴到“ 输入对象名称以选择”区域中。

    Active Directory已配置。 接下来,生成映射,以便WebSphere Liberty可以连接到AD DS。

    创建服务主体名称映射

    现在,您准备配置,以便IdentityProvider可以登录到AD DS。 您将

    wasuser

    映射到SPN。 用户PC使用服务主体名称(格式为

    HTTP/<IdP-full-hostname>

    )来请求Kerberos票证。 身份提供者还使用此名称登录AD DS并为用户检索组。 为此,您生成一个密钥文件,IdentityProvider使用该密钥文件登录到域(在示例中为

    samlsso.sample.net

    )。 如果使用过期密码创建了

    wasuser

    ,则每次更改

    wasuser

    的密码时,都必须重复此过程以重新生成密钥并将其导出到IdentityProvider计算机。

    要将用户映射到SPN并为运行IdentityProvider的计算机生成密钥,请使用带有

    -mapuser

    选项的

    ktpass

    命令:

    1. 登录到Windows服务器,打开命令提示符,然后键入:
      ktpass -out spnmap.keytab -princ HTTP/[email protected] -mapuser wasuser -pass Passw0rd -ptype KRB5_NT_PRINCIPAL

      在命令参数中,您会看到

      [email protected]

      ,这是运行IdentityProvider的计算机的完整主机名。 您必须使用此命令中写的小写和大写字母。 如果您没有遵循正确的大小写,那么来自WebSphere Liberty的认证将失败。

      运行

      ktpass

      命令后,在

      wasuser

      属性窗口的“ 帐户”选项卡上查看“ 用户登录名”字段时,您会看到它从

      wasuser

      更改为

      HTTP/win7pro.samlsso.sample.net

      ,即SPN。

    2. 检查正确的SPN配置:
      setspn -l wasuser

      在输出中,您将看到SPN映射到

      wasuser

      可分辨名称:

      Registered ServicePrincipalNames for CN=wasuser,CN=Users,DC=samlsso,DC=sample,DC=net:HTTP/win7pro.samlsso.sample.net
    3. 将
      spnmap.keytab

      文件复制到安装IdentityServer的计算机中,路径为

      <WLP_SERVERS>\\IdentityServer\\resources\\security\\spnego\\

      。 您创建spnego文件夹,因为它不存在。

      <WLP_SERVERS>

      是WebSphere Liberty安装的服务器文件夹,在第1部分中创建了IdentityServer概要文件。 在此示例中,身份提供者计算机的主机名是

      win7pro.samlsso.sample.net

      。

    配置身份提供者(IdentityServer)

    下载项目和代码示例!
    本教程包括在逐步执行过程中可以使用和引用的项目和代码示例。 您可以从GitHub或此压缩文件下载它们。

    IdentityServer所需的项目可在GitHub上找到 。 您可以从此压缩文件下载完整的集合, 然后将其解压缩到安装Eclipse工作区的机器的本地文件系统中。

    我们通过使用以下占位符来引用本地文件系统路径:

    • WebSphere Liberty主目录路径的
      <WLP_HOME>

      (例如:

      C:\\programs\\wlp-16.0.0.3

      )

    • <WLP_BIN>

      用于WebSphere Liberty bin路径(例如:

      C:\\programs\\wlp-16.0.0.3\\bin

      )

    • <WLP_SERVERS>

      用于WebSphere Liberty服务器的安装路径(例如:

      C:\\programs\\wlp-16.0.0.3\\usr\\servers

      )

    在开始本部分之前,请确保运行IdentityServer的计算机可以连接到在LDAP端口上运行AD DS的Windows Server计算机。 (在本教程中,我们使用默认值

    389

    )

    导入样本项目

    打开您在第1部分中创建的Eclipse工作区,并导入示例项目:

    1. 在工作空间中,选择文件->导入 。
    2. 在导入向导中,选择常规->现有项目到工作区中 ,然后单击下一步 。
    3. 在“导入项目”窗口中: [ol]对于“选择根目录”,单击“ 浏览” ,然后在本地文件系统中选择将项目解压缩到的路径。 单击确定 。
    4. 在选项下,选择将项目复制到工作区 。
    5. 点击完成 。

    [/ol]

    现在,您的工作区类似于以下示例。

    由于IdentityProvider功能是Web捆绑包,因此SPNEGO筛选器不起作用。 您刚刚导入的两个项目是一种变通方法,它允许SPNEGO身份验证和SAML生成以最小的努力共存于同一台服务器上。 请记住,身份提供者不是完全兼容的IdP实现。 如果你需要移动到生产,你可能想采取一个产品 ,它提供了IDP实施和支持。

    将样本项目部署到IdentityServer

    部署先前导入到服务器的项目:

    1. 选择“ 服务器”视图,右键单击“ Identity Server” ,然后选择“ 添加和删​​除” 。
    2. 在“添加和删除”窗口中,单击左侧的“可用”框中的IdentityProviderAuthenticator ,然后单击“ 添加”以将其移动到右侧的“已配置”框中。 然后,单击完成 。

    配置LDAP用户注册表

    您可以在IdentityServer

    server.xml

    文件中配置指向Windows Server AD DS的新用户注册表:

    1. 选择“ 服务器”视图,展开“ 身份 服务器” ,然后双击“ 服务器配置” 。
    2. 如果在“ 设计”选项卡上打开
      server.xml

      文件,请单击“ 源”选项卡以切换到XML视图。

    3. 将ldapRegistry-3.0功能添加到现有的
      <featureManager>

      元素中:

      <featureManager><feature>javaee-7.0</feature><feature>localConnector-1.0</feature><feature>identityProvider-1.0</feature><feature>ldapRegistry-3.0</feature></featureManager>
    4. 将基本注册表配置替换为ldapRegistry配置:
      <ldapRegistrybaseDN=\"DC=samlsso,DC=sample,DC=net\"bindDN=\"CN=wasuser,CN=users,DC=samlsso,DC=sample,DC=net\"bindPassword=\"Passw0rd\"host=\"Base-Win2k8x64.samlsso.sample.net\"ldapType=\"Microsoft Active Directory\"port=\"389\"></ldapRegistry>

      ldapRegistry

      配置元素具有以下属性:

        baseDN

        是LDAP格式的域。 DN(专有名称)用于baseDN和bindDN,因为我们使用的是LDAP用户注册表。

      • bindDN

        和

        bindPassword

        是您在配置用户时在AD DS中创建的技术用户。 Liberty服务器使用此用户连接到AD DS。

      • host

        是安装AD DS的Windows Server(在此示例中为

        Base-Win2k8x64.samlsso.sample.net

        )。

      • port

        是默认的LDAP端口389,AD DS正在其上侦听LDAP请求。

    5. 更改
      identityProvider

      配置元素:

      <identityProviderissuer=\"samlsso.sample.net\"keyAlias=\"idpkey\"keyStoreRef=\"saml\"hostname=\"win7pro.samlsso.sample.net\"port=\"443\"webContextPath=\"idpweb\"></identityProvider>

      identityProvider

      配置具有以下属性:

        hostname

        被改变以反映将要用作SPN由Windows客户机以请求的Kerberos票证到AD DS的身份提供者的主机名。

      • webContextPath

        是新的Web上下文,用于SP发起的SSO请求SAML令牌。 您需要此解决方法,因为身份提供程序未调用SPNEGO筛选器,因为它打包为Web捆绑包。

    安装和配置SPNEGO Liberty功能

    要安装

    spnego-1.0

    Liberty功能,请在创建IdentityServer的计算机上打开命令提示符:

    1. 打开命令提示符,然后输入
      cd <WLP_BIN>

      。

    2. 对
      spnego-1.0

      运行以下命令,以下载并安装启用SPNEGO Web身份验证所需的功能:

      installUtility install spnego-1.0

      成功完成下载和安装后,您会看到以下消息:

      All assets were successfully installed. 
      Start product validation...
      Product validation completed successfully.

    3. 重新启动Eclipse工作区以重新加载可用服务器功能的列表。
    4. 创建包含所需信息的文件,以便SPNEGO功能可以协商和管理Kerberos票证: [ol]在
      <WLP_SERVERS>\\IdentityServer\\resources\\security\\spnego\\

      文件夹中创建一个名为

      krb5.ini

      的新文件,您之前已在其中复制了

      spnmap.keytab

      文件。

    5. 将以下代码段复制到您刚创建的
      krb5.ini

      文件中:

      [libdefaults]default_realm = SAMLSSO.SAMPLE.NETdefault_tkt_enctypes = rc4-hmacdefault_tgs_enctypes = rc4-hmackdc_default_options = 0x54800000[realms]SAMLSSO.SAMPLE.NET = {kdc = Base-Win2k8x64.samlsso.sample.net:88default_domain = samlsso.sample.net}[domain_realm].samlsso.sample.net = SAMLSSO.SAMPLE.NET

      请注意以下几点:

        domain

        。 如果您拥有其他域,

        samlsso.sample.net

        用您的域替换

        samlsso.sample.net

        并使用大写字母。

      • kdc

        参数。 在此参数中,输入运行AD DS的Windows Server的主机名。

  • 选择“ 服务器”视图,展开IdentityServer ,然后双击“ 服务器配置” 。
  • 将
    spnego-1.0

    功能添加到现有的

    <featureManager>

    元素中:

    <featureManager><feature>javaee-7.0</feature><feature>localConnector-1.0</feature><feature>identityProvider-1.0</feature><feature>ldapRegistry-3.0</feature><feature>spnego-1.0</feature></featureManager>
  • 将以下代码段添加到
    server.xml

    文件:

    <spnego canonicalHostName=\"false\" disableFailOverToAppAuthType=\"false\"includeClientGSSCredentialInSubject=\"false\"krb5Config=\"${server.config.dir}/resources/security/spnego/krb5.ini\"krb5Keytab=\"${server.config.dir}/resources/security/spnego/spnmap.keytab\"servicePrincipalNames=\"HTTP/win7pro.samlsso.sample.net\"trimKerberosRealmNameFromPrincipal=\"true\"></spnego>

    krb5Config

    和

    krb5Keytab

    参数指向保存所需SPNEGO文件的文件系统。

  • 右键单击IdentityServer,然后选择“ 启动” (如果服务器已经在运行,则选择“ 重新启动 ”)。
  • [/ol]

    刷新FrontendServer上的idp-metadata.xml文件

    因为您需要使用身份提供者的完整主机名来激活SPNEGO协商,所以必须更改FrontendServer上的

    idp-metadata.xml

    文件并将服务器配置重新发布到IBM Cloud:

    1. 启动IdentityServer 。
    2. 在运行IdentityServer的计算机的浏览器中,打开
      http://localhost/idp/SAMLResource

      链接。

    3. 单击IdpMetadata.xml按钮以下载
      idp-metadata.xml

      文件。 将文件保存在

      <WLP_SERVERS>\\FrontendServer\\resources\\security\\

      目录中。

    4. 在Eclipse工作区中,右键单击WebSphere Application Server Liberty项目,然后选择Refresh 。
    5. 右键单击FrontentServer ,然后单击发布 。 如果FrontentServer正在运行,请右键单击它,然后选择Stop 。
    6. 右键单击IBM Cloud ,然后选择发布 。

    现在,您已完成LDAP和SPNEGO配置。 下一步是登录到运行Windows客户端的计算机。 (在本教程中,我们使用Microsoft Windows7。)您使用先前在AD DS中配置的用户(bob,rob,max或alice)之一进行最终的浏览器配置,并测试完整的SSO方案。

    配置Windows客户端并测试解决方案

    您应该有一台运行Windows客户端操作系统(例如Windows 7)并连接到您的Microsoft域(本教程中为

    samlsso.sample.net

    )的计算机。 如果没有运行,则可以按照以下步骤中的说明进行配置。

    开始之前,请从这台机器上:

    • 您必须能够在https端口(本教程中为
      443

      )上使用其完整主机名(本教程中为

      win7pro.samlsso.sample.net

      )连接到IdentityProvider计算机。

    • 您必须能够连接到AD DS计算机。 您可以在端口88(这是AD DS监听票务服务请求的端口)上尝试使用telnet。

    如果您已经有一台连接到现有AD DS的计算机,请转到步骤3b继续浏览器配置。

    将计算机连接到AD DS域

    1. 使用管理员帐户登录到Microsoft Windows客户端计算机。
    2. 在Windows桌面上,单击“ 开始” ,右键单击“ 计算机” ,然后选择“ 属性” 。
    3. 在“属性”窗口中,单击“ 高级系统设置” 。
    4. 在“系统属性”窗口中,选择“ 计算机名称”选项卡,然后单击“ 更改” 。
    5. 在“计算机名称/域更改”窗口中,选择“ 域” ,然后以小写形式输入在AD DS中配置的域名(在此示例中为
      samlsso.sample.net

      )。 单击确定 。

    6. 输入AD DS计算机的管理员用户名和密码,然后单击确定 。
    7. 如果凭据有效,则会打开一个窗口,显示以下消息:
      Welcome to the <domain-you-configured> domain

      。 单击确定 。

    8. 重新启动机器。
    9. 成功重新启动计算机之后,使用先前在AD DS中配置的用户之一(例如,带有
      Passw0rd
      alice
      Passw0rd

      。

      在Windows登录表单下方,您会看到旧Windows格式的AD DS域(本教程中为

      SAMLSSO

      )。

    配置浏览器

    要与身份提供者协商Kerberos票证,必须首先配置Web浏览器。 您可以按照以下各节中的说明设置Firefox或Internet Explorer,以测试解决方案。

    设置Firefox

    1. 打开Firefox Web浏览器。
    2. 在地址字段中,输入
      about:config

      。

    3. 在搜索字段中,输入
      network.nego

      。 (Firefox在键入时过滤属性列表。)

    4. 右键单击network.negotiation-auth.delegation.uris ,然后选择Modify 。 在输入字段中,输入您的域(本教程中为
      samlsso.sample.net

      )。

    5. 右键单击network.negotiation-auth.trusted.uris ,然后选择Modify 。 在输入字段中,输入您的域(本教程中为
      samlsso.sample.net

      )。

    设定Internet Explorer

    1. 打开您的Internet Explorer Web浏览器。
    2. 在菜单栏中,选择工具-> Internet选项 。
    3. 在“ Internet选项”窗口的“ 安全性”选项卡上,选择“ 本地Intranet” ,然后单击“ 站点” 。
    4. 在下一个面板中,点击高级 。
    5. 在“本地Intranet”面板中的“将此网站添加到区域中”字段中,输入
      *.samlsso.sample.net

      。 如果您有其他域,请选择以

      *.

      为前缀的域

      *.

      。 点击添加 。

      单击关闭 。

    6. 在“ Internet选项”面板上,单击“ 确定” 。

    测试解决方案

    从Windows客户端,打开您配置的浏览器,然后转到:

    https://FrontendServices.mybluemix.net/FrontendWeb

    :

    https://FrontendServices.mybluemix.net/FrontendWeb

    将域

    FrontendService.mybluemix.net

    替换为您在本系列的第2部分中创建的域。

    查看网络跟踪,以查看由SP启动的SSO的作用。 如果使用的是Firefox,请按F12键,或者从“ 选项”菜单中选择“ 开发人员”以启用工具栏。

    该序列与第1部分中的序列相似。 您有两个向身份提供者的请求(

    win7pro.samlsso.sample.net

    )。 区别在于,由于来自服务器的第一个响应包含WWW-Authenticate:Negotiate标头,因此浏览器向AD DS调用服务请求以获取票证。

    如果您在Windows客户端计算机或AD DS计算机的网络接口上跟踪请求,则可以在客户端Microsoft Windows和AD DS之间看到该请求。

    在下图中,您将看到TGS-REQ ,它是客户端(

    192.168.1.101

    )向AD DS(

    192.168.1.198

    )请求以获得Kerberos票证的请求。 服务器名称是在AD DS中配置的服务主体名称:

    HTTP/win7pro.samlsso.sample.net

    。

    在下图中,您可以看到TGS-REP ,它是AD DS发送回客户端的响应,其中包含Kerberos票证。

    浏览器收到Kerberos票证后,它将票证发送到请求的Authorization标头中的身份提供者,如下图所示。

    结论

    在本教程中,您实现了完整且安全的SSO架构,并已部署到IBM Cloud。 您将SSO解决方案与Microsoft Active Directory集成在一起。 您配置了SPNEGO Web身份验证,以便用户不必提供其凭据。

    通过完成本教程系列,您现在可以跨多个域基于SAML断言设计和实现SSO解决方案。 如果您正在使用LDAP用户注册表,则可以将其与现有的安全性基础架构集成。 您甚至可以根据需要将应用程序部署在混合云中。

    翻译自: https://www.ibm.com/developerworks/library/mw-1703-maurip3/index.html

    spnego

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » spnego_通过使用SPNEGO集成Microsoft Windows身份验证