附註:

在 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) 則支援 SSO 的 HTTP 標頭式認證。

App 閘道可作為 OCI IAM 與 Oracle Transportation Management 之間的認證代理主機。有兩種部署選項可供使用:Docker 映像檔和虛擬設備映像檔。本教學課程著重於部署和使用 Docker 版本。

解決方案構架。

導入 SSO 有助於利用 OCI IAM 的安全功能,包括 MFA、調適型安全性、登入原則等等。這有助於強制實行一層額外的存取控制,進而進一步保護您的 Oracle Transportation Management 執行處理。

目標

必備條件

任務 1:設定企業應用程式

繼續之前,必須先提供下列 Oracle Transportation Management 詳細資訊:

遵循其步驟:

  1. 開啟「Oracle Cloud 主控台」導覽功能表,然後按一下識別與安全性。在 Identity 下,按一下 Domain 。選擇要尋找您網域的區間。

    網域。

  2. 按一下網域的名稱,然後在整合的應用程式底下,按一下新增應用程式

    新增應用程式。

  3. 選取企業應用程式,然後按一下啟動工作流程

    啟動工作流程。

  4. 輸入應用程式的名稱。應用程式 URL 是應用程式閘道伺服器的主機和連接埠。這也可以是重新導向至 App 閘道的 URL。勾選在我的 App 中顯示。如果您只想將此 App 限制為授權的使用者,請勾選必須授予此 App 的使用者

    名稱與網址詳情 。

  5. 按一下下一步,然後再次按一下下一步,以略過 OAuth 組態畫面。

  6. 按一下新增資源以新增 GTM 資源。提供名稱和資源 URL。在我們的案例中,會是 /.*,因為我們正在保護所有資源。勾選使用正規表示式

    新增資源。

  7. 按一下新增受管理資源按鈕,然後從資源功能表的上一個步驟 6 選取資源。選取認證方法作為表單或存取權杖。在標頭下,輸入 appuid 作為名稱,輸入 User Name 作為

    正在新增受管理資源。

    注意:在我們的範例中,我們選取 Default 作為唯一的資源,而 Form or Access token 作為保護所有資源的認證方法。這確保只有認證的使用者才能存取。Oracle Transportation Management 也需要使用使用者名稱作為值的標頭 appuid。我們已將此視為收集詳細資料之初始任務的一部分。

  8. 按一下完成,然後按一下啟動選項來啟動應用程式。

  9. 將部分使用者 / 群組指定給資源底下的應用程式。您可以選擇本機和同盟使用者,但請確定這些使用者存在於 Oracle Transportation Management 資料庫中。

工作 2:在 OCI IAM 中註冊 App 閘道

App Gateway 位於您的應用程式前方、攔截要求、驗證使用者,然後允許存取資源。

收集伺服器詳細資訊:

繼續之前,需要下列有關應用程式閘道伺服器的詳細資訊:

遵循其步驟:

  1. 識別下,選取網域,然後按一下您之前使用的網域。

  2. 安全底下,選取應用程式閘道,然後按一下建立應用程式閘道。輸入名稱並按一下新增 App 閘道

    正在建立 App 閘道。

  3. 按一下新增主機。在主機 ID 中提供名稱,然後在主機連接埠底下新增 App 閘道伺服器詳細資訊。如果您還沒有詳細資訊,請新增預留位置值,並在完成任務 4 之後重新瀏覽此步驟。

    正在新增主機。

  4. 按一下啟用 SSL 核取方塊,在其他特性中輸入下方,然後按一下新增主機

    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 存取 App Gateway Server。憑證和金鑰的檔案名稱和路徑會根據容器中的實際路徑而定。

  5. 按一下下一步,新增您在「工作 1」中建立的企業應用程式和來源伺服器詳細資訊。

  6. 按一下新增應用程式,然後從應用程式功能表中選取企業應用程式。在選取主機下,從步驟 3 選擇主機。在資源首碼中,輸入 / 以代理企業應用程式。最後,在來源伺服器中輸入 Oracle Transportation Management 應用程式伺服器主機名稱 /IP。按一下關閉

    正在新增應用程式。

    注意:當您使用 / 作為資源前置碼時,超過 / 的每個要求都會轉送至企業應用程式。

  7. 按一下啟用 App 閘道。請記下從屬端 ID從屬端密碼,稍後將需要此資訊。

    正在啟用 App 閘道。

作業 3:下載必要檔案以設定容器並產生公事包

  1. 在 OCI 主控台中,前往身分識別網域、您的網域、設定值,然後按一下下載

  2. App Gateway Unified Docker Package for Identity Cloud Service 下載 Docker 影像。

  3. 接著,下載將用來產生公事包的 AppGateway 公事包工具

  4. 解壓縮下載的 zip 檔案。停駐程式影像的格式為 .tar.gz

    下載項目。

  5. 您必須將映像檔和公事包資料夾從本機機器複製到您的 App 閘道伺服器。以下範例顯示如何使用本機 bash Shell 中的 scp 命令,將公事包工具資料夾的內容傳送至伺服器中的檔案目錄。

    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 影像作為 Oracle Linux 8 ,然後選取適當的資源配置。我們正在使用 E5 Flex/1 OCPU/8GB 記憶體。

  4. 選取要放置此項目的 VCN 和公用子網路。

  5. 產生使用 Secure Shell (SSH) 連線連線至執行處理的 SSH 金鑰組,或上傳您已經擁有的公開金鑰。

  6. 按一下建立,然後記下 IPv4 位址。

  7. 開啟子網路,然後按一下相關的安全清單。

  8. 按一下新增傳入規則並新增下方,以允許透過 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 映像檔設定 App Gateway Server

  1. 使用您的私密金鑰登入在 Task 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. 使用工具產生公事包檔案 cwallet.sso。這是透過執行下列指令來完成。將 Client ID 取代為先前記下的應用程式閘道從屬端 ID。按一下返回,然後在出現提示時輸入用戶端密碼。

    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. 若要讓 SSO 存取 Oracle Transportation Management,呼叫程式碼必須傳入下列參數作為 HTTP 要求的一部分 (其中使用者名稱是資料庫中使用者的 GID)。appuid 標頭會在 HTTP 標頭中傳送,此標頭的值應該與資料庫中的使用者名稱相符。

    appuid=username
    
  2. 登入 Oracle Transportation Management 管理主控台,然後瀏覽至使用者管理員。建立 / 更新使用者,以確定有與 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. 確定允許從 App 閘道伺服器傳入 / 傳出至您的 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 Help Center