주:

Oracle Fusion Cloud Transportation Management 6.4.3에서 Single Sign-On 구현

소개

애플리케이션을 Oracle Cloud Infrastructure Identity and Access Management(OCI IAM) 도메인과 통합하여 다양한 방법을 통해 인증 및 SSO(Single Sign-On)를 활성화할 수 있습니다. 많은 애플리케이션이 SAML 및 OAuth과 같은 표준 프로토콜을 지원하지만 Oracle Fusion Cloud Transportation Management(Oracle Transportation Management)는 SSO에 대한 HTTP-헤더 기반 인증을 지원합니다.

앱 게이트웨이는 OCI IAM과 Oracle Transportation Management 간의 인증 프록시 역할을 합니다. Docker 이미지와 가상 어플라이언스 이미지라는 두 가지 배포 옵션으로 제공됩니다. 이 자습서에서는 Docker 기반 버전의 배포 및 사용에 대해 중점적으로 다룹니다.

솔루션 아키텍처.

SSO를 구현하면 MFA, 적응형 보안, 사인온 정책 등을 포함한 OCI IAM의 보안 기능을 활용하는 데 도움이 됩니다. 이를 통해 추가적인 액세스 제어 계층을 적용하여 Oracle Transportation Management 인스턴스를 더욱 보호할 수 있습니다.

목표

필수 조건

작업 1: 엔터프라이즈 애플리케이션 설정

계속하기 전에 Oracle Transportation Management에 대한 다음 세부정보가 필요합니다.

단계를 수행합니다:

  1. Oracle Cloud 콘솔 탐색 메뉴를 열고 ID 및 보안을 누릅니다. ID에서 도메인을 누릅니다. 도메인을 찾을 컴파트먼트를 선택합니다.

    도메인.

  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. ID에서 도메인을 선택한 다음 이전에 사용한 도메인을 누릅니다.

  2. 보안에서 앱 게이트웨이를 선택하고 앱 게이트웨이 생성을 누릅니다. 이름을 입력하고 앱 게이트웨이 추가를 누릅니다.

    앱 게이트웨이를 생성하는 중입니다.

  3. Add Host(호스트 추가)를 누릅니다. 호스트 식별자에 이름을 제공하고 호스트포트 아래에 앱 게이트웨이 서버 세부정보를 추가합니다. 아직 세부정보가 없는 경우 위치 표시자 값을 추가하고 태스크 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 콘솔에서 ID, 도메인, 도메인, 설정으로 이동하고 다운로드를 누릅니다.

  2. Identity Cloud Service용 앱 게이트웨이 통합 Docker 패키지에서 Docker 이미지를 다운로드합니다.

  3. 그런 다음 전자 지갑을 생성하는 데 사용할 AppGateway 전자 지갑 툴을 다운로드합니다.

  4. 다운로드한 zip 파일을 압축 해제합니다. 도커 이미지는 .tar.gz 형식입니다.

    다운로드.

  5. 로컬 시스템에서 앱 게이트웨이 서버로 이미지 파일 및 전자 지갑 폴더를 복사해야 합니다. 다음은 로컬 bash 셸에서 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. SSH(Secure Shell) 접속을 사용하여 인스턴스에 접속하거나, 이미 보유한 퍼블릭 키를 업로드할 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 및 기타 라이브러리를 설치하고 서비스를 시작합니다. 그런 다음 도커 서비스가 실행 중인지 확인합니다.

    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 요청의 일부로 다음 매개변수를 전달해야 합니다. 여기서 username은 데이터베이스에 있는 사용자의 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. 변경 사항이 적용되도록 애플리케이션 및 웹 계층을 재시작합니다.

  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를 참조하십시오.