注意:

在 Oracle Fusion Cloud Transportation Management 6.4.3 中实施单点登录

简介

您可以将应用程序与 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 域集成,以便通过各种方法启用验证和单点登录 (SSO)。虽然许多应用都支持 SAML 和 OAuth 等标准协议,但 Oracle Fusion Cloud Transportation Management (Oracle Transportation Management) 支持基于 HTTP 头的 SSO 验证。

应用程序网关充当 OCI IAM 与 Oracle Transportation Management 之间的验证代理。它有两种部署选项:Docker 映像和虚拟设备映像。本教程重点介绍部署和使用基于 Docker 的版本。

解决方案体系结构。

实施 SSO 有助于利用 OCI IAM 的安全功能,包括 MFA、自适应安全性、登录策略等。这有助于实施额外的访问控制层,以进一步保护 Oracle Transportation Management 实例。

目标

Prerequisites

任务 1:设置企业应用程序

在继续之前,需要提供有关 Oracle Transportation Management 的以下详细信息:

执行相应步骤:

  1. 打开 Oracle Cloud 控制台导航菜单,然后单击 Identity & Security 。在身份下,单击。选择要查找域的区间。

    域。

  2. 单击域的名称,然后在集成应用程序下,单击添加应用程序

    添加应用程序。

  3. 选择企业应用程序,然后单击启动工作流

    启动工作流。

  4. 输入应用程序的名称。应用程序 URL 是应用程序网关服务器的主机和端口。这也可以是具有指向应用程序网关的重定向的 URL。选中在我的应用程序中显示。如果要将此应用程序仅限于授权用户,请选中必须向用户授予此应用程序

    名称和 URL 详细信息。

  5. 再次单击 Next ,然后单击 Next 以跳过 OAuth 配置屏幕。

  6. 单击添加资源以添加 GTM 资源。提供名称和资源 URL。在我们的情况下,它将是 /.*,因为我们正在保护所有资源。对使用正则表达式进行检查。

    添加资源。

  7. 单击添加受管资源按钮,然后从资源菜单的上一步骤 6 中选择资源。选择 Authentication method(验证方法)作为 Form or Access token(表单或访问标记)。在标题下,输入 appuid 作为名称,输入 User Name 作为

    添加托管资源。

    注:在示例中,我们选择 Default 作为唯一资源,选择 Form or Access token 作为验证方法来保护所有资源。这可确保仅允许已验证的用户访问。Oracle Transportation Management 还需要以用户名作为值的标头 appuid。我们已经确定这是我们收集详细信息的初始任务的一部分。

  8. 单击 Finish(完成),然后单击 Activate(激活)选项激活应用程序。

  9. 将某些用户/组分配给资源下的应用程序。您可以同时选择本地用户和联合用户,但请确保这些用户存在于 Oracle Transportation Management 数据库中。

任务 2:在 OCI IAM 中注册应用程序网关

应用网关位于应用前面,可以拦截请求,对用户进行身份验证,然后允许访问资源。

收集服务器详细信息:

继续操作之前,需要有关应用程序网关服务器的以下详细信息:

执行相应步骤:

  1. Identity(身份)下,选择 Domains(域),然后单击之前使用的域。

  2. Security(安全)下,选择 App Gateway(应用程序网关),然后单击 Create app gateway(创建应用程序网关)。输入名称并单击 Add app gateway(添加应用程序网关)

    正在创建应用程序网关。

  3. 单击 Add Host (添加主机)。在主机标识符中提供名称,并在主机端口下添加应用程序网关服务器详细信息。如果您尚未获得详细信息,请添加占位符值,并在完成任务 4 后重新访问此步骤。

    正在添加主机。

  4. 单击 SSL enabled 复选框,在 Additional properties(其他属性)中输入以下内容,然后单击 Add host(添加主机)

    ssl_certificate /usr/local/nginx/conf/cert.pem;
    ssl_certificate_key /usr/local/nginx/conf/key.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    

    注:我们不会在负载平衡器终止 SSL。因此,我们必须选中 SSL 复选框,以允许通过 SSL 访问应用程序网关服务器。证书和密钥的文件名和路径基于容器中的实际路径。

  5. 单击下一步以添加您在任务 1 中创建的企业应用程序和源服务器详细信息。

  6. 单击添加应用程序,然后从应用程序菜单中选择企业应用程序。在选择主机下,从步骤 3 中选择主机。在资源前缀中,输入 / 以代理企业应用程序。最后,在源服务器中,输入 Oracle Transportation Management 应用服务器主机名/IP。单击关闭

    正在添加应用。

    注:使用 / 作为资源前缀时,通过 / 的每个请求都将转发到企业应用程序。

  7. 单击 Activate app gateway(激活应用程序网关)。记下 Client ID(客户端 ID)Client Secret(客户端密钥),因为以后需要这样做。

    正在激活应用网关。

