注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于云环境的值。
Integrate Oracle APEX with Oracle Cloud Infrastructure Identity and Access Management Identity Domains
简介
Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 提供身份和访问管理功能,例如 Oracle Cloud Infrastructure 以及 Oracle 和非 Oracle 应用(无论是 SaaS、云托管还是本地部署)的身份验证、单点登录 (SSO) 和身份生命周期管理。
目标
- 使用 OCI IAM 身份域作为身份提供者 (IdP) 在 Oracle APEX 应用程序上配置 SSO,该身份提供者提供多因素身份验证 (MFA)、自适应安全、报告等安全控制。
先决条件
-
OCI IAM 管理员可访问合作伙伴应用程序设置的任何身份域。
-
Oracle APEX 18.1 及更高版本,用于设置验证应用程序。
任务 1:在 Oracle APEX 中安装示例应用程序
-
登录到 APEX 工作区以创建示例应用程序,我们将使用 OCI IAM 作为 SSO 的 IdP。要在 Oracle APEX 上创建应用程序,请单击应用程序构建器。
-
单击创建应用程序。
-
选择从文件。
-
单击复制并粘贴并选择销售,如下图中所示。
任务 2:在 OCI IAM 中注册机密应用程序
我们将在 OCI IAM 域中注册机密应用程序。在本教程中,我们使用了默认域。
-
登录到 OCI 控制台,导航到身份和安全。在 Identity(身份)下,单击 Domains(域)和 Applications(应用程序)。
-
选择 Confidential Application(机密应用程序),然后单击 Launch workflow(启动工作流)。
-
为应用程序输入名称,然后单击下一步。
-
选择授权代码作为允许的授权类型,然后单击下一步。
-
按以下格式输入重定向 URL :
https://guid-demodb.adb.region.oraclecloudapps.com/ords/apex_authentication.callback
。例如,https://guid-demodb.adb.us-ashburn-1.oraclecloudapps.com/ords/apex_authentication.callback
。 -
按以下格式输入注销后重定向 URL :
https://guid-demodb.adb.region.oraclecloudapps.com/ords/f?p=your_apex_number_here
。 -
将注销 URL 留空。
注:记下此 URL,它必须与以后在 Oracle APEX 验证方案注销后 URL 中添加时完全匹配。
-
单击 Finish(完成)。
-
单击编辑应用程序,然后在验证和授权下选择强制授权为授权(此后将用于控制对 Oracle APEX 应用程序的访问)。
-
单击激活应用程序。
-
复制将在 Oracle APEX 端的配置中使用的客户端 ID 和客户端密钥。
任务 3:在 Oracle APEX 工作区中创建新的 Web 身份证明
-
打开 Oracle APEX 工作区。在任务 1 中创建的应用程序中,单击共享对象。
-
单击身份证明。
-
单击创建。
-
输入以下信息并单击创建。
注:使用任务 2 中机密应用程序的客户端 ID 和客户端密钥。
-
将用户分配给此应用程序。
任务 4:在 Oracle APEX 中为示例应用程序创建新的验证方案
-
打开 Oracle APEX 工作区,然后单击共享对象。在安全性下,单击验证方案和创建。
-
选择基于库中预配置的方案,然后单击下一步。
-
输入以下信息并单击创建。搜索 URL 将为
https://[idcs-service-url]/.well-known/openid-configuration/
。 -
单击创建的 Oracle Identity Cloud Service (IDCS) 验证方案 - 当前。
-
单击注销后 URL 选项卡,选择转至和 URL 。在 URL 中,粘贴任务 2.6 中的 Oracle APEX 应用程序 URL。此 URL 必须与 IDCS 注销后重定向 URL 匹配。
-
在安全属性下,更新信息并单击应用更改。
-
(可选)在源部分中,输入以下 PL/SQL 代码。
注:仅当您要控制授权时才需要执行此操作,前提是我们希望根据用户所属的组更改应用程序的功能或行为。有关详细信息,请参阅本教程末尾的控制授权部分。
procedure load_dynamic_groups as l_group_names apex_t_varchar2; begin -- -- add all group names to l_group_names -- for i in 1 .. apex_json.get_count('groups') loop apex_string.push ( p_table => l_group_names, p_value => apex_json.get_varchar2 ( p_path => 'groups[%d].name', p0 => i )); end loop; -- -- save group names in session -- apex_authorization.enable_dynamic_groups ( p_group_names => l_group_names ); end;
-
(可选用于步骤 7 )在登录处理下,输入以下信息并保存。
任务 5:测试登录到 Oracle APEX 应用程序
-
单击运行页。
-
在提示的登录屏幕上输入身份证明。对于本教程,用于验证的帐户是从本地活动目录同步的,口令位于活动目录中。OCI IAM 将收集用户名和密码,并针对活动目录进行验证。
-
单击允许。
此时将显示应用程序登录页。
控制授权
您可以通过在为 SSO 配置的机密应用程序上启用强制授予为授权来控制授权,这仅允许分配给此应用程序的用户或组能够访问 Oracle APEX 应用程序。这显示在任务 2.9 中。
另一种控制授权的方法是在验证方案中使用 PL/SQL 过程,如任务 4.7 和 4.8 所示。验证成功后,将调用 userinfo_endpoint
,结果将可用于验证后过程。JSON 结果将转换为组列表,并存储在用于组管理的内置 Oracle APEX 会话中,随后可以在共享组件下与授权方案绑定,以根据用户的组成员身份提供对应用程序的访问。
相关链接
确认
- 作者 - Aqib Javid Bhat(高级云工程师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Integrate Oracle APEX with Oracle Cloud Infrastructure Identity and Access Management Identity Domains
F78525-02
May 2024