将单点登录扩展到云

了解将单点登录从企业扩展到云的核心概念

单点登录 (SSO) 允许公司以一种一致的方式跨多个应用程序实施访问控制策略。在本文中,作者介绍了将 SSO 从企业扩展到云的核心概念。探讨了在您的数据中心中运行的传统应用程序与 SaaS 应用程序之间实现 SSO 的几种不同机制。本文中的主题包括 SAML、OAuth 和基于代理的传统 SSO,作者将重点介绍不同的软件即服务 (SaaS) 提供商如何提供不同程度的标准支持,以及 SSO 的复杂实现。

Kunal Mittal, IT 执行董事, Sony Pictures Entertainment

http://www.ibm.com/developerworks/i/p-kmittal.jpgKunal Mittal 担任 Sony Pictures Entertainment 技术部的执行董事,他负责 SOA、身份管理和内容管理项目。他为不同的业务线提供了一个集中化的工程技术服务,并领导了向 Sony Pictures Enterprise IT 环境引入新平台和技术的工作。Kunal 是有关 J2EE、云计算和移动技术的多部图书和多篇文章的作者和编辑。他拥有软件工程专业的硕士学位,是一位可以做仪器导航飞行的私人飞行员。



2013 年 3 月 04 日

单点登录 (SSO) 是大部分大型企业向其用户(员工、合作伙伴、客户和承包商)提供的一项重要服务。在 IT 安全制度越来越严格的时代里,SSO 技术的使用使得公司能够以一种一致的方式跨多个应用程序实施访问控制策略,这减少了实现的总体成本。这些策略可能包括密码长度、密码复杂度、密码使用时长、以前的密码的重用等。无论一个应用程序必须遵守哪些规则或策略,您都只需实现一次即可在以后重用。对于利用此 SSO 基础架构的系统,认证和审计也得到了简化。

除了 IT 合规性,还能避免重大的风险。您有多少次路过配电室 (cubicle isles),看到了写着密码的便笺?您个人为记住每个企业系统的数百个密码所选的方法是什么?在整个企业中拥有 SSO,使您的用户只需记住一个密码,这不仅减少了将密码粘贴在配电室墙上的风险,还减少了密码共享的风险。如果您的电子邮件、人力资源福利制度,以及其他系统都使用同一个密码,用户不可能与他(或她)的同事共享该密码。

在成本节省方面,事实证明 SSO 能够通过减少服务台呼叫数量获得直接的投资回报。更少的不同密码意味着某人因为忘记密码而呼叫服务台的次数更少。多篇 Internet 文章与 Gartner 和 Forrester Research 等公司的报告称呼叫量可以减少 40% 到 70%。

SSO 的组件

我们首先看看支持 SSO 所需的一些基本的技术组件:

  • 用户。一个尝试登录的用户
  • Web 应用程序。用户尝试登录到的一个应用程序

    对于本文,将该应用程序想作任何 Java™、Microsoft® .NET、PHP Web 应用程序或软件即服务 (SaaS) 应用程序,比如 SalesForce.com、Google Apps、Microsoft Office 365、Concur、ServiceNow 或 Workday。

  • Web 应用程序代理。对于在企业数据中心内运行的非 SaaS 应用程序,通常安装在托管该应用程序的 Web 或应用服务器之上。
  • 策略服务器/SSO 服务器。提供实现 SSO 所需的所有功能和特性的软件部分
  • 目录。存储用户名、密码和用户的其他属性的基础存储库

    在大部分组织中,您会看到 Active Directory® Domain Services 或其他一些实现轻量级目录访问协议 (LDAP) 的目录软件。尽管不是最佳实践,但您也可使用关系数据库表。

图 1 显示了这些组件的实际应用。

图 1. SSO 的高级组件
该图显示了 SSO 的高级组件

本文重点介绍用于基于 Web 的应用程序的 SSO(而不是桌面 SSO 或企业 SSO)。在基本层面上,基于 Web 的 SSO 原则遵循 图 1 中所示的架构。让我们通过一个示例,更具体地分析以下该图。

SSO 需要的两个重要组件:策略/SSO 服务器和 Web 应用程序代理。策略服务器/SSO 服务器常常称为身份决策点 (IDP)。IDP “决定” 用户凭据(用户名/密码)是否正确以及用户是否可以登录。每个大型企业软件供应商可能都提供了这一领域的部分技术或产品。这一领域的顶级解决方案包括 IBM® Security Access Manager for Enterprise Single Sign-On、CA SiteMinder 和 Oracle Access Management。此外,许多开源和 SaaS 产品正在市场中兴起,它们正成为上述产品(OpenAM、Okta、DirectAxs 和 Ping Identity)的重要竞争对手。