任务 3:下载必要的文件来设置容器并生成钱包

  1. 在 OCI 控制台中,转至身份、域、设置,然后单击下载

  2. App Gateway Unified Docker Package for Identity Cloud Service 下载 Docker 映像。

  3. 接下来,下载将用于生成 wallet 的 AppGateway Wallet 工具

  4. 解压缩下载的 Zip 文件。docker 映像将采用 .tar.gz 格式。

    下载。

  5. 您需要将映像文件和 Wallet 文件夹从本地计算机复制到应用程序网关服务器。下面是一个示例,说明如何使用本地 bash shell 中的 scp 命令将 wallet 工具文件夹的内容发送到服务器中的文件目录。

    scp -i /Users/mac/ssh_private.key -r /Users/mac/idcs-appgateway-wallet-tool-23.2.92-2301160723 opc@xxx.xxx.xxx.xxx:files
    

任务 4:创建 OCI 计算实例并更新网络安全列表

注:如果要在您自己的环境中或其他云提供商中设置本地服务器/虚拟机,则可以使用以下步骤作为配置的参考。

  1. 在 OCI 控制台中,转至计算,然后单击实例。选择正确的区间。

  2. 单击创建实例。输入名称并选择可用性域。

  3. 选择 OS image 作为 Oracle Linux 8 并选择适当的配置。我们正在使用 E5 Flex/1 OCPU/8GB 内存。

  4. 选择要放置此位置的 VCN 和公共子网。

  5. 生成 SSH 密钥对以使用安全 Shell (Secure Shell,SSH) 连接来连接到实例,或者上载您已经拥有的公共密钥。

  6. 单击创建并记下 IPv4 地址。

  7. 打开子网,然后单击与其关联的安全列表。

  8. 单击 Add Ingress Rules(添加入站规则)并添加以下内容,以允许通过 TCP 和 SSH 入站 HTTPS。

    Source Type: CIDR
    Source CIDR: 0.0.0.0/0
    IP Protocol: TCP
    Source Port Range: All
    Destination Port Range: 443
    
    Source Type: CIDR
    Source CIDR: 0.0.0.0/0
    IP Protocol: SSH
    Source Port Range: All
    Destination Port Range: 22
    

任务 5:使用 Docker 映像配置应用程序网关服务器

  1. 使用您的私钥通过 SSH 连接到任务 4 中创建的计算实例。

    ssh -i /Users/mac/ssh_private.key opc@xxx.xxx.xxx.xxx
    
  2. 运行以下命令以安装 Docker 和其他库,然后启动服务。然后,验证 docker 服务是否正在运行。

    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    sudo dnf install libnsl*
    sudo systemctl enable docker
    sudo systemctl start docker
    
    sudo systemctl status docker
    
  3. 接下来,将登录用户(在本例中为 opc)添加到 sudoers 列表中。

    sudo usermod -a -G docker $USER
    
  4. 打开防火墙端口以启用通信。我们在这里使用端口 443

    sudo firewall-cmd --zone=public --permanent --add-port=443/tcp
    sudo systemctl stop firewalld
    sudo systemctl start firewalld
    
  5. 创建目录并开始合并创建容器所需的文件。我们将 /home/opc/files 用于本教程。

    mkdir files
    cd files
    
  6. 使用 openSSL 生成自签名证书。

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server-key.pem -out server-cert.pem
    

    注:不建议在生产环境中使用自签名证书。请改用您的 CA 颁发的证书。

  7. 创建包含域信息的 appgateway 环境文件。

    vi appgateway-env
    
    CG_APP_TENANT=idcs-XXX
    IDCS_INSTANCE_URL=https://idcs-XXX.identity.oraclecloud.com:443
    NGINX_DNS_RESOLVER=<resolver IP>
    

    注:XXX 替换为 OCI IAM 域详细信息。对于 DNS 解析程序 IP,请参阅文件 /etc/resolv.conf 中找到的名称服务器详细信息。

    环境详细信息。

  8. 使用该工具生成 wallet 文件 cwallet.sso。这是通过运行以下命令完成的。将 Client ID 替换为前面提到的应用程序网关客户端 ID。单击 Return(返回)并在出现提示时输入客户机密钥。

    env LD_LIBRARY_PATH=./lib ./cgwallettool --create -i <Client ID>
    
  9. 现在,所有文件都已准备就绪,请更新每个文件的权限。这样可以确保所有者可以读取、写入和执行;而组和其他组只能读取和执行。

    chmod -R 755 <filename>
    
  10. 将映像加载到本地系统信息库并进行验证。

    sudo docker load -i appgateway-aarch64-25.1.03-2501230623.tar.gz
    docker images
    
  11. 基于文件创建容器并进行验证。执行以下命令后,容器的状态应为 UP

    sudo docker run -p 443:443 -d --name appgateway --env-file /home/opc/files/appgateway-env --env HOST_MACHINE=`hostname -f` --volume /home/opc/files/cwallet.sso:/usr/local/nginx/conf/cwallet.sso --volume /home/opc/files/server-key.pem:/usr/local/nginx/conf/key.pem --volume /home/opc/files/server-cert.pem:/usr/local/nginx/conf/cert.pem local.local/idcs-appgateway-docker_linux_arm64_v8:25.1.03-2501230623
    
    docker ps
    

