预配和配置 Oracle Cloud Infrastructure 服务

此处提供了 Oracle WebLogic Server for OCI 的预配和配置以及 Oracle Fusion 扩展应用程序所需的其他服务的摘要,包括单点登录 (SSO) 和 Web 服务安全配置。有关详细信息,请参阅完整的产品文档。

配置 Required 备注
基本域(非 JRF) N/A
配置 SSL 域(创建后) Required
数据库配置 Required
Oracle Identity Cloud Service WebLogic 验证 Required
将 OPSS 用户和组 API 与 Oracle Identity Cloud Service 集成 可选 应用程序使用 Oracle Platform Security Services (OPSS) 创建授权策略时必需
启用 JRF 的域 Required
已启用负载平衡器和 SSL Required 必须配置为公共负载平衡器。此外,您需要获取 CA 证书并将其导入到负载平衡器。
本地 VCN 对等连接 可选 如果 Oracle WebLogic Server for OCI 和数据库实例的 VCN 不同,则必须提供此值。
最低 Oracle WebLogic Server 版本 Required 12.2.1.3 或更高版本
WLS 域的专用子网 可选
Oracle WebLogic Server Edition Required 企业版
Oracle WebLogic Server 服务器节点 Required 最小值 1,最大值 8。Oracle Java Cloud Service - SaaS Extension 支持 1、2 或 4 个节点。
Weblogic VM 配置 Required 1 个 OCPU/8 GB RAM 或更大的配置。

Oracle WebLogic Server for OCI 部署执行先决条件步骤

在部署 Oracle WebLogic Server for OCI 之前,需要满足许多先决条件。

