Oracle Identity Mgmt

Deploy Oracle Identity Governance (OIG) 14.1.2.1.0 with Oracle Database 19c in Docker.

Minimum RAM: 12 GB recommended (8 GB possible at ~92% utilisation).

Prerequisites

Create an account at container-registry.oracle.com and accept licence terms for OIG and Database products.

N/ABASH
docker login container-registry.oracle.com

Pull & Tag Images

N/ABASH
docker pull container-registry.oracle.com/middleware/oig:14.1.2.1.0-jdk17-ol8-250315
docker tag container-registry.oracle.com/middleware/oig:14.1.2.1.0-jdk17-ol8-250315 \
  localhost/oracle/oig:14.1.2.1.0
 
docker pull container-registry.oracle.com/database/enterprise:19.3.0.0
docker tag container-registry.oracle.com/database/enterprise:19.3.0.0 \
  localhost/oracle/database:19.3.0.0-ee
 
git clone https://github.com/0xPThree/WebLogic

setenv.sh

setenv.shBASH
#!/bin/sh
 
NETWORK_NAME="containerizeddb_default"
NETWORK_SUBNET="172.30.0.0/24"
NETWORK_GATEWAY="172.30.0.1"
 
if ! docker network inspect "${NETWORK_NAME}" >/dev/null 2>&1; then
  docker network create \
    --subnet "${NETWORK_SUBNET}" \
    --gateway "${NETWORK_GATEWAY}" \
    "${NETWORK_NAME}"
fi
 
export DC_REGISTRY_OIG="localhost"
export DC_REGISTRY_DB="localhost"
export DC_DB_VERSION="19.3.0.0-ee"
export no_proxy="localhost,127.0.0.1,.dev.local,/var/run/docker.sock"
 
exportComposeEnv() {
  export DC_HOSTNAME="kiot.dev.local"
  export DC_HOST_GATEWAY="${NETWORK_GATEWAY}"
  export DC_DB_IP="172.30.0.2"
  export DC_DB_HOST="oimdb.dev.local"
  export DC_DB_PORT=1521
  export DC_DB_OEM_PORT=5500
  export DC_DB_SID="oimdb"
  export DC_DB_PDB="oimpdb"
  export DC_DB_SYSPWD="Passw0rd123"
  export DC_DB_DBDATA="/u01/app/docker/OIG/dbdata"
  export DC_WLS_ADMIN_PASSWORD="Passw0rd123"
  export OIG_IMAGE="localhost/oracle/oig:14.1.2.1.0"
  export DC_RCU_SCHPWD="Passw0rd123"
  export DC_RCU_OIMPFX="OIM03"
  export DC_DOMAIN_HOME="/u01/app/docker/OIG/domain"
}
 
exportComposeEnv
mkdir -p "${DC_DOMAIN_HOME}" "${DC_DOMAIN_HOME}/domains" \
  "${DC_DOMAIN_HOME}/domains/ConnectorDefaultDirectory" "${DC_DB_DBDATA}"
chmod 777 "${DC_DOMAIN_HOME}" "${DC_DB_DBDATA}"

/etc/hosts

N/A
172.30.0.1 kiot.dev.local
172.30.0.2 oimdb.dev.local

docker-compose.yaml

docker-compose.yamlYAML
x-common: &default-common
  ulimits:
    nofile:
      soft: 65536
      hard: 65536
    nproc:
      soft: 16384
      hard: 16384
  extra_hosts:
    - "${DC_HOSTNAME}:${DC_HOST_GATEWAY}"
    - "${DC_DB_HOST}:${DC_DB_IP}"
 
