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域服务:
- 在Windows桌面上,选择开始->运行 。
- 在打开的窗口中,键入
ServerManager.msc
。
- 在“ 服务器管理器”窗口中,右键单击“ 角色”,然后选择“ 添加角色” 。
- 在“ 开始之前”选项卡上,单击“ 下一步” 。
- 在服务器角色选项卡上,选择Active Directory域服务 ,然后单击下一步 。
- 在“ Active Directory域服务和确认”选项卡上,单击“ 下一步” 。
此时,安装开始。 您可以在向导的“ 进度”选项卡上对其进行监视。 安装完成后,将显示“ 结果”页面,您可以在其中看到所有功能均已成功安装。 在此示例中,仅安装了AD DS,但如果未找到其他依赖项(例如.NET Framework功能),则可能会看到它们已安装。
- 在“ 结果”页面上,单击“ 关闭”以返回到“ 服务器管理器”窗口。
创建域
为Microsoft Windows网络创建域:
- 在ServerManager窗口中,展开角色 ,然后单击Active Directory域服务 。
- 在“ 摘要”下 ,单击“运行Active Directory域服务安装向导(dcpromo.exe)” 。
- 在“ Active Directory域服务安装向导”的第一个窗口中,单击“ 下一步” 。
- 在有关提高安全性的警告消息窗口中,单击下一步 。
- 在下一个窗口中,选择在新林中创建新域,然后单击下一步 。
- 在“ 命名林根域的名称”窗口中,输入您的域。 您必须以小写形式输入域名。 在此示例中,我们使用
samlsso.sample.net
。 单击下一步 。
- 在“ 设置林功能级别”窗口中,选择功能级别。 我们选择与最新版本相对应的级别,在本示例中为Windows Server 2008 R2 。 您可以看到不同的级别,具体取决于所运行的操作系统。 单击下一步 。
- 在下一个窗口中,选择DNS服务器 ,除非您打算使用现有的DNS服务器进行配置。 单击下一步 。
- 如果您的Window Server计算机已分配了动态IP,则会有一条消息通知您有关IP的信息。 然后,您可以选择是要使用DHCP服务器进行配置还是稍后分配静态IP。 我们在本教程中使用DHCP服务器 ,即使Microsoft不推荐使用DHCP服务器 ,本示例也可以使用它。 在生产环境中,可以使用静态IP进行设置。
- 在下一个窗口中,单击是 。
- 配置AD DS文件的位置。 在此示例中,我们接受默认位置。 单击下一步 。
- 在下一个窗口中,输入Restore Mode Administrator的密码。 您必须根据AD DS安全策略来编写它,该策略使用大写字母,小写字母和数字的组合。 我们在本教程中使用
Passw0rd
。 单击下一步 。
- 在最后一个窗口中,单击“ 完成” ,然后重新启动计算机。
如果要在Windows Server 2012上安装,则向导会稍有不同。 有关详细信息,请参阅安装新的Windows Server 2012 Active Directory林(级别200) 。
可选:更改密码策略
- 在Windows桌面上,单击开始->运行 。 键入
gpmc.msc
。
- 在组策略管理控制台中,展开组策略管理->森林:samlsso.sample.net->域-> samlsso.sample.net 。 右键单击默认域策略,然后选择编辑 。
- 在“ 组策略管理编辑器”窗口中,展开默认域策略->计算机配置->策略-> Windows设置->安全设置->帐户策略 。 点击密码策略 ,您可以在右窗格中查看设置。
- 要更改设置,请右键单击该策略,选择“ 属性” ,然后进行更改。 一段时间后,将加载策略。
创建组
填充Microsoft Active Directory中的用户和组。 首先,创建所需的组:
- 身份请求者
- FrontendServiceUsers
- CloudServiceUsers
- LocalServiceUsers
要创建组:
- 在Windows桌面上,选择开始 -> 运行。
- 在打开的窗口中,键入
ServerManager.msc
。
- 展开角色-> Active Directory域服务-> Active Directory用户和计算机 。
- 右键单击samlsso.sample.net,然后选择New- > Group 。
- 在“新建对象-组”窗口中: [ol]对于组名称 ,输入
IdentityRequestors
。
- 对于“ 组范围” ,选择“ 全局” 。
- 对于“ 组类型” ,选择“ 安全性” 。
- 单击确定 。
现在创建了IdentityRequestor组。
[/ol]
创建用户
要创建所需的用户,首先,创建一个技术用户,稍后在IdentityServer Liberty配置文件中对其进行配置以连接到AD DS。 您不需要在以前设置的任何组中使用此用户,因为不需要访问该应用程序。 该用户将仅属于“域用户”组,这是新用户的默认组。
要创建用户:
- 在Windows桌面上,单击开始 -> 运行 。
- 在尚未打开的窗口中,键入
ServerManager.msc
。
- 展开角色-> Active Directory域服务-> Active Directory用户和计算机 -> samlsso.sample.net 。
- 右键单击用户,然后选择新建->用户 。
- 在“新建对象-用户”窗口中,对于名字和用户登录名,输入
wasuser
。 单击下一步 。
- 设置新用户的密码。 我们使用
Passw0rd
作为容易记住的密码。 清除所有复选框选项,然后选择“ 密码永不过期” 。 单击下一步 。
- 点击完成 。
现在创建了用户
wasuser
。
- 重复步骤3-7,以创建四个新用户: rob , max , bobby和alice 。
- 为这些用户设置适当的成员身份,以重现IdentityServer基本用户注册表中的配置。 单击用户 。 在“服务器管理器”窗口的中间窗格中,您将看到用户列表。
- 右键单击rob,然后选择属性 。
- 在“ 成员”选项卡上,单击“ 添加” 。
- 在“选择组”窗口中的“ 输入要选择的对象名称”框中,输入
IdentityRequestors
。 您也可以单击“ 高级”和“立即查找”以获取所有对象的完整列表。 单击确定 。
- 重复步骤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
命令:
- 登录到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。
- 检查正确的SPN配置:
setspn -l wasuser
在输出中,您将看到SPN映射到
wasuser
可分辨名称:
Registered ServicePrincipalNames for CN=wasuser,CN=Users,DC=samlsso,DC=sample,DC=net:HTTP/win7pro.samlsso.sample.net
- 将
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工作区,并导入示例项目:
- 在工作空间中,选择文件->导入 。
- 在导入向导中,选择常规->现有项目到工作区中 ,然后单击下一步 。
- 在“导入项目”窗口中: [ol]对于“选择根目录”,单击“ 浏览” ,然后在本地文件系统中选择将项目解压缩到的路径。 单击确定 。
- 在选项下,选择将项目复制到工作区 。
- 点击完成 。
[/ol]
现在,您的工作区类似于以下示例。
由于IdentityProvider功能是Web捆绑包,因此SPNEGO筛选器不起作用。 您刚刚导入的两个项目是一种变通方法,它允许SPNEGO身份验证和SAML生成以最小的努力共存于同一台服务器上。 请记住,身份提供者不是完全兼容的IdP实现。 如果你需要移动到生产,你可能想采取一个产品 ,它提供了IDP实施和支持。
将样本项目部署到IdentityServer
部署先前导入到服务器的项目:
- 选择“ 服务器”视图,右键单击“ Identity Server” ,然后选择“ 添加和删除” 。
- 在“添加和删除”窗口中,单击左侧的“可用”框中的IdentityProviderAuthenticator ,然后单击“ 添加”以将其移动到右侧的“已配置”框中。 然后,单击完成 。
配置LDAP用户注册表
您可以在IdentityServer
server.xml
文件中配置指向Windows Server AD DS的新用户注册表:
- 选择“ 服务器”视图,展开“ 身份 服务器” ,然后双击“ 服务器配置” 。
- 如果在“ 设计”选项卡上打开
server.xml
文件,请单击“ 源”选项卡以切换到XML视图。
- 将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>
- 将基本注册表配置替换为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请求。
- 更改
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的计算机上打开命令提示符:
- 打开命令提示符,然后输入
cd <WLP_BIN>
。
- 对
spnego-1.0
运行以下命令,以下载并安装启用SPNEGO Web身份验证所需的功能:
installUtility install spnego-1.0
成功完成下载和安装后,您会看到以下消息:
All assets were successfully installed.
Start product validation...
Product validation completed successfully. - 重新启动Eclipse工作区以重新加载可用服务器功能的列表。
- 创建包含所需信息的文件,以便SPNEGO功能可以协商和管理Kerberos票证: [ol]在
<WLP_SERVERS>\\IdentityServer\\resources\\security\\spnego\\
文件夹中创建一个名为
krb5.ini
的新文件,您之前已在其中复制了
spnmap.keytab
文件。
- 将以下代码段复制到您刚创建的
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的主机名。
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文件的文件系统。
[/ol]
刷新FrontendServer上的idp-metadata.xml文件
因为您需要使用身份提供者的完整主机名来激活SPNEGO协商,所以必须更改FrontendServer上的
idp-metadata.xml
文件并将服务器配置重新发布到IBM Cloud:
- 启动IdentityServer 。
- 在运行IdentityServer的计算机的浏览器中,打开
http://localhost/idp/SAMLResource
链接。
- 单击IdpMetadata.xml按钮以下载
idp-metadata.xml
文件。 将文件保存在
<WLP_SERVERS>\\FrontendServer\\resources\\security\\
目录中。
- 在Eclipse工作区中,右键单击WebSphere Application Server Liberty项目,然后选择Refresh 。
- 右键单击FrontentServer ,然后单击发布 。 如果FrontentServer正在运行,请右键单击它,然后选择Stop 。
- 右键单击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域
- 使用管理员帐户登录到Microsoft Windows客户端计算机。
- 在Windows桌面上,单击“ 开始” ,右键单击“ 计算机” ,然后选择“ 属性” 。
- 在“属性”窗口中,单击“ 高级系统设置” 。
- 在“系统属性”窗口中,选择“ 计算机名称”选项卡,然后单击“ 更改” 。
- 在“计算机名称/域更改”窗口中,选择“ 域” ,然后以小写形式输入在AD DS中配置的域名(在此示例中为
samlsso.sample.net
)。 单击确定 。
- 输入AD DS计算机的管理员用户名和密码,然后单击确定 。
- 如果凭据有效,则会打开一个窗口,显示以下消息:
Welcome to the <domain-you-configured> domain
。 单击确定 。
- 重新启动机器。
- 成功重新启动计算机之后,使用先前在AD DS中配置的用户之一(例如,带有
Passw0rd
alice
Passw0rd
。
在Windows登录表单下方,您会看到旧Windows格式的AD DS域(本教程中为
SAMLSSO
)。
配置浏览器
要与身份提供者协商Kerberos票证,必须首先配置Web浏览器。 您可以按照以下各节中的说明设置Firefox或Internet Explorer,以测试解决方案。
设置Firefox
- 打开Firefox Web浏览器。
- 在地址字段中,输入
about:config
。
- 在搜索字段中,输入
network.nego
。 (Firefox在键入时过滤属性列表。)
- 右键单击network.negotiation-auth.delegation.uris ,然后选择Modify 。 在输入字段中,输入您的域(本教程中为
samlsso.sample.net
)。
- 右键单击network.negotiation-auth.trusted.uris ,然后选择Modify 。 在输入字段中,输入您的域(本教程中为
samlsso.sample.net
)。
设定Internet Explorer
- 打开您的Internet Explorer Web浏览器。
- 在菜单栏中,选择工具-> Internet选项 。
- 在“ Internet选项”窗口的“ 安全性”选项卡上,选择“ 本地Intranet” ,然后单击“ 站点” 。
- 在下一个面板中,点击高级 。
- 在“本地Intranet”面板中的“将此网站添加到区域中”字段中,输入
*.samlsso.sample.net
。 如果您有其他域,请选择以
*.
为前缀的域
*.
。 点击添加 。
单击关闭 。
- 在“ 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