Oracle WebLogic Server for OCI 文档提供了有关部署 Oracle WebLogic Server for OCI 之前所需的配置先决条件的详细信息。下面汇总了具有某些关键要求的先决条件步骤。有关每种选择、要求和步骤的详细信息,请参阅 Oracle WebLogic Server for OCI 产品文档。
  1. Oracle Cloud Infrastructure 中创建数据库。
    启用 JRF 的域支持 Oracle Application Development Framework (ADF)。使用 Oracle WebLogic Server for OCI 创建域并将其与现有数据库关联时,Oracle WebLogic Server for OCI 将执行以下操作:
    • 预配方案以支持所选数据库中的 JRF 组件
    • 预配域中提供与所选数据库连接的数据源
    • 将 JRF 组件和库部署到域

    选择下列数据库选项之一:

    • Oracle Autonomous Transaction Processing (推荐)
    • Oracle Cloud Infrastructure 支持裸金属和虚拟机数据库系统
    有关详细信息,请查看 Oracle WebLogic Server for OCI 产品文档。
  2. 适用于 OCI 的 Oracle WebLogic Server 可以在 Oracle Cloud Infrastructure 中为新 Oracle WebLogic Server 域创建虚拟云网络和一个或多个子网,也可以选择在创建域之前手动创建自己的 VCN 和子网。
  3. 出于安全原因,Oracle 建议在专用子网中创建 Oracle WebLogic Server for OCI。为堡垒节点创建子网。
    1. 要访问 Oracle WebLogic Server 管理控制台Oracle Enterprise Manager 仪表盘,请使用堡垒节点创建动态端口隧道,并将 SOCKS5 代理与所选端口一起使用。
    2. 访问专用子网中的 Oracle WebLogic Server 管理控制台
      无法从公共 Internet 访问分配给专用子网的 Oracle WebLogic Server 计算实例。要访问 Oracle WebLogic Server 管理控制台以管理此类实例,可以使用在公共子网上创建的堡垒实例以及使用安全 Shell (SSH) 实用程序转发的动态端口。
    3. 同样,还可以通过将堡垒实例与动态端口转发一起使用来访问专用子网中的 Fusion Middleware Control Console
    4. 创建一个路由规则,以允许 Oracle WebLogic Server for OCI 计算实例访问公共 Internet。在专用子网的路由表中,使用目标 0.0.0.0/0目标类型 NAT 网关创建规则。
  4. 在与 Oracle Fusion Applications 实例关联的 Oracle Identity Cloud Service 实例中,创建机密应用程序,然后标识其客户机 ID 和客户机密钥。
    1. Oracle Identity Cloud Service 控制台中,选择应用程序选项卡,单击添加,然后在添加应用程序窗口中选择机密应用程序。
    2. 详细信息页上,为新应用程序提供名称。其他详细信息是可选的。
    3. 客户端页上,选择立即将此应用程序配置为客户端
    4. 授权下,启用以下允许的授权类型资源所有者、客户机身份证明和 JWT 断言
    5. 单击下一步,然后在授权页上,单击完成以保存应用程序。
    6. 在“应用程序已添加”通知框中复制客户端 ID 和客户端密钥。
    7. 现在创建并保存应用程序,请单击配置选项卡,然后展开客户机配置部分。
    8. 标记发布策略中,在授予客户机对 Identity Cloud Service 管理 API 的访问权限子部分中,单击添加按钮并选择身份域管理员角色。
    9. 单击保存
    10. 激活新应用程序。选择应用程序,然后选择应用程序。单击应用程序名称旁边的激活
  5. 准备 Vault 机密:密码的加密密钥和机密。
    加密密钥允许您加密 Oracle WebLogic Server for OCI 所需的密钥内容。可以使用现有密钥,也可以使用 Oracle Cloud Infrastructure Vault 创建 Vault 和加密密钥。
    使用 Oracle Cloud Infrastructure Vault 中的密钥存储您在 Oracle WebLogic Server for OCI 中创建域所需的密码。必须为这些口令提供密钥:
    • 新域的管理员口令
    • 数据库的管理员口令
    • 在 Oracle Identity Cloud Service 中创建用于验证的机密应用程序的客户端密钥
    1. 通过在“安全”区域中选择 Vault,在 Oracle Cloud Infrastructure 控制台中创建 Vault 服务实例。
    2. 创建加密密钥。选择 Vault 实例,然后单击主加密密钥。
    3. 要为上述密码创建机密,请导航到包含加密密钥的 Vault。对于需要创建的每个机密,请完成以下步骤。
    4. 单击密钥,然后单击创建密钥
    5. 输入用于标识密钥的名称。
    6. 选择加密密钥。
      密钥用于在密钥导入到 Vault 时加密密钥内容。
    7. 密钥内容中,输入要存储在此密钥中的口令。
      确保密码符合使用它的账户的规则。以纯文本输入的口令在发送到 Oracle WebLogic Server for OCI 之前由 base64 编码。
    8. 单击创建密钥
    9. 创建密钥时,单击名称。复制密钥的 OCID。

创建 Oracle WebLogic Server for OCI 实例

创建启用了 JRF 的 Oracle WebLogic Server for OCI 域实例以托管 Java 应用程序。

Oracle WebLogic Server for OCI 文档提供了有关创建 Oracle WebLogic Server for OCI 实例的步骤的详细信息。下面是步骤的摘要。有关每个步骤的详细信息,请查看 Oracle WebLogic Server for OCI 产品文档。