上面提及的每个产品都随带了自己的代理,这些代理必须安装在您尝试保护和为其启用 SSO 的应用程序的 Web 服务器和应用服务器上。一般而言,您将拥有大部分主要操作系统、Web 服务器软件和应用服务器软件的代理。代理的作用是拦截对一个应用程序的登录请求,然后将该请求传递给 SSO 服务器以制定决策。因此,此组件常常称为身份执行点


将 SSO 扩展到云

随着公司采用越来越多的基于 SaaS 的应用程序,他们希望将自身的 SSO 功能扩展到这些应用程序中。这意味着一个用户可使用其每天早上用于企业应用程序、电子邮件,甚至桌面的相同凭据登录到一个 SaaS 应用程序。

SaaS 供应商认识到了这一需求,提供了一些简单机制来提供帮助。许多新兴的标准使这些集成只需几小时或几天即可完成。这至关重要:如果每个 SaaS 供应商都为此集成提供自己的专用方法,后果将无法想象。甚至更糟的是,如果每个 SSO 服务器供应商提供它自己的技术,会有何后果?这无疑会产生大量咨询费用。

SaaS 项目通常是受业务驱动的。IT 确实会干预,但有时是在采购周期中的晚期干预。您让受业务线 (LOB) 支持的 IT 高管通知身份管理 (IDM) 项目经理,表明业务部门已选择一个新 SaaS 供应商且希望通过 SSO 实现安全登录。该 SaaS 供应商声称转换只需一天的工作,那么 IDM 团队能在下星期完成吗?

您(IDM 项目经理)同意研究并告知 LOB 高管。您查找 SaaS 供应商并阅读它的 SSO 材料。您与架构师进行了快速沟通,所有迹象表明这应能轻松完成。

现在,技术人员开始集成。但是,他们很快认识到有许多问题需要解决,并且集成可能要花两星期时间(显然不是一两天)。可能会意外出现的各种问题的示例包括:

  • 标准不受支持。在极少的情况下,您会找到一个至少不支持安全性断言标记语言 (SAML) 的 SaaS 供应商。您常常会发现,SSO 服务器的最新版本不支持 SAML,或者您的供应商将一个 SAML 封装为一个独立的 SKU。那么您现在必须采购新的 SSO 服务软件。
  • 一个标准受支持,但无法生效。假设您未遇到第一个问题,您也可能会看到,尽管两方(SSO 服务器和 SaaS 供应商)都声称全面支持一个规范的一个特殊版本,但在您尝试集成它们时,会遇到一些挑战。这些挑战一般较小且可解决,但它们需要支持团队和 IDM 技术人员举行一次电话会议来谈论。
  • 专有技术。一些 SaaS 供应商提供了 Web 服务或目录同步化来作为 SSO 的一种替代机制。尽管可行,但这些替代机制会导致额外的开发工作,并且必须处理使项目周期变得更长的网络安全性、防火墙和其他问题。

重点很明确:仔细设定预期。SaaS SSO 项目不是一个 24 到 48 小时的任务。实际的工作量可能没有这么多,但由于所需的所有协调,总时间很容易达到两个星期。


设计模式

本节探讨在数据中心托管的传统应用程序与 SaaS 应用程序之间实现 SSO 的 3 种设计方法。您无疑已看到考虑了前面所提及挑战的已实现模式。

设计模式 1:自定义 Web 应用程序

如果您的 SaaS 提供商或 SSO 软件不支持 SAML,那么可使用此设计模式。此外,可使用它来使用 Web 服务或另一种专用集成。此设计模式的最后一个用例是在您的 SaaS 提供商支持 SAML,但您的 SSO 服务器不支持时。如果您最终决定执行自定义 SAML 实现(不推荐),设计模式将类似于这里描述的模式。

基本而言,您将部署一个受您的 SSO 软件所提供的典型 Web 代理保护的 Web 应用程序。此应用程序包含一个登录页面,并针对 SSO 服务器进行身份验证。该应用程序还包含将凭据传递给 SaaS 应用程序的代码。在用户经过身份验证后,该应用程序将身份验证信息传递给 SaaS 应用程序。当然,始终加密此数据并通过安全套接字层传输它。如果 SaaS 提供商支持 SAML,您可使用一个自定义 SAML 实现来生成 SAML,或者,应用程序也可拥有代码来使用 SaaS 供应商所提供的 Web 服务。一个最不推荐但可行的技术选项是,结合使用一个 HTTP post 和一些使 SaaS 应用程序能够识别用户的基本信息。

