ノート:

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ヘッダー・ベースの認証をサポートしています。

アプリケーション・ゲートウェイは、OCI IAMとOracle Transportation Managementの間の認証プロキシとして機能します。これは、Dockerイメージと仮想アプライアンス・イメージの2つのデプロイメント・オプションで使用できます。このチュートリアルでは、Dockerベースのバージョンのデプロイと使用に重点を置いています。

ソリューション・アーキテクチャ

SSOを実装すると、MFA、適応型セキュリティ、サインオン・ポリシーなど、OCI IAMのセキュリティ機能を活用できます。これにより、追加のアクセス制御レイヤーを適用して、Oracle Transportation Managementインスタンスをさらに保護できます。

目的

前提条件

タスク1: エンタープライズ・アプリケーションの設定

続行する前に、Oracle Transportation Managementについて次の詳細が必要です:

次の手順に従います。

  1. Oracle Cloudコンソール・ナビゲーション・メニューを開き「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ドメイン」をクリックします。ドメインを検索するコンパートメントを選択します。

    ドメイン。

  2. ドメインの名前をクリックし、「統合アプリケーション」「アプリケーションの追加」をクリックします。

    アプリケーションの追加

  3. 「エンタープライズ・アプリケーション」を選択し、「ワークフローの起動」をクリックします。

    ワークフローの起動

  4. アプリケーションの名前を入力します。アプリケーションURLは、アプリケーション・ゲートウェイ・サーバーのホストおよびポートです。これは、アプリケーション・ゲートウェイにリダイレクトされるURLでもかまいません。「自分のアプリケーションに表示」にチェックマークを付けます。このアプリを承認済ユーザーのみに制限する場合は、「このアプリをユーザーに付与する必要があります」にチェックを入れます。

    名前とURLの詳細。

  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-gatewayサーバーについて次の詳細が必要です。

次の手順に従います。

  1. 「アイデンティティ」で、「ドメイン」を選択し、以前使用したドメインをクリックします。

  2. 「セキュリティ」で、「アプリケーション・ゲートウェイ」を選択し、「アプリケーション・ゲートウェイの作成」をクリックします。名前を入力し、「アプリケーション・ゲートウェイの追加」をクリックします。

    アプリケーション・ゲートウェイを作成しています。

  3. 「ホストの追加」をクリックします。「ホスト識別子」に名前を指定し、「ホスト」および「ポート」にアプリケーション・ゲートウェイ・サーバーの詳細を追加します。詳細がまだない場合は、プレースホルダ値を追加し、タスク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」チェック・ボックスを選択する必要があります。証明書と鍵のファイル名とパスは、コンテナ内の実際のパスに基づきます。

  5. 「次へ」をクリックして、タスク1で作成したエンタープライズ・アプリケーションおよびオリジン・サーバーの詳細を追加します。

  6. 「アプリケーションの追加」をクリックし、「アプリケーション」メニューからエンタープライズ・アプリケーションを選択します。「ホストの選択」で、ステップ3からホストを選択します。「リソース接頭辞」/と入力して、エンタープライズ・アプリケーションをプロキシします。最後に、「オリジン・サーバー」に、Oracle Transportation Managementアプリケーション・サーバーのホスト名/IPを入力します。「閉じる」をクリックします。

    アプリケーションを追加しています。

    ノート: /をリソース接頭辞として使用すると、/を超えるすべてのリクエストがエンタープライズ・アプリケーションに転送されます。

  7. 「アプリケーション・ゲートウェイのアクティブ化」をクリックします。後で必要になるため、「クライアントID」および「クライアント・シークレット」をメモします。

    アプリケーション・ゲートウェイをアクティブ化しています。

タスク3: コンテナの設定およびウォレットの生成に必要なファイルのダウンロード

  1. OCIコンソールで、「アイデンティティ」「ドメイン」、ドメイン、「設定」に移動して、「ダウンロード」をクリックします。

  2. Identity Cloud Service用のアプリケーション・ゲートウェイ統合DockerパッケージからDockerイメージをダウンロードします。

  3. 次に、ウォレットの生成に使用するAppGateway Walletツールをダウンロードします。

  4. ダウンロードしたzipファイルを解凍しますdockerイメージは.tar.gz形式になります。

    ダウンロードします。

  5. イメージ・ファイルおよびウォレット・フォルダをローカル・マシンからアプリケーション・ゲートウェイ・サーバーにコピーする必要があります。次の例は、ローカルのbashシェルからscpコマンドを使用して、ウォレット・ツール・フォルダの内容をサーバー内のfilesディレクトリに送信する方法を示しています。

    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イメージを使用したアプリケーション・ゲートウェイ・サーバーの構成

  1. 秘密キーを使用して、タスク4で作成されたコンピュート・インスタンスにSSHを実行します。

    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. Oracle Transportation ManagementへのSSOアクセスの場合、起動するコードは、HTTPリクエストの一部として次のパラメータを渡す必要があります(ユーザー名はデータベース内のユーザーのGIDです)。appuidヘッダーはHTTPヘッダーに渡され、このヘッダーの値はデータベースのユーザー名と一致する必要があります。

    appuid=username
    
  2. Oracle Transportation Management管理コンソールにログインし、「ユーザー・マネージャ」に移動します。ユーザーを作成/更新して、OCIユーザーと一致する有効なユーザー名があることを確認します。

    ユーザー・マネージャ。

  3. SSO構成は、glog.propertiesファイルで更新する必要があります。サーバーにログインし、/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. ブラウザからサーブレット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を参照してください。