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

spnego

当将运行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序列。

spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第1张图片

在本教程中,您将在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票证
spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第2张图片

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域服务 ,然后单击下一步
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第3张图片
  6. 在“ Active Directory域服务确认”选项卡上,单击“ 下一步”

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

  7. 在“ 结果”页面上,单击“ 关闭”以返回到“ 服务器管理器”窗口。
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第4张图片

创建域

为Microsoft Windows网络创建域:

  1. 在ServerManager窗口中,展开角色 ,然后单击Active Directory域服务
  2. 在“ 摘要”下 ,单击“运行Active Directory域服务安装向导(dcpromo.exe)”
  3. 在“ Active Directory域服务安装向导”的第一个窗口中,单击“ 下一步”
  4. 在有关提高安全性的警告消息窗口中,单击下一步
  5. 在下一个窗口中,选择在新林中创建新域,然后单击下一步
  6. 在“ 命名林根域名称”窗口中,输入您的域。 您必须以小写形式输入域名。 在此示例中,我们使用samlsso.sample.net 单击下一步
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第5张图片
  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. 要更改设置,请右键单击该策略,选择“ 属性” ,然后进行更改。 一段时间后,将加载策略。
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第6张图片

创建组

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

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

要创建组:

  1. 在Windows桌面上,选择开始 -> 运行。
  2. 在打开的窗口中,键入ServerManager.msc
  3. 展开角色-> Active Directory域服务-> Active Directory用户和计算机
  4. 右键单击samlsso.sample.net,然后选择New- > Group
  5. 在“新建对象-组”窗口中:
    1. 对于组名称 ,输入IdentityRequestors
    2. 对于“ 组范围” ,选择“ 全局”
    3. 对于“ 组类型” ,选择“ 安全性”
    4. 单击确定
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第7张图片

    现在创建了IdentityRequestor组。

  6. 重复步骤3-5,创建FrontendServiceUsers,CloudServiceUsers,LocalServiceUsers组。

创建用户

要创建所需的用户,首先,创建一个技术用户,稍后在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,以创建四个新用户: robmaxbobbyalice
  9. 为这些用户设置适当的成员身份,以重现IdentityServer基本用户注册表中的配置。 单击用户 在“服务器管理器”窗口的中间窗格中,您将看到用户列表。
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第8张图片
  10. 右键单击rob,然后选择属性
  11. 在“ 成员”选项卡上,单击“ 添加”
  12. 在“选择组”窗口中的“ 输入要选择的对象名称”框中,输入IdentityRequestors 您也可以单击“ 高级”“立即查找”以获取所有对象的完整列表。 单击确定
  13. 重复步骤10-13 ,为maxbobbyalice创建成员身份,如下所示:
    • max→ IdentityRequestors; FrontendServiceUsers IdentityRequestors; FrontendServiceUsers
    • 鲍比→ IdentityRequestors; FrontendServiceUsers; CloudServiceUsers IdentityRequestors; FrontendServiceUsers; CloudServiceUsers
    • 爱丽丝→ IdentityRequestors; FrontendServiceUsers; CloudServiceUsers; LocalServiceUsers IdentityRequestors; FrontendServiceUsers; CloudServiceUsers; LocalServiceUsers

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

    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第9张图片

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

创建服务主体名称映射

现在,您准备配置,以便IdentityProvider可以登录到AD DS。 您将wasuser映射到SPN。 用户PC使用服务主体名称(格式为HTTP/ )来请求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。

    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第10张图片
  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的计算机中,路径为\IdentityServer\resources\security\spnego\ 您创建spnego文件夹,因为它不存在。

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

