简介
Security Assertion Markup Language (SAML) 是用于表示和交换用户 身份、身份验证和属性信息的 OASIS 开放标准。SAML 正在成为创建单点登录 (SSO) 解 决方案的常用技术。对于希望向其业务伙伴的已授权用户提供业务服务的公司,可以应 用这种技术创建 SSO 解决方案,从而跨企业联合 Web 服务资源。
请考虑一个业 务场景:您希望自己的用户能够访问伙伴公司的业务服务。最好的 SSO 效果是,用户只 需向您的企业验证身份,而不需要向其他公司验证身份。当用户访问 Web 服务资源时, 可以使用 SAML 令牌传递用户身份和属性数据。由于业务和私密性问题,这些公司很可 能不会把它们的多个用户目录整合为单一公用用户目录。这意味着 SAML 令牌将包含来 自外部安全域的用户身份,它们不是在业务服务提供者的用户目录中定义的。本文讨论 如何使用 IBM WebSphere Application Server V7.0 Fix Pack 7 中的 SAML 支持跨多个安全域边界断言 SAML 令牌,以及使用外部安全域用户身份和定制的 SAML 组属性直接做出访问控制决策。您会看到,与身份和组映射技术相比,根据信任关系断 言外部身份和定制的组属性更容易管理。
SAML 令牌
SAML 令牌由令牌颁 发者进行数字签名以确保令牌的完整性。业务服务提供者可以检验令牌颁发者的数字签 名,从而确认 SAML 令牌中用户身份的真实性。检验令牌颁发者的数字签名是检验业务 伙伴之间的信任关系的基础。本文描述用于断言 SAML 令牌以在应用服务器运行时环境 中创建用户安全上下文的信任模型。本文还包含一个 EJB 3.0 Java API for XML Web Services (JAX-WS) 示例应用程序,通过它说明如何根据 SAML 令牌颁发 者和 Web 服务提供者之间的信任关系配置跨安全域 SAML 断言。您将通过这个应用程序 学习如何配置业务服务,从而使用 SAML 令牌做出资源访问控制决策。
使用应用服务器 SAML 令牌断言信任模型构建 SSO 解决方案有许多优点:
对于用户来说,优点是他们只需向自己的安全域验证身份,然后就能够通过信任关系 访问业务伙伴的 Web 服务资源。用户不需要管理其他安全域的账号和身份验证数据。
对于 IT 管理员来说,明显的优点是通过使用基于标准的 SAML 技术实现广泛的第三 方互操作性。
对于 IT 管理员的另一个主要优点是,降低联合业务资源时的身份管理成本。不需要 整合公司的用户目录,即使这在业务场景中是可行的,这个任务也很麻烦。
对于 IT 管理员的另一个优点是,保留外部安全域中的用户身份,可以在安全和业务 审计记录中包含它们。
除非另外说明,本文中的 WebSphere Application Server 是指应用了 Fix Pack 7 (V7.0.0.7) 或更高版本的 WebSphere Application Server V7.0。
多安全域业务场景
图 1 是一个 Web 服务联合业务场景示例。图中显示三个 WebSphere Application Server 安全域,每个安全域包含自己的用户存储库配置。这些安全域可以代表不同的业 务单位或不同的公司。左边两个安全域中的用户发送 Web 服务消息以访问右边安全域的 资源。用户在 SAML 令牌中发送他们的身份,向目标安全域指出自己的身份。Web 服务 提供者使用 SAML 用户身份创建安全上下文;例如 JAAS 主体。做出资源访问控制决策 需要代表客户机的 JAAS 主体。
图 1. 跨 WebSphere Application Server 安全域断言 SAML 令牌