此模式的一种变体是,SaaS 提供商实际提供了此 Web 应用程序。在本质上,此 Web 应用程序与您从 SSO 服务器产品安装的代理没什么不同,所以可能是构建自定义 Web 应用程序的首选选项。

设计模式 2:基于 SAML

这是理想的解决方案,其中 SAML 用于在 SaaS 应用程序与 SSO 服务器之间传输 SSO 信息。如果两方都全面支持 SAML,那么一次 SAML 设置的执行和测试通常会花几小时。

这是不同的 SSO 服务器产品仍在完善的地方。在每个产品周期中,您都会看到更多开箱即用的功能,它们将集成工作缩短到短短 5 分钟。例如,我只花了一个小时,即将 SalesForce.com、Google Apps 和 Facebook 与一个 SSO 服务器产品集成完成。如 图 2 中所示,以下是此模式的工作原理:

  1. 用户登录到一个 SaaS 应用程序。
  2. 以 SAML 请求的形式将请求重定向到您的 IDP(SSO 服务器)。
  3. 您的 SSO 服务器解密 SAML 并对用户进行身份验证。
  4. 服务器向 SaaS 应用程序返回一个成功或失败的 SAML 响应。
  5. 用户登录成功或看到一条相应的错误消息。

要设置此过程,一般的步骤如下所示:

  1. 登录到您的 SaaS 提供商的管理控制台,使用凭据定义您的 SSO 服务器的 URL。
  2. 在 SaaS 服务器和 SSO 服务器上设置加密的消息的 SSL 密钥。
  3. 在 SSO 服务器上创建一个策略,为它启用 SAML 通信。
  4. 调整所需的任何其他参数,比如自定义登录和错误页面,以及超时。

如果此过程顺利完成,它确实就是这么简单。

图 2. 基于 SAML 的 SSO
该图显示了基于 SAML 的 SSO 过程

设计模式 3:自动化的配给

自动化的配给是目录同步化设计模式的一种巧妙的替代方案。图 3 演示了它的工作原理。在加载、传输和终止过程中,当一个 IDM 工具将对用户身份的更改写入它自己的数据存储区(通常为目录软件)时,它也会将此信息写入 SaaS 应用程序,这通常通过一个 Web 服务调用完成。用户增加、终止和密码更改信息都会发送到 SaaS 应用程序,进而与内部目录保持同步。

现在,当一个用户登录时,他(或她)可使用公司凭据。此设置实现了一种与 SSO 稍微不同的风格,称为简单登录(simple sign-on)(而不是 SSO),简单,是因为它仍然使用了与公司系统相同的用户名和密码,但不是单一登录。用户无需单独地登录到 SaaS 应用程序。

您可通过自定义 Web 服务实现来实现此模式,或者如果使用的技术支持为此类型的用户活动使用服务配给标记语言 (Service Provisioning Markup Language, SPML) 标准,也可实现此模式。

图 3. 自动化的配制
该图显示了自动化的配制过程

结束语

如果经过了周密计划,通过 SaaS 提供商建立 SSO 是一个相对轻松的任务。但也有许多事务需要注意,并且整个流程需要良好的项目管理和预期设定技能,才能确保项目成功完成。请记住,SaaS 供应商支持 SSO,但不是所有 SaaS 供应商都一致地支持 SAML。因此,一定要在计划或采购周期开始时就对 SSO 展开技术沟通。需要在两方之间双向共享技术限制。

类似地,如果正在构建自定义解决方案,请确保它们是高度安全和加密的。此外,确保您记录了每个操作。如果和当一些地方出错或出现登录事务花了太长时间的问题,您希望能够信任您的日志。详细的记录方法一般会补偿花在第一个支持问题上的时间。

最后,如果您看到 SaaS 在您的 IT 领域中具有更为显著的作用,请提前计划。更早(而不是更晚)进行正确的技术投资。同样重要的是,在 SaaS 供应商和商用的现成产品改进其功能时,计划重组和重新评估。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing
ArticleID=860280
ArticleTitle=将单点登录扩展到云
publish-date=03042013