services:
  oimdb:
    <<: *default-common
    image: ${DC_REGISTRY_DB}/oracle/database:${DC_DB_VERSION}
    container_name: oimdb
    ports:
      - "${DC_DB_PORT}:1521"
      - "${DC_DB_OEM_PORT}:5500"
    environment:
      - ORACLE_SID=${DC_DB_SID}
      - ORACLE_PDB=${DC_DB_PDB}
      - ORACLE_PWD=${DC_DB_SYSPWD}
    volumes:
      - ${DC_DB_DBDATA}:/opt/oracle/oradata
 
  oimadmin:
    <<: *default-common
    image: ${OIG_IMAGE}
    container_name: oimadmin
    hostname: oimadmin
    command: /bin/bash -c "sleep 5s; /u01/oracle/dockertools/createDomainAndStart.sh"
    ports:
      - "7001:7001"
    environment:
      - ADMIN_HOST=${DC_HOSTNAME}
      - ADMIN_PASSWORD=${DC_WLS_ADMIN_PASSWORD}
      - CONNECTION_STRING=${DC_DB_HOST}:${DC_DB_PORT}/${DC_DB_PDB}
      - DB_PASSWORD=${DC_DB_SYSPWD}
      - DB_SCHEMA_PASSWORD=${DC_RCU_SCHPWD}
      - RCUPREFIX=${DC_RCU_OIMPFX}
    volumes:
      - ${DC_DOMAIN_HOME}:/u01/oracle/user_projects
 
  soams:
    <<: *default-common
    image: ${OIG_IMAGE}
    container_name: soams
    hostname: soams
    depends_on:
      - oimadmin
    command: /bin/bash -c "/u01/oracle/dockertools/startMS.sh"
    ports:
      - "8001:8001"
      - "8002:8002"
      - "8003:8003"
    environment:
      - ADMIN_HOST=${DC_HOSTNAME}
      - ADMIN_PORT=7001
      - ADMIN_PASSWORD=${DC_WLS_ADMIN_PASSWORD}
      - MANAGED_SERVER=soa_server1
      - MS_HOST=${DC_HOSTNAME}
    volumes:
      - ${DC_DOMAIN_HOME}:/u01/oracle/user_projects
 
  oimms:
    <<: *default-common
    image: ${OIG_IMAGE}
    container_name: oimms
    hostname: oimms
    depends_on:
      - oimadmin
    command: /bin/bash -c "/u01/oracle/dockertools/startMS.sh"
    ports:
      - "14000:14000"
      - "14001:14001"
      - "14002:14002"
    environment:
      - ADMIN_HOST=${DC_HOSTNAME}
      - ADMIN_PORT=7001
      - ADMIN_PASSWORD=${DC_WLS_ADMIN_PASSWORD}
      - MANAGED_SERVER=oim_server1
      - MS_HOST=${DC_HOSTNAME}
    volumes:
      - ${DC_DOMAIN_HOME}:/u01/oracle/user_projects
 
networks:
  default:
    external: true
    name: containerizeddb_default

Startup

⚠ Warning — Start containers in the correct order from the same terminal session. The environment is very sensitive.

N/ABASH
. ./setenv.sh
 
# 1. Start database (~15 min)
docker compose up -d oimdb
docker logs -f oimdb
# Wait for: "DATABASE IS READY TO USE!"
 
# 2. Start WebLogic Admin Server
docker compose up -d oimadmin
docker logs -f oimadmin
# Wait for: "Admin server is running"
 
# 3. Start SOA Managed Server
docker compose up -d soams
docker logs -f soams
 
# 4. Start OIM Managed Server
docker compose up -d oimms
docker logs -f oimms

Access

ServiceURLCredentials
WebLogic Consolehttp://kiot.dev.local:7001/consoleweblogic / Passw0rd123
Enterprise Managerhttp://kiot.dev.local:7001/emweblogic / Passw0rd123
Identity Self Servicehttp://kiot.dev.local:14000/identityweblogic / Passw0rd123
System Administrationhttp://kiot.dev.local:14000/sysadminxelsysadm / Passw0rd123

Troubleshooting

OOM errorsulimits are already configured in the compose file above.

Domain config failed — Password complexity not met. Ensure 8+ chars with mixed case and numbers.

Container hangs — Insufficient RAM. Increase allocation.

Disclaimer

All content published on exploit.se is intended strictly for educational and informational purposes. Research is conducted responsibly under coordinated disclosure principles.

Techniques, tools, and writeups shared on this site are meant to advance the security community's understanding of vulnerabilities and defences. They are not intended to encourage or enable unauthorised access to any system.

The author bears no responsibility for any misuse of information presented here.

Cookie Settings

This site does not use cookies, analytics, or any third-party tracking technologies.

No personal data is collected. No fingerprinting. No ads. You are not the product.


 ██╗ ██████╗ ███████╗██╗███████╗███╗   ██╗██████╗
 ██║██╔═══██╗██╔════╝██║██╔════╝████╗  ██║██╔══██╗
 ██║██║   ██║█████╗  ██║█████╗  ██╔██╗ ██║██║  ██║
 ██║██║   ██║██╔══╝  ██║██╔══╝  ██║╚██╗██║██║  ██║
 ██║╚██████╔╝██║     ██║███████╗██║ ╚████║██████╔╝
 ╚═╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝╚═╝  ╚═══╝╚═════╝
You found me.
↑↑↓↓←→←→ B A  ·  click to close