|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +OAUTH2_PROXY_DOCKER_IMAGE=bitnami/oauth2-proxy:7.7.1 |
| 4 | + |
| 5 | +ensure_oauth2-proxy() { |
| 6 | + if docker ps | grep oauth2-proxy &> /dev/null; then |
| 7 | + print "oauth2-proxy already running ..." |
| 8 | + else |
| 9 | + start_oauth2-proxy |
| 10 | + fi |
| 11 | +} |
| 12 | +init_oauth2-proxy() { |
| 13 | + KEYCLOAK_CONFIG_PATH=${KEYCLOAK_CONFIG_PATH:-oauth/keycloak} |
| 14 | + KEYCLOAK_CONFIG_DIR=$(realpath ${TEST_DIR}/${KEYCLOAK_CONFIG_PATH}) |
| 15 | + |
| 16 | + OAUTH2_PROXY_CONFIG_PATH=${OAUTH2_PROXY_CONFIG_PATH:-oauth/oauth2-proxy} |
| 17 | + OAUTH2_PROXY_CONFIG_DIR=$(realpath ${TEST_DIR}/${OAUTH2_PROXY_CONFIG_PATH}) |
| 18 | + OAUTH2_PROXY_URL=${OAUTH_PROVIDER_URL} |
| 19 | + |
| 20 | + print "> KEYCLOAK_CONFIG_DIR: ${KEYCLOAK_CONFIG_DIR}" |
| 21 | + print "> KEYCLOAK_URL: ${KEYCLOAK_URL}" |
| 22 | + print "> KEYCLOAK_DOCKER_IMAGE: ${KEYCLOAK_DOCKER_IMAGE}" |
| 23 | + |
| 24 | + print "> OAUTH2_PROXY_CONFIG_DIR: ${OAUTH2_PROXY_CONFIG_DIR}" |
| 25 | + print "> OAUTH2_PROXY_URL: ${OAUTH2_PROXY_URL}" |
| 26 | + print "> OAUTH2_PROXY_DOCKER_IMAGE: ${OAUTH2_PROXY_DOCKER_IMAGE}" |
| 27 | + |
| 28 | + generate-ca-server-client-kpi oauth2-proxy $OAUTH2_PROXY_CONFIG_DIR |
| 29 | + |
| 30 | +} |
| 31 | +start_oauth2-proxy() { |
| 32 | + begin "Starting oauth2-proxy ..." |
| 33 | + |
| 34 | + init_oauth2-proxy |
| 35 | + kill_container_if_exist oauth2-proxy |
| 36 | + |
| 37 | + MOUNT_OAUTH2_PROXY_CONF_DIR=$CONF_DIR/oauth2-proxy |
| 38 | + MOUNT_KEYCLOAK_CONF_DIR=$CONF_DIR/keycloak |
| 39 | + |
| 40 | + mkdir -p $MOUNT_OAUTH2_PROXY_CONF_DIR |
| 41 | + mkdir -p $MOUNT_KEYCLOAK_CONF_DIR |
| 42 | + ${BIN_DIR}/gen-oauth2-proxy-yaml ${OAUTH2_PROXY_CONFIG_DIR} $ENV_FILE $MOUNT_OAUTH2_PROXY_CONF_DIR/alpha-config.yaml |
| 43 | + print "> EFFECTIVE OAUTH2_PROXY_CONFIG_FILE: $MOUNT_OAUTH2_PROXY_CONF_DIR/alpha-config.yaml" |
| 44 | + cp ${OAUTH2_PROXY_CONFIG_DIR}/*.pem $MOUNT_OAUTH2_PROXY_CONF_DIR |
| 45 | + cp ${KEYCLOAK_CONFIG_DIR}/*.pem $MOUNT_KEYCLOAK_CONF_DIR |
| 46 | + |
| 47 | + docker run \ |
| 48 | + --detach \ |
| 49 | + --name oauth2-proxy \ |
| 50 | + --net ${DOCKER_NETWORK} \ |
| 51 | + --publish 8442:8442 \ |
| 52 | + --env OAUTH2_PROXY_COOKIE_SECRET=${OAUTH2_PROXY_COOKIE_SECRET} \ |
| 53 | + --env OAUTH2_PROXY_EMAIL_DOMAINS="*" \ |
| 54 | + --env OAUTH2_PROXY_COOKIE_DOMAINS="" \ |
| 55 | + --env OAUTH2_PROXY_WHITELIST_DOMAINS="*" \ |
| 56 | + --env OAUTH2_PROXY_COOKIE_CSRF_PER_REQUEST="true" \ |
| 57 | + --env OAUTH2_PROXY_COOKIE_CSRF_EXPIRE="5m" \ |
| 58 | + --env OAUTH2_PROXY_REDIRECT_URL="https://oauth2-proxy:8442/oauth2/callback" \ |
| 59 | + --env OAUTH2_PROXY_TLS_KEY_FILE=/etc/oauth2-proxy/certs/server_oauth2-proxy_key.pem \ |
| 60 | + --env OAUTH2_PROXY_TLS_CERT_FILE=/etc/oauth2-proxy/certs/server_oauth2-proxy_certificate.pem \ |
| 61 | + -v ${MOUNT_KEYCLOAK_CONF_DIR}:/etc/keycloak \ |
| 62 | + -v ${MOUNT_OAUTH2_PROXY_CONF_DIR}:/etc/oauth2-proxy \ |
| 63 | + ${OAUTH2_PROXY_DOCKER_IMAGE} --alpha-config /etc/oauth2-proxy/alpha-config.yaml --cookie-secure=true |
| 64 | + |
| 65 | + wait_for_oidc_endpoint oauth2-proxy $OAUTH2_PROXY_URL $MOUNT_OAUTH2_PROXY_CONF_DIR/ca_oauth2-proxy_certificate.pem |
| 66 | + end "oauth2-proxy is ready" |
| 67 | + |
| 68 | +} |
0 commit comments