配置身份提供者(IdentityServer)

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

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

  • WebSphere Liberty主目录路径的 (例如: C:\programs\wlp-16.0.0.3
  • 用于WebSphere Liberty bin路径(例如: C:\programs\wlp-16.0.0.3\bin
  • 用于WebSphere Liberty服务器的安装路径(例如: C:\programs\wlp-16.0.0.3\usr\servers

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

导入样本项目

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

  1. 在工作空间中,选择文件->导入
  2. 在导入向导中,选择常规->现有项目到工作区中 ,然后单击下一步
  3. 在“导入项目”窗口中:
    1. 对于“选择根目录”,单击“ 浏览” ,然后在本地文件系统中选择将项目解压缩到的路径。 单击确定
    2. 在选项下,选择将项目复制到工作区
    3. 点击完成
      spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第11张图片

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

spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第12张图片

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

将样本项目部署到IdentityServer

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

  1. 选择“ 服务器”视图,右键单击“ Identity Server” ,然后选择“ 添加和删​​除”
  2. 在“添加和删除”窗口中,单击左侧的“可用”框中的IdentityProviderAuthenticator ,然后单击“ 添加”以将其移动到右侧的“已配置”框中。 然后,单击完成
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第13张图片

配置LDAP用户注册表

您可以在IdentityServer server.xml文件中配置指向Windows Server AD DS的新用户注册表:

  1. 选择“ 服务器”视图,展开“ 身份 服务器” ,然后双击“ 服务器配置”
  2. 如果在“ 设计”选项卡上打开server.xml文件,请单击“ 源”选项卡以切换到XML视图。
  3. ldapRegistry-3.0功能添加到现有的元素中:
      
          javaee-7.0  
          localConnector-1.0  
          identityProvider-1.0  
          ldapRegistry-3.0  
      
  4. 将基本注册表配置替换为ldapRegistry配置:
      
      

    ldapRegistry配置元素具有以下属性:

    • baseDN是LDAP格式的域。 DN(专有名称)用于baseDN和bindDN,因为我们使用的是LDAP用户注册表。
    • bindDNbindPassword是您在配置用户时在AD DS中创建的技术用户。 Liberty服务器使用此用户连接到AD DS。
    • host是安装AD DS的Windows Server(在此示例中为Base-Win2k8x64.samlsso.sample.net )。
    • port是默认的LDAP端口389,AD DS正在其上侦听LDAP请求。
  5. 更改identityProvider配置元素:
      
      

    identityProvider配置具有以下属性:

    • hostname被改变以反映将要用作SPN由Windows客户机以请求的Kerberos票证到AD DS的身份提供者的主机名。
    • webContextPath是新的Web上下文,用于SP发起的SSO请求SAML令牌。 您需要此解决方法,因为身份提供程序未调用SPNEGO筛选器,因为它打包为Web捆绑包。

安装和配置SPNEGO Liberty功能

要安装spnego-1.0 Liberty功能,请在创建IdentityServer的计算机上打开命令提示符:

  1. 打开命令提示符,然后输入cd
  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票证:
    1. \IdentityServer\resources\security\spnego\文件夹中创建一个名为krb5.ini的新文件,您之前已在其中复制了spnmap.keytab文件。
    2. 将以下代码段复制到您刚创建的krb5.ini文件中:
      [libdefaults] 
       	    default_realm = SAMLSSO.SAMPLE.NET 
       	    default_tkt_enctypes = rc4-hmac 
       	    default_tgs_enctypes = rc4-hmac 
       	    kdc_default_options = 0x54800000 
       [realms] 
       	     SAMLSSO.SAMPLE.NET = { 
       		    kdc = Base-Win2k8x64.samlsso.sample.net:88 
       		    default_domain = samlsso.sample.net 
       	     } 
       [domain_realm] 
       	    .samlsso.sample.net = SAMLSSO.SAMPLE.NET

      请注意以下几点:

      • domain 如果您拥有其他域, samlsso.sample.net用您的域替换samlsso.sample.net并使用大写字母。
      • kdc参数。 在此参数中,输入运行AD DS的Windows Server的主机名。
  5. 选择“ 服务器”视图,展开IdentityServer ,然后双击“ 服务器配置”
  6. spnego-1.0功能添加到现有的元素中:
      
          javaee-7.0  
          localConnector-1.0  
          identityProvider-1.0  
          ldapRegistry-3.0  
          spnego-1.0  
      
  7. 将以下代码段添加到server.xml文件:
      
      

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

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

刷新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文件。 将文件保存在\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 )。 单击确定
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第14张图片
  6. 输入AD DS计算机的管理员用户名和密码,然后单击确定
  7. 如果凭据有效,则会打开一个窗口,显示以下消息: Welcome to the 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 )。
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第15张图片

设定Internet Explorer

  1. 打开您的Internet Explorer Web浏览器。
  2. 在菜单栏中,选择工具-> Internet选项
  3. 在“ Internet选项”窗口的“ 安全性”选项卡上,选择“ 本地Intranet” ,然后单击“ 站点”
  4. 在下一个面板中,点击高级
  5. 在“本地Intranet”面板中的“将此网站添加到区域中”字段中,输入*.samlsso.sample.net 如果您有其他域,请选择以*.为前缀的域*. 点击添加
    spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第16张图片

    单击关闭

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

测试解决方案

从Windows客户端,打开您配置的浏览器,然后转到: https://FrontendServices.mybluemix.net/FrontendWeb : https://FrontendServices.mybluemix.net/FrontendWeb

将域FrontendService.mybluemix.net替换为您在本系列的第2部分中创建的域。

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

spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第17张图片

该序列与第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

spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第18张图片

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

spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第19张图片

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

spnego_通过使用SPNEGO集成Microsoft Windows身份验证_第20张图片

结论

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

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

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

spnego

你可能感兴趣的:(java,linux,jwt,数据库,大数据)