在市场中,通过输入自动创建域的参数来创建堆栈。创建启用 JRF 的域时,可以指定 Oracle Autonomous Transaction Processing 数据库或 Oracle Cloud Infrastructure Database。您还可以为域指定公共子网(特定于区域或可用性域)或专用子网。如果要使用 Oracle Autonomous Transaction Processing 数据库,则必须将 Oracle WebLogic Server 12c 指定为启用 JRF 的域的版本。

  1. 使用市场指定初始堆栈信息。在 Oracle Cloud Infrastructure 控制台中,导航到市场部分,然后选择应用程序。
  2. 在搜索字段中,键入 Oracle WebLogic Server Cloud,然后选择要创建的堆栈。
    堆栈选项对应于不同版本和许可证优惠。Oracle 可能会随时更改可用的出价。在此发布时,Oracle 提供了“自带许可证 (BYOL)”和“通用储值模型 (UCM)”许可证选项。例如:Enterprise Edition BYOL、Standard Edition BYOL 或 Enterprise Edition UCM。
  3. 在弹出菜单中,选择您的首选版本,然后选择目标区间。选中复选框,然后单击启动堆栈,确认您已复查并接受 Oracle 标准条款和限制。
  4. 在堆栈信息步骤中,您可以选择更改默认名称、添加说明和应用标记。然后单击下一步。
  5. 在向导的配置变量页上,配置实例参数。您需要为计算实例指定资源名称前缀以及配置和 OCPU 计数。输入 SSH 公共密钥,选择要创建的受管服务器数,Oracle WebLogic Server 管理员的用户名以及包含此管理员口令的密钥的 OCID。
  6. 在同一页上,选择 WLS 实例高级配置,并为域配置高级参数。您可以在此处更改默认端口号并删除示例应用程序。
  7. 选择为 Oracle WebLogic Server 实例创建的 VCN。根据需要配置网络参数和 WebLogic Server 控制台端口。
  8. 选择预配负载平衡器并为 HTTPS 配置负载平衡器网络。
    您可能会发现默认超时值会导致出现问题。Oracle 建议将负载平衡器超时设置为 60 秒作为起点,然后根据需要进行调整。完成 Oracle WebLogic Server for OCI 预配后,在 Oracle Cloud Infrastructure 控制台中导航到负载平衡器并在其中更改配置设置。
  9. 选择使用 Identity Cloud Service 启用验证。输入租户名称,也称为实例 ID。输入先前创建的机密应用程序的客户端 ID, 然后输入包含该应用程序的客户端密钥的密钥的 OCID。
  10. 在数据库部分中,选择使用 JRF 预配,然后从先前创建的数据库中输入详细信息。数据库不适用于应用程序数据 - 它包含启用 JRF 的域的必需基础结构方案。如果区间、数据库、VCN 与 WebLogic Server VCN 不同,则需要提供其中包含数据库管理员帐户口令的密钥的 OCID
  11. 查看向导中的概要,然后单击创建

为应用程序数据创建数据库源

创建数据库源以存储将在 Oracle WebLogic Server for OCI 上运行的 Java 应用程序的数据。

您可以选择使用 Oracle Autonomous Transaction ProcessingOracle Cloud Infrastructure Database (DB System) 来存储应用程序数据。

Oracle WebLogic Server for OCI 提供了两个实用程序脚本来帮助您创建 Oracle Autonomous Transaction Processing 数据源:下载脚本,该脚本将 Wallet 文件下载到节点,以及创建脚本,该脚本使用您提供的 wallet 文件和数据源属性创建数据源。要运行脚本,需要以 opc 用户身份访问 WebLogic 域中的节点。这些脚本位于 /opt/scripts/utils 中,只能以 oracle 用户身份运行。

使用 Oracle WebLogic Server 管理控制台创建数据源并与 Oracle Cloud Infrastructure Database (DB System) 建立连接。验证数据库系统的 PDB 名称后,使用 Oracle WebLogic Server 管理控制台创建 Java 数据库连接 (JDBC) 数据源。

无论您使用哪个数据源,数据库都必须允许 Oracle WebLogic Server 计算实例访问数据库监听端口(默认情况下为 1521)。如有必要,更新访问控制列表 (ACL)。

Oracle WebLogic Server for OCI 产品文档中详细介绍了这些数据库源创建和配置步骤。

Oracle Identity Cloud Service 中为 RESTful Web 服务配置基于 OAuth 的验证

要启用 RESTful Web 服务数据交互,可以通过修改机密应用程序将 Oracle Identity Cloud Service 配置为处理基于 OAuth 的验证。

部署 Oracle WebLogic Server for OCI 时,它会注册到与 Fusion Applications SaaS 实例关联的 Oracle Identity Cloud Service 实例,该实例本身为单点登录 (SSO) 联合,Fusion Applications 用作身份提供者。但是,这仅启用用户直通验证。要保护基于 REST 的 Web 服务,请在 Oracle Web Services ManagerOracle Identity Cloud Service 之间使用基于 OAuth 的令牌交换