任务 6:更新 Oracle Transportation Management 中的 SSO 配置

注:本教程特定于 Oracle Transportation Management 6.4.3。有关设置各种参数的更多详细信息,请查看 Oracle Transportation Management 的安全指南,网址为:安全指南。有关其他版本,请参阅 Transportation and Global Trade Management On-Premise Documentation Web Library

  1. 要对 Oracle Transportation Management 进行 SSO 访问,调用代码需要在 HTTP 请求中传递以下参数(其中 username 是数据库中的用户的 GID)。将在 HTTP 标头中传递 appuid 标头,此标头的值应与数据库中的用户名匹配。

    appuid=username
    
  2. 登录到 Oracle Transportation Management 管理控制台并导航到 User Manager 。创建/更新用户,以确保存在与 OCI 用户匹配的有效用户名。

    用户经理。

  3. 需要在 glog.properties 文件上更新 SSO 配置。登录到服务器并导航到 /app/appgtmdevl/Oracle/gtm643/glog/config。更新以下参数。

    正在打开属性文件。

    glog.security.sso=true
    glog.security.sso.app0idName=appuid
    glog.security.sso.appUidLoCation=3
    glog.security.sso.logoutButton=true
    glog.security.sso.logoutUrl-https://idcs-XXX.identity.oraclecloud.com/sso/vl/user/logout
    

    编辑属性。

  4. 接下来,需要更新 OHS 配置。请参见以下路径示例以查找 httpd.conf 文件。

    cd /app/OTMappserver/Oracle/Middleware/Oracle_Home/user_projects/domains/otmweb/config/fmwconfig/components/OHS/OTMappserver
    
    cd /app/OTMappserver/Oracle/Middleware/Oracle_Home/user_projects/domains/otmweb/config/fmwconfig/components/OHS/instances/OTMappserver
    
  5. 备份文件,然后在配置中设置以下参数。

    SimulateHttps On
    AddCertHeader HTTPS
    

    示例:

    Listen 1234
    NameVirtualHost *:1234
    <VirtualHost *:1234>
    ServerName  XXX.XXX
    DocumentRoot  /app/XXX/Oracle/gtm643/web/htdocs
    DirectoryIndex  index.htm
    <IfModule ossl_module>
    SSLEngine off
    </IfModule>
    <Directory "/app/XXX/Oracle/gtm643/web/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>
    Header set Cache-Control maxage=21600
    ExpiresActive On
    ExpiresDefault "access plus 6 hours"
    SimulateHttps On
    AddCertHeader HTTPS
    </VirtualHost>
    
  6. 重新启动应用程序和 Web 层以确保更改生效。

  7. 确保允许从应用程序网关服务器到 Oracle Transportation Management 实例的网络入站/出站。使用任务 4.8 进行参考。

任务 7:通过 SSO 登录并验证

  1. 从浏览器访问 servlet URL。示例 URL:https://appgatewayserver.domain:443/GC3/glog.webserver.util.FrameGC3Servlet

  2. 请注意,应该有一个指向 OCI IAM 登录的重定向。输入该用户的身份证明并登录。

  3. 验证成功后,您将登录到 Oracle Transportation Management。

    Oracle Transportation Management 控制台。

确认

更多学习资源

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

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