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

本文档详述了如何使用SPNEGO(Simple and Protected GSS-API Negotiation Mechanism)集成Microsoft Windows身份验证,以实现在混合云环境中的安全单点登录(SSO)解决方案。内容涵盖配置Active Directory域控制器、设置IdentityServer、配置Windows客户端以及测试解决方案的过程。通过这些步骤,用户可以使用Windows域凭据无密码登录到Web应用程序,同时与现有的Microsoft Active Directory基础设施进行安全交互。
摘要由CSDN通过智能技术生成

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身份验证的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域服务 ,然后单击下一步
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值