所有启用 JRF 的域都包括 Oracle Web Services Manager,该 Oracle Web Services Manager 提供了一个策略框架,用于在整个组织内一致地管理和安全 Web 服务。Oracle Web Services ManagerOracle Identity Cloud Service 都支持 OAuth 协议。Web 服务客户机通过验证授权服务器 ( Oracle Identity Cloud Service ) 并提供授权授权来请求访问令牌。Oracle Web Services Manager 服务器端代理验证访问标记,然后接受客户机请求(如果有效)。

  1. 通过导入证书和创建全局策略附件为 Web 服务提供者配置 OAuth。Oracle WebLogic Server for OCI 产品文档中提供了为 Web 服务提供者配置 OAuth 的详细步骤。
  2. 通过导入证书和创建全局策略附件,在客户机域中的 Oracle Web Services ManagerOracle Identity Cloud Service 之间建立信任。全局策略会影响已部署到该域中的所有 Web 服务客户机。此外,还可以为单个应用程序创建策略。
    1. opc 用户身份连接到客户机域中的管理服务器节点。
      ssh -i <path_to_private_key> opc@<node_public_ip>
    2. 更改为 oracle 用户。
      sudo su - oracle
    3. 将以下文本复制并粘贴到名为 config_owsm_client.py 的新文件中。
      def config_policyset(policy_set_name,subject_type):
          try:
              beginWSMSession()
              createWSMPolicySet(policy_set_name,subject_type,resource_scope,desc,is_enabled)
              attachWSMPolicy(policy)
              setWSMPolicyOverride(policy,'token.uri',token_uri)
              setWSMPolicyOverride(policy,'oauth2.client.csf.key',csf_key)
              validateWSMPolicySet(policy_set_name)
          finally:
              commitWSMSession()
              displayWSMPolicySet(policy_set_name)
       
      ip='<admin_server_IP>'
      port='<admin_server_port>'
      user='<admin_user>'
      pwd='<password>'
      client_id='<idcs_app_client_id>'
      client_secret='<idcs_app_client_secret>'
      token_uri = '<token_endpoint>'
      dn_list = '<dn_list>'
    4. 更新 config_owsm_client.py 中的变量。
      • 此节点的 IP 地址
      • 管理服务器的端口号(默认值为 7001
      • 域管理员的用户名和口令
      • 为域创建的 Oracle Identity Cloud Service 中机密应用程序的客户端 ID 和密钥
      • Oracle Identity Cloud Service 标记端点
      • 用于在 Oracle Web Services Manager 中生成的证书的唯一判别名 (DN)
      • 部署到域的 Web 服务客户机应用程序的名称
      例如:
      ip='203.0.113.30'
      port='7001'
      user='weblogic'
      pwd='<password>'
      client_id='ABCD1234efgh5678IJKL9012'
      client_secret='<idcs_app_client_secret>'
      token_uri = 'https://idcs-1234abcd5678EFGH9012ijkl.identity.oraclecloud.com/oauth2/v1/token'
      dn_list = 'CN=OWSM, OU=ST, O=Oracle, L=RedWood, ST=CA, C=US'
      app_resource = 'resource=oauth-client'
    5. 将以下文本复制并粘贴到 config_owsm_client.py 中,并粘贴到变量声明之后。
      connect(user, pwd,'t3://' + ip + ':' + port)
      
      csf_key = 'idcs.oauth2.client.credentials'
      createCred(map='oracle.wsm.security',key=csf_key,user=client_id,password=client_secret)
      
      is_enabled = true
      policy = 'oracle/oauth2_config_client_policy'
      resource_scope = 'Domain("*")'
      desc = ''
      config_policyset('oauth-ps-config-rest-connection','rest-connection')
      config_policyset('oauth-ps-config-rest-client','rest-client')
      config_policyset('oauth-ps-config-ws-connection','ws-connection')
      config_policyset('oauth-ps-config-ws-client','ws-client')
      config_policyset('oauth-ps-config-ws-callback','ws-callback')
      refreshWSMCache()
      
      svc = getOpssService(name='KeyStoreService')
      try:
         svc.createKeyStore(appStripe='owsm', name='keystore', password='',permission=true)
      except Exception, ex:
         ex_msg = str(ex)
         if 'Keystore keystore in stripe owsm already exists' in ex_msg:
            print 'Keystore keystore in stripe owsm already exists. Continue...'
         else:
            raise
      svc.generateKeyPair(appStripe='owsm', name='keystore', password='', dn=dn_list, keysize='2048', alias='orakey', keypassword='')
       
      svc.exportKeyStoreCertificate(appStripe='owsm', name='keystore', password='', alias='orakey', keypassword='', type='TrustedCertificate', filepath='/tmp/orakey.cert')
      
    6. 使用 WLST 运行 config_owsm_client.py
      /u01/app/oracle/middleware/oracle_common/common/bin/wlst.sh config_owsm_client.py
      通过复查输出验证脚本是否成功运行。例如:
      ...
      Credential created successfully.
      Session started for modification.
      The policy set was created successfully in the session.
      Policy reference "oracle/oauth2_config_client_policy" added.
      ...
      Creating policy set oauth-ps-config-rest-connection in repository.
      Session committed successfully.
      ...
      Session started for modification.
      The policy set was created successfully in the session.
      Policy reference "oracle/oauth2_config_client_policy" added.
      ...
      Creating policy set oauth-ps-config-rest-client in repository.
      Session committed successfully.
      ...
      Keystore created
      Key pair generated
      Certificate exported.
    7. 将生成的证书文件的所有者更改为 opc 用户。
      exit
      sudo chown opc:opc /tmp/orakey.cert
    8. opc 用户身份下载证书文件。
      scp -i <path_to_private_key> opc@<node_public_ip>:/tmp/orakey.cert .
  3. 通过导入刚下载的 orakey.cert 证书并为基于 Fusion 的 Oracle Cloud 应用程序创建范围来更新 Web 服务客户机的预配置机密应用程序。
    1. Oracle Identity Cloud Service 控制台的导航菜单中,单击应用程序,然后单击为客户机域创建的机密应用程序。
    2. 单击配置选项卡,然后在客户机配置下,为客户机类型选择可信
    3. 对于证书,单击入。
    4. 对于证书别名,请输入唯一的名称。例如,orakey_jh305082020
    5. 选择在上一步中下载的文件 orakey.cert,然后单击入。
    6. 单击添加范围
    7. 选择 Oracle Applications Cloud (Fusion),范围与此示例类似:
      urn:opc:resource:fa:instanceid=201911110urn:opc:resource:consumer::all
    8. 单击添加,然后单击保存
  4. 使用 REST 服务的任何应用都需要 grantPermission。需要在进行身份传播之前授予 WSIdentityPermission,因为 Oracle WebLogic Server for OCI 默认情况下不允许使用它,否则将引发 AccessControlException。使用 wlst 应用 grantPermission。例如:
    grantPermission(appStripe=None, codeBaseURL='file:${common.components.home}/modules/oracle.wsm.common/wsm-agent-core.jar',principalClass=None,principalName=None,permClass='oracle.wsm.security.WSIdentityPermission',permTarget=app_resource, permActions='assert')
    
  5. You can deploy and validate this OAuth setup with Oracle WebLogic Server for OCI by deploying and testing the sample web service client application, as described in the Oracle WebLogic Server for OCI product documentation. Alternatively, you can deploy and test your own web service client application.

配置用于身份传播的 SOAP 服务

如果您的 Java 应用程序需要访问基于 Fusion 的 Oracle Applications SOAP Web 服务端点,则必须执行一些手动配置步骤以设置身份传播。

由于 SOAP Web 服务交互的安全配置要求您与 Oracle 技术支持联系以获取证书,因此 Oracle 建议尽可能改用 REST Web 服务协议。已预配置 REST 身份传播,这可避免此手动配置和支持票证要求。

Fusion Applications SOAP WSDL 包含二进制格式的 X509 证书,需要将其导入客户端计算机证书密钥库。这样,客户机应用程序可以加密对 Fusion Applications 的 Web 服务请求,并且 Fusion 应用程序环境可以成功解密请求。此外,还需要在客户端计算机上生成证书,然后将其导入 Fusion Applications 环境证书密钥库。Oracle 技术支持可以帮助将证书导入 Fusion Applications 环境。

这两个证书启用双向 SSL,这是 Fusion Applications 中 SAML 实施的要求,也是 WS-Security 1.1 规范的一部分。

要为 SOAP Web 服务的身份传播配置环境,请将 Oracle WebLogic Server for OCI 用作 SOAP 客户端,Fusion Applications 服务将是 SOAP 服务。您将使用 Oracle Web Services Manager (OWSM) 策略进行身份传播。

  1. 导出 Oracle WebLogic Server for OCI orakey 证书。
    1. 登录到 Oracle Enterprise Manager 控制台,例如导航到:
      http://<PublicIp>:7001/em
    2. 单击 WebLogic 域,选择安全性,然后选择密钥库
    3. 在密钥库表中,展开 owsm选择密钥库行,然后单击管理按钮。
    4. 选择 orakey 条目并记下该行中的“主题名称”值。
    5. 单击导出
      此时将打开“证书”窗口,其中显示 orakey 证书。
    6. 单击导出证书,然后将导出的文件另存为 orakey_<WLSOCI_NAME>.cert
  2. 向 My Oracle Support 提交服务请求以建立对 Fusion Applications 的信任。
    Oracle 技术支持将 Fusion Apps 实例配置为信任 WebLogic Server 中包含刚导出的证书信息的调用。您需要提供以下所有详细信息:
    • 您的 Oracle Fusion Applications 云服务名称、身份域和数据中心
    • 导出的 orakey 证书
    • Oracle 技术支持明确说明您的请求的说明。例如:
    我正在打开此 SR,以请求证书交换,以便在 Oracle WebLogic Server for OCI 市场实例和 Fusion Applications 云服务之间为 SOAP WS 建立信任并启用 SAML 断言。附加的证书来自 Oracle WebLogic Server for OCI 实例。我需要您将该证书导入我的 Fusion Applications 实例并导出 Fusion Applications OWSM 密钥证书和 OWSM Cloudca 证书(以 CN=<podname>_fasvc, DC=cloud, DC=com" and "CN=Cloud9CA-2, DC=cloud, DC=com 开头的证书),并将其附加到此 SR。此外,为了使证书交换生效,请根据需要重新启动 Fusion Applications。
    监视您的支持票证并提供 Oracle 技术支持请求的任何附加信息。Oracle 技术支持会将您的证书添加到 Fusion Applications 实例密钥库,并设置发布者信任以便为 SOAP Web 服务启用 SAML 断言。Oracle 技术支持将在任务完成时通知您,并向您发送以下项的副本:
    • 您的 Oracle Fusion 应用程序 OWSM orakey 证书
    • 您的 Oracle Fusion 应用程序 OWSM cloudca 证书
    下一步需要这些证书。
  3. 将 Fusion Applications orakey 证书导入 Oracle WebLogic Server for OCI
    1. 登录到 Oracle Enterprise Manager 控制台,例如导航到:
      http://<PublicIp>:7001/em
    2. 单击 WebLogic 域,选择安全性,然后选择密钥库
    3. 在密钥库表中,展开 owsm选择密钥库行,单击管理按钮,然后单击入。
    4. 导入证书框中,选择信任证书。输入别名,例如 orakey_mysaasenv。选择包含证书或证书链的文件选项,然后单击浏览...以选择 Oracle 技术支持提供的 orakey 证书。
    5. 使用 cloudca_faehyp71 等别名以相同的方式导入 cloudca 证书。
      表中可能已存在 cloudca 证书,但它可能不是正确的证书。导入 oracle 技术支持向您提供的 cloudca 证书后,可以通过检查其主题名称来验证您是否具有正确的证书。它应类似于以下示例,指向 Fusion Applications 实例:
      CN=FAEncryption,DC=cloud,DC=oracle,DC=com
现在,您应该看到您的证书及其别名在“管理证书:owsm/keystore”表中列出。