OAM 中的联盟代理和 IdP

本文介绍了联盟代理的概念,以及如何轻松地将 IdP 配置为 SP 并将验证委托给另一个远程 IdP,而不是在本地验证用户。

联盟代理通常在以下情况下使用:

此方法的优势如下:

直接信任模型

在此模型中,各种联盟服务器直接相互信任,没有充当代理的中间实体。

此模型具有降低联盟流的复杂性的优势,因为只有两台服务器参与了 SSO 操作,但有时会产生合作伙伴可能不同意的巨大管理开销。

我们举一个名为 ACME Corp 的全球性公司的例子,该公司在全球设有办事处。该公司的结构由代表全球不同区域的三个顶级组织组成,每个组织负责其安全域:

每个组织都有自己的安全域,这意味着:

现在,假设 ACME Corp 希望与一些服务提供商达成联邦协议,其中一些是供应商,其他是 ACME Corp 购买的服务,例如会议呼叫服务,以及 Webex 服务。

为了在各个 ACME Corp 组织与 SP 之间建立联盟,每个组织的联盟服务器必须与每个远程 SP 建立信任:

下图显示了需要实施的所有协议:

插图 Direct_Trust_Model.jpg 的说明

这种方法通常可以避免,因为它向合作伙伴发布了 ACME Corp 基础设施的内部复杂性。

联盟 SSO 和 SAML 被定义为允许两个不同的安全域以一个合作伙伴无需了解其他合作伙伴的安全实施和部署的方式执行跨域 SSO。在这种情况下,很明显,这一承诺被打破,ACME Corp 的安全选择的复杂性正在影响 SP 合作伙伴。

经纪信任模型

在此模型中,存在联盟代理的概念,其中一些实体必须用作代理/SP 才能代表其他 SP 执行联盟 SSO 操作。

如果我们再次以 ACME Corp 的示例为例,则与其他 SP 合作伙伴实施联合 SSO 的正确方法是通过“Brokered Trust”模型或“Federal Proxy”,其中:

这种方法更符合联邦/SAML 的理念,即外部合作伙伴不了解 ACME Corp 的安全基础设施和组件,并且只与单个 IdP 交互。

此解决方案还解决了协议数量特别高的高管理开销,并且对协议的任何更新都是一个漫长的过程。使用此方法:

下图显示了代理信任(或联盟代理)模型中所需的联盟协议:

插图 Brokered_Trust_Model.jpg 的说明

OAM 中的联盟代理

联盟代理中的目标是将 IdP 转换为 SP,以便在收到来自第一个远程 SP 的 SSO 请求时,IdP 将成为 SP,并使用第二个远程 IdP 触发新的联盟 SSO 操作,而不是在本地质询用户。

第二个联盟 SSO 操作成功完成后,代理 IdP 将标识用户,并可以为原始 SP 创建 SSO 响应。

OAM 支持所有协议的立即联合代理:

因此,SP 可以通过 SAML 1.1 使用 IdP 执行联合 SSO,而 IdP 成为 SP,并通过 SAML 2.0 使用第二个远程 IdP 执行联合 SSO。原始 SP 不需要知道 OAM/SP 与第二个 IdP 之间使用的协议,甚至不需要知道发生了第二次联合 SSO 操作。

在联盟立即代理中,可以将 IdP 配置为将第二个联盟 SSO 中指定的联盟验证方法“转发”到原始 SP。

为联盟代理配置 OAM

如前文所述,IdP 利用 OAM 进行用户验证:每次执行联合 SSO 操作时,IdP 将通过指定验证方案来调用 OAM,以确保用户经过充分的验证,并在必要时询问该用户。

如您所知,OAM 定义与 OAM/SP 关联的特定方案:如果未验证的用户请求访问受 FederationScheme 保护的资源(或使用类似 FederationPlugin 的验证模块的方案),OAM 将调用 OAM/SP,该 OAM/SP 将使用远程 IdP 触发联盟 SSO 操作。

因此,要使 IdP 立即执行联合代理,而不是让 IdP 使用本地验证方案调用 OAM,您必须使用 FederationScheme 调用 IdP OAM。从此处:

WLST 命令

要将 IdP 配置为使用联盟 SSO 来验证用户而不是本地验证机制,请执行以下命令之一:

有关如何配置 OAM 进行验证的更多信息,请参见 IdP 中有关验证的文章。在此示例中,将 IdP 全局配置为使用联盟 SSO 作为默认验证机制:

  1. 通过执行 $IAM_ORACLE_HOME/common/bin/wlst.sh 进入 WLST 环境。

  2. 连接到 WLS 管理服务器:connect()

  3. 导航到域运行时分支:domainRuntime()

  4. 执行 setIdPDefaultScheme() 命令:setIdPDefaultScheme("FederationScheme")

  5. 退出 WLST 环境:exit()

进行此更改后,FederationScheme 用于验证用户。

其他联盟方案可用于验证用户,其中 OAM 配置为全局级别(所有 SP 的所有用户均使用该联盟方案进行验证)或 SP 合作伙伴级别(使用该联盟方案验证使用特定 SP 执行联盟 SSO 的所有用户)。请记住,可以通过 OAM WLST createAuthnSchemeAndModule 命令或通过 OAM 管理控制台中的“编辑 IdP 合作伙伴”部分为特定的 IdP 创建联盟方案。

确定要使用的第二个 IdP

当在 OAM 中使用联盟方案进行验证时,OAM/SP 将需要确定要用于联盟 SSO 操作的 IdP:

要将 IdP 合作伙伴设置为默认 SSO IdP:

代理联盟验证方法

如前文中所述,当 IdP 构造断言时,它将用于验证用户的本地 OAM 方案映射到联盟验证方法。

对于联盟 SSO 代理,这意味着 FederationScheme 映射到联盟验证方法。例如,如果需要将 SAML 2.0 的方案映射到 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport,则管理员使用类似于以下内容的命令:

在某些情况下,最好转发从第二个 IdP 接收的联盟验证方法,而不是在本地将联盟方案映射到联盟验证方法。

配置 IdP 以转发联盟 SSO 代理中的联盟验证方法。

现在,使用 useProxiedFedAuthnMethod() 命令:

  1. 通过执行 $IAM_ORACLE_HOME/common/bin/wlst.sh 进入 WLST 环境。

  2. 连接到 WLS 管理服务器:connect()

  3. 导航到域运行时分支:domainRuntime()

  4. 执行 useProxiedFedAuthnMethod() 命令:useProxiedFedAuthnMethod(enabled="true/false",authnSchemeToAdd="SCHEME", authnSchemeToRemove="SCHEME")

  5. 退出 WLST 环境:exit()

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心