在 Oracle Identity Cloud Service 中配置应用程序
要使验证正常工作,必须使用可保护 Oracle Fusion Applications Cloud Service 和 Oracle PaaS ( Oracle Visual Builder )或定制 HTML5 应用程序的同一 Oracle Identity Cloud Service 实例。在 Oracle Identity Cloud Service 中,您需要创建用于客户机验证的应用程序。
在此方案中,我们将 Oracle Functions 加 Oracle API Gateway 的互动方式与 Oracle Functions 与 Oracle Fusion Applications Cloud Service 实体之间的交互区分开,方法是使用 Oracle Identity Cloud Service 作为单独实体,而不是针对这两者使用相同的 Oracle Identity Cloud Service 应用程序。
通常,Oracle 客户编写的 Oracle SaaS 扩展应用程序执行一些复杂的逻辑。例如,公用方案是从 Oracle Fusion Applications Cloud Service 获取数据,以某种方式处理数据,然后将数据推送回 Oracle Fusion Applications Cloud Service 到数据库等其他目标。
因此,我们在此提供了包含两个 Oracle Identity Cloud Service 应用程序的体系结构:
- 一个应用程序,用于保护您的 Oracle Functions 作为资源以及作为 Oracle Fusion Applications Cloud Service 的可信客户机。
- 一个可保护您的 Oracle Fusion Applications Cloud Service 实例作为资源的应用程序。
本文中的说明将指导您逐步完成创建和配置其中第一个应用程序以保护 Oracle Functions 的过程。这两个应用程序中的第二个应用程序应该已存在:要启用 Oracle Fusion Applications Cloud Service 与 Oracle PaaS 之间的联盟,需要您创建和配置应用程序。
此设置允许您配置不同的规则或策略来访问与可信客户机访问 Oracle Fusion Applications Cloud Service 的规则或策略不同的功能。在此配置中,API 网关的传入访问标记只需授权访问 Oracle Functions 才能调用函数功能,但访问 Oracle Fusion Applications Cloud Service 实例并不一定需要具有相同的授权。Oracle Visual Builder 应用程序需要关联的 Oracle Identity Cloud Service 应用程序,它将生成访问标记以访问 API 网关。此 Oracle Identity Cloud Service 应用程序将成为函数/API 网关资源的客户端。
体系结构图中显示的标记交换提供了一个额外的保护层来传播标识,该标识用于将函数作为Oracle Fusion Applications Cloud Service 资源的客户机,后者类似于在早期支持的SaaS扩展中使用的Oracle WebLogic OAuth断言过程,例如使用Oracle Java Cloud Service的客户机。
这可能意味着在某些用例中,用于为 Oracle Functions 生成标记的 Oracle Identity Cloud Service 应用程序只能具有函数的资源范围,而不能具有 Oracle Fusion Applications Cloud Service 的资源范围。在这种情况下,Oracle Functions 将无法重用该标记来调用 Oracle Fusion Applications Cloud Service,但是对于访问 Oracle Functions 是有效的。因此,您可以实施其中某些用户或函数 evocations 没有访问权限的逻辑流,而其他用户则基于业务逻辑、用户角色和权限或其他标准执行此操作。
在其他用例中,Oracle Functions 可以包含代码,以使用在来自网关 API 的请求中传递的证书和用户为 Oracle Fusion Applications Cloud Service 请求访问标记。
在 Oracle Identity Cloud Service 中为 Oracle Functions 创建应用程序
在 Oracle Identity Cloud Service 中,您需要创建一个用于 Oracle Functions 客户机验证的机密应用程序。
在您与 Oracle Fusion Applications Cloud Service 实例联合的同一 Oracle Identity Cloud Service 实例中,创建机密应用程序并确保设置客户机配置,以便启用客户机身份证明、JWT 断言和资源所有者授予。
准备和测试 Oracle Identity Cloud Service 应用程序
将 Oracle Identity Cloud Service 机密应用程序配置为连接到与 Oracle Fusion Applications Cloud Service 实例相对应的应用程序,然后测试应用程序。
curl --location --request GET 'https://<your fusion instance>.<domain>.com/fscmRestApi/resources/11.13.18.05/expenses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <JWT_TOKEN>'
此当前查询应返回费用数据。将 Oracle Functions Oracle Identity Cloud Service 应用程序配置为可信客户机
您需要将 Oracle Identity Cloud Service 应用程序用作可信客户机的证书,才能向您的 Oracle Functions 发出 OAuth 请求。如果尚未提供证书,可以生成自签名证书以供开发期间使用。
如果您尚未具有密钥,则可以使用提供的脚本 genSelfSignedKeypair.sh
生成密钥。通过指定租户和密钥别名值执行脚本。在此示例中,我们提供 mytenant 作为租户名称,fnassertionkey 作为密钥别名。
将密钥库信息导入到 Oracle Cloud Infrastructure Vault 中
Oracle Functions 断言流程将需要使用导入的密钥库和口令。为了获得最佳安全性并避免使用硬编码的口令和密钥,您可以利用 Oracle Cloud Infrastructure Vault。
使用 Oracle Cloud Infrastructure Vault 服务可以安全地加密和存储敏感数据。可以将密钥库和公共密钥口令存储在 Vault 中,然后使用 Oracle Functions 后端中的 Oracle Cloud Infrastructure SDK 引用它来执行分离。还可以安全地加密并存储 JKS 文件。
在此解决方案播放书的开始之前部分中,需要您设置 Oracle Functions 环境,例如通过使用快速入门指南。快速入门指南设置会要求您在根区间级别为函数创建策略。在以下示例中,该策略名为 FnTenancyPolicy
。您需要向策略添加其他语句,以允许 Oracle Functions 访问与该策略关联的 Vault。Oracle Functions 的组名称应该是您在 Quick Start Guide 中配置租户时创建的组名称。在此示例中,fnGroup1
是可以使用 Oracle Functions 的用户组。
在 Oracle Identity Cloud Service 中配置 Oracle Visual Builder 应用程序
Oracle Visual Builder 应用程序具有相关联的 Oracle Identity Cloud Service 应用程序,它自动配置为可信客户机。您需要配置该应用程序以便将其用作 Oracle Functions 资源的客户端。
作为建议体系结构中显示的交互的一部分,与 Oracle Identity Cloud Service 实例关联、与 Oracle Fusion Applications Cloud Service 联合并连接到 Oracle Functions 的 Oracle Visual Builder 应用程序需要能够生成可访问 API 网关和 Oracle Functions 资源的访问标记(如范围所设置)。必须在 Oracle Identity Cloud Service 中配置 Oracle Visual Builder 应用程序,以将其设置为资源的客户端,该资源通过添加您创建的新 Oracle Functions 应用程序的范围来扩展 SaaS 功能。
在 Oracle Visual Builder 中创建新应用程序时,将自动创建 Oracle Identity Cloud Service 应用程序。例如,如果您创建一个名为 TestSaaSExtensionFN
的应用程序,则可以导航到 Oracle Identity Cloud Service 控制台并列出应用程序,而您应该查找名为 TestSaaSExtensionFN
的应用程序。