确定要用于联盟 SSO 的 IdP

作为服务提供者,在触发联合 SSO 操作时,有时主要挑战在于确定为 SSO 流选择哪个 IdP(如果 SP 与多个 IdPs 建立了信任协议)。

OAM/SP 为联盟 SSO 操作选择 IdP 的机制不同,包括:

以下部分详细介绍了每个机制。

OAM 联盟方案

OAM 提供了用于创建 OAM 验证方案的管理工具,该方案将:

当使用这种验证方案保护资源时,如果未验证的用户请求访问,将使用方案绑定到的 IdP 合作伙伴触发联盟 SSO 流。

通过创建此类方案,管理员可以拥有特定的资源,从而获得具有特定 IdP 合作伙伴的联盟 SSO。

:如果用户已通过级别足够强的有效会话进行验证,则访问受其他联盟方案保护的资源可能会导致新联盟 SSO。

OAM 管理控制台

要为特定的 IdP 合作伙伴创建 OAM 验证方案,请执行以下步骤:

  1. 转到 OAM 管理控制台:http(s)://oam-admin-host:oam-adminport/oamconsole

  2. 导航到 Identity Federation,Service Provider Administration

  3. 打开要为其创建方案的 IdP 合作伙伴。

  4. 单击 Create Authentication Scheme and Module 按钮。

插图 OAM_Admin_Console.jpg 的说明

OAM 管理控制台将创建:

插图 OAM_Admin_Console_with_message.jpg 的说明

WLST 命令

要使用 OAM WLST createAuthnSchemeAndModule() 命令为特定 IdP 合作伙伴创建 OAM 验证方案,请执行以下步骤:

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

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

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

  4. 执行 createAuthnSchemeAndModule() 命令:指定 IdP 合作伙伴名称。例如:createAuthnSchemeAndModule("AcmeIdP")

  5. 退出 WLST 环境:exit()

:要删除此类联盟方案/模块,请执行 OAM WLST deleteAuthnSchemeAndModule() 命令。

保护资源

要使用 <PARTNER_NAME>FederationScheme 来触发该特定 IdP 合作伙伴的联盟 SSO 的资源,请执行以下步骤:

  1. 转到 OAM 管理控制台:http(s)://oam-admin-host:oam-adminport/oamconsole

  2. 导航到 Access Manager,Application Domain

  3. 单击搜索,然后使用新的 FederationScheme 打开包含要保护的资源的应用程序域。

  4. 单击验证策略选项卡。

  5. 创建新的验证策略或编辑现有策略。

  6. 选择新的 FederationScheme

  7. 单击应用

插图 Authentication_Policies.jpg 的说明

进行此更改后,只要用户请求受此验证策略保护的资源并且需要对用户进行验证,就会使用特定的 IdP 合作伙伴(在此示例中为 AcmeIdP)执行联盟 SSO。

自定义 OAM 验证插件

概述

OAM 验证模块为:

OOTB 联盟验证模块(称为 FederationPlugin)由两个插件组成:

可通过以下方式查看该编排:

  1. 转到 OAM 管理控制台:http(s)://oam-admin-host:oam-adminport/oamconsole

  2. 导航到访问管理器,验证模块

  3. 打开 FederationScheme

  4. 单击步骤选项卡以查看插件。

  5. 单击步骤业务流程选项卡以查看不同插件与用于启动操作的插件之间的业务流程。

插图 Steps_Orchestration.jpg 的说明

实现定制插件

可以基于 OAM 定制验证插件框架实施定制插件,该框架确定要用于特定联盟 SSO 操作的 IdP:

AuthenticationContext 中保存 IdP 合作伙伴名称的代码与以下代码类似:

 public ExecutionStatus
 process(AuthenticationContext context)
 {
    ...
    CredentialParam param = new CredentialParam();
    param.setName("KEY_FEDIDP");
    param.setType("string");
    param.setValue(IDP_PARTNER_NAME);

 context.getCredential().addCredentialParam("KEY_FEDIDP", param);
    ...
    return ExecutionStatus.SUCCESS;
 }

实施插件后:

最后,可以使用新的 OAM 方案来保护资源,该方案使用定制验证模块/插件来执行联盟 SSO 操作。

注意:请参阅 OAM Developer 指南中有关定制插件的更多信息。

IdP 搜索服务

概述

“身份提供者搜索服务协议和配置文件”SAML 2.0 规范定义了 SAML 2.0 SP 将 IdP 选择委派给远程服务的方法。

此流在 SAML 2.0 规范中进行了介绍,并由以下步骤组成:

配置 OAM/SP

您可以将 OAM/SP 配置为使用任何远程 IdP 搜索服务。OAM 包括一个简单的 IdP 搜索服务,该服务使用户能够选择使用哪个 IdP 执行联盟 SSO。要将 OAM/SP 配置为使用 IdP 搜索服务,请执行以下步骤:

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

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

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

  4. 启用/禁用 OAM/SP 以使用 IdP 搜索服务:putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "true/false")

    1. 要启用:putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "true")

    2. 禁用 putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "false")

  5. 设置远程 IdP 搜索服务的位置:putStringProperty("/spglobal /idpdiscoveryserviceurl", "URL")

  6. 使用服务位置替换 URL。

    1. 对于捆绑的简单 IdP 搜索服务,请将 URL 替换为 /oamfed/discovery.jsp(这是此属性的 OOTB 值):putStringProperty("/spglobal /idpdiscoveryserviceurl", "/oamfed/discovery.jsp")

    2. 对于远程服务,示例为:putStringProperty("/spglobal /idpdiscoveryserviceurl", "http://sp.com/discovery")

  7. 退出 WLST 环境:exit()

要使用捆绑的简单 IdP 搜索服务,请执行以下步骤:

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

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

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

  4. 启用/禁用捆绑的 IdP 搜索服务:putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "true/false")

    1. 要启用:putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "true")

    2. 禁用 putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "false")

  5. 退出 WLST 环境:exit()

测试

在我的测试环境中,我有三个 IdPs:

OAM/SP 配置为:

如果用户请求访问受 FederationScheme 保护的资源,则捆绑的简单 IdP 搜索服务会提示用户选择 IdP 以使用以下项执行联合 SSO:

插图 Access_Manager.jpg 的说明

默认 SSO 身份提供方

如果以前的方法都不用于指示要用于联盟 SSO 的 IdP,则 OAM/SP 将使用标记为默认 SSO 身份提供者的 IdP 合作伙伴。

OAM 管理控制台

要指示特定的 IdP 合作伙伴应当通过 OAM 管理控制台成为默认 SSO 身份提供者,请执行以下步骤:

  1. 转到 OAM 管理控制台:http(s)://oam-admin-host:oam-adminport/oamconsole

  2. 导航到 Identity Federation,Service Provider Administration

  3. 打开 IdP 合作伙伴。

  4. 选中默认身份提供方合作伙伴框。

  5. 单击应用

插图 Default_Identity_Provider.jpg 的说明

WLST 命令

要使用 OAM WLST setDefaultSSOIdPPartner() 命令指示特定的 IdP 合作伙伴应为默认 SSO 身份提供者,请执行以下步骤:

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

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

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

  4. 执行 setDefaultSSOIdPPartner() 命令。

  5. 指定 IdP 合作伙伴名称 例如:setDefaultSSOIdPPartner("AcmeIdP")

  6. 退出 WLST 环境:exit()

更多学习资源

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

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