注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成实验室时,请将这些值替换为特定于云环境的值。
在 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 实例。
目标
-
在 OCI 域中创建代表 Oracle Transportation Management 的企业应用程序。
-
在 OCI 域中创建应用网关并将其与企业应用关联。
-
下载用于设置 Docker 映像的必要文件。
-
创建 OCI 计算实例并更新网络配置以允许入站。
-
设置 Docker 映像以运行应用程序网关。
-
更新 Oracle Transportation Management 服务器配置的 SSO 配置。
-
验证登录流以确保 SSO 验证工作正常。
Prerequisites
-
访问 OCI 租户。有关详细信息,请参阅 Oracle Cloud Infrastructure 免费套餐。
-
OCI IAM 身份域的身份域管理员角色。有关更多信息,请参阅了解管理员角色。
-
Oracle Transportation Management 实例。
-
管理员对 Oracle Transportation Management 的应用层的访问权限。
任务 1:设置企业应用程序
在继续之前,需要提供有关 Oracle Transportation Management 的以下详细信息:
-
资源列表和保护级别:例如
/home
、/jobs
或/*
。此外,如果这些要求公共访问或用户验证。 -
具有运行 Oracle Transportation Management 应用程序的端口的主机/IP,例如源服务器。
-
Oracle Transportation Management 期待 OCI IAM 传递的 HTTP 标头,该标头将与 Oracle Transportation Management 数据库中的用户进行对账。在本教程中使用的是
appuid
。
执行相应步骤:
-
打开 Oracle Cloud 控制台导航菜单,然后单击 Identity & Security 。在身份下,单击域。选择要查找域的区间。
-
单击域的名称,然后在集成应用程序下,单击添加应用程序。
-
选择企业应用程序,然后单击启动工作流。
-
输入应用程序的名称。应用程序 URL 是应用程序网关服务器的主机和端口。这也可以是具有指向应用程序网关的重定向的 URL。选中在我的应用程序中显示。如果要将此应用程序仅限于授权用户,请选中必须向用户授予此应用程序。
-
再次单击 Next ,然后单击 Next 以跳过 OAuth 配置屏幕。
-
单击添加资源以添加 GTM 资源。提供名称和资源 URL。在我们的情况下,它将是
/.*
,因为我们正在保护所有资源。对使用正则表达式进行检查。 -
单击添加受管资源按钮,然后从资源菜单的上一步骤 6 中选择资源。选择 Authentication method(验证方法)作为 Form or Access token(表单或访问标记)。在标题下,输入
appuid
作为名称,输入User Name
作为值。注:在示例中,我们选择
Default
作为唯一资源,选择Form or Access token
作为验证方法来保护所有资源。这可确保仅允许已验证的用户访问。Oracle Transportation Management 还需要以用户名作为值的标头appuid
。我们已经确定这是我们收集详细信息的初始任务的一部分。 -
单击 Finish(完成),然后单击 Activate(激活)选项激活应用程序。
-
将某些用户/组分配给资源下的应用程序。您可以同时选择本地用户和联合用户,但请确保这些用户存在于 Oracle Transportation Management 数据库中。
任务 2:在 OCI IAM 中注册应用程序网关
应用网关位于应用前面,可以拦截请求,对用户进行身份验证,然后允许访问资源。
收集服务器详细信息:
继续操作之前,需要有关应用程序网关服务器的以下详细信息:
-
应用程序网关服务器的主机/IP 地址。这可以是 OCI 计算实例,也可以是在云或内部部署中运行的任何其他服务器。
-
应用程序网关服务器需要 Internet 连接才能访问 OCI IAM 域 URL。它还需要连接到上游 Oracle Transportation Management 应用。
-
运行上游应用程序的 Oracle Transportation Management 源服务器(主机和端口)的详细信息。
执行相应步骤:
-
在 Identity(身份)下,选择 Domains(域),然后单击之前使用的域。
-
在 Security(安全)下,选择 App Gateway(应用程序网关),然后单击 Create app gateway(创建应用程序网关)。输入名称并单击 Add app gateway(添加应用程序网关)。
-
单击 Add Host (添加主机)。在主机标识符中提供名称,并在主机和端口下添加应用程序网关服务器详细信息。如果您尚未获得详细信息,请添加占位符值,并在完成任务 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 访问应用程序网关服务器。证书和密钥的文件名和路径基于容器中的实际路径。
-
单击下一步以添加您在任务 1 中创建的企业应用程序和源服务器详细信息。
-
单击添加应用程序,然后从应用程序菜单中选择企业应用程序。在选择主机下,从步骤 3 中选择主机。在资源前缀中,输入
/
以代理企业应用程序。最后,在源服务器中,输入 Oracle Transportation Management 应用服务器主机名/IP。单击关闭。注:使用
/
作为资源前缀时,通过/
的每个请求都将转发到企业应用程序。 -
单击 Activate app gateway(激活应用程序网关)。记下 Client ID(客户端 ID)和 Client Secret(客户端密钥),因为以后需要这样做。
任务 3:下载必要的文件来设置容器并生成钱包
-
在 OCI 控制台中,转至身份、域、域、设置,然后单击下载。
-
从 App Gateway Unified Docker Package for Identity Cloud Service 下载 Docker 映像。
-
接下来,下载将用于生成 wallet 的 AppGateway Wallet 工具。
-
解压缩下载的 Zip 文件。docker 映像将采用
.tar.gz
格式。 -
您需要将映像文件和 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 计算实例并更新网络安全列表
注:如果要在您自己的环境中或其他云提供商中设置本地服务器/虚拟机,则可以使用以下步骤作为配置的参考。
-
在 OCI 控制台中,转至计算,然后单击实例。选择正确的区间。
-
单击创建实例。输入名称并选择可用性域。
-
选择 OS image 作为 Oracle Linux 8 并选择适当的配置。我们正在使用
E5 Flex/1 OCPU/8GB
内存。 -
选择要放置此位置的 VCN 和公共子网。
-
生成 SSH 密钥对以使用安全 Shell (Secure Shell,SSH) 连接来连接到实例,或者上载您已经拥有的公共密钥。
-
单击创建并记下 IPv4 地址。
-
打开子网,然后单击与其关联的安全列表。
-
单击 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 映像配置应用程序网关服务器
-
使用您的私钥通过 SSH 连接到任务 4 中创建的计算实例。
ssh -i /Users/mac/ssh_private.key opc@xxx.xxx.xxx.xxx
-
运行以下命令以安装 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
-
接下来,将登录用户(在本例中为
opc
)添加到 sudoers 列表中。sudo usermod -a -G docker $USER
-
打开防火墙端口以启用通信。我们在这里使用端口
443
。sudo firewall-cmd --zone=public --permanent --add-port=443/tcp sudo systemctl stop firewalld sudo systemctl start firewalld
-
创建目录并开始合并创建容器所需的文件。我们将
/home/opc/files
用于本教程。mkdir files cd files
-
使用 openSSL 生成自签名证书。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server-key.pem -out server-cert.pem
注:不建议在生产环境中使用自签名证书。请改用您的 CA 颁发的证书。
-
创建包含域信息的
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
中找到的名称服务器详细信息。 -
使用该工具生成 wallet 文件
cwallet.sso
。这是通过运行以下命令完成的。将Client ID
替换为前面提到的应用程序网关客户端 ID。单击 Return(返回)并在出现提示时输入客户机密钥。env LD_LIBRARY_PATH=./lib ./cgwallettool --create -i <Client ID>
-
现在,所有文件都已准备就绪,请更新每个文件的权限。这样可以确保所有者可以读取、写入和执行;而组和其他组只能读取和执行。
chmod -R 755 <filename>
-
将映像加载到本地系统信息库并进行验证。
sudo docker load -i appgateway-aarch64-25.1.03-2501230623.tar.gz docker images
-
基于文件创建容器并进行验证。执行以下命令后,容器的状态应为 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 。
-
要对 Oracle Transportation Management 进行 SSO 访问,调用代码需要在 HTTP 请求中传递以下参数(其中 username 是数据库中的用户的 GID)。将在 HTTP 标头中传递
appuid
标头,此标头的值应与数据库中的用户名匹配。appuid=username
-
登录到 Oracle Transportation Management 管理控制台并导航到 User Manager 。创建/更新用户,以确保存在与 OCI 用户匹配的有效用户名。
-
需要在
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
-
接下来,需要更新 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
-
备份文件,然后在配置中设置以下参数。
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>
-
重新启动应用程序和 Web 层以确保更改生效。
-
确保允许从应用程序网关服务器到 Oracle Transportation Management 实例的网络入站/出站。使用任务 4.8 进行参考。
任务 7:通过 SSO 登录并验证
-
从浏览器访问 servlet URL。示例 URL:
https://appgatewayserver.domain:443/GC3/glog.webserver.util.FrameGC3Servlet
。 -
请注意,应该有一个指向 OCI IAM 登录的重定向。输入该用户的身份证明并登录。
-
验证成功后,您将登录到 Oracle Transportation Management。
相关链接
确认
- 作者 — Tonmendu Bose(高级云工程师)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Implement Single Sign-On in Oracle Fusion Cloud Transportation Management 6.4.3
G36639-01
Copyright ©2025, Oracle and/or its affiliates.