summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <klishinm@vmware.com>2023-03-21 18:27:32 +0400
committerGitHub <noreply@github.com>2023-03-21 18:27:32 +0400
commite93064a5a0674f58632d63f196ffd6b3ecf63b4e (patch)
treee9918e534052436e31b26ba9c104f8ce8133134e
parent318d34ae6b5e91e181b0ef44f3bb3d9ad46736c2 (diff)
parent67b952c28c22894d7f1aa7c4811b12eeebe7e224 (diff)
downloadrabbitmq-server-git-e93064a5a0674f58632d63f196ffd6b3ecf63b4e.tar.gz
Merge pull request #7687 from rabbitmq/refactor-selenium-tests
Refactor selenium tests
-rw-r--r--deps/rabbitmq_management/selenium/README.md37
-rwxr-xr-xdeps/rabbitmq_management/selenium/bin/find-template-files44
-rwxr-xr-xdeps/rabbitmq_management/selenium/bin/gen-env-file20
-rwxr-xr-xdeps/rabbitmq_management/selenium/bin/gen-keycloak-json18
-rwxr-xr-xdeps/rabbitmq_management/selenium/bin/gen-rabbitmq-conf17
-rwxr-xr-xdeps/rabbitmq_management/selenium/bin/gen-uaa-yml17
-rw-r--r--deps/rabbitmq_management/selenium/bin/suite_template431
-rw-r--r--deps/rabbitmq_management/selenium/fakeportal/app.js2
-rwxr-xr-xdeps/rabbitmq_management/selenium/run-suites.sh4
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/basic-auth-behind-proxy.sh26
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/basic-auth.sh18
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/definitions.sh17
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/exchanges.sh17
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/limits.sh17
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/mgt-only-exchanges.sh17
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa-and-prefix.sh35
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa.sh32
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/oauth-with-keycloak.sh29
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/oauth-with-uaa-and-mgt-prefix.sh10
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/oauth-with-uaa-down.sh20
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/oauth-with-uaa-with-mgt-prefix.sh33
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/oauth-with-uaa.sh28
-rw-r--r--deps/rabbitmq_management/selenium/suites/suite_template312
-rwxr-xr-xdeps/rabbitmq_management/selenium/suites/vhosts.sh17
-rw-r--r--deps/rabbitmq_management/selenium/test/.env.docker2
-rw-r--r--deps/rabbitmq_management/selenium/test/.env.docker.proxy1
-rw-r--r--deps/rabbitmq_management/selenium/test/.env.local2
-rw-r--r--deps/rabbitmq_management/selenium/test/.env.local.proxy1
-rw-r--r--deps/rabbitmq_management/selenium/test/basic-auth/Makefile2
-rw-r--r--deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.conf3
-rw-r--r--deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.config8
-rw-r--r--deps/rabbitmq_management/selenium/test/httpd-proxy/enabled_plugins1
-rw-r--r--deps/rabbitmq_management/selenium/test/httpd-proxy/rabbitmq.config8
-rw-r--r--deps/rabbitmq_management/selenium/test/mgt-only/logging.conf (renamed from deps/rabbitmq_management/selenium/test/httpd-proxy/logging.conf)0
-rw-r--r--deps/rabbitmq_management/selenium/test/mgt-only/rabbitmq.conf4
-rw-r--r--deps/rabbitmq_management/selenium/test/mgt-only/rabbitmq.config12
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.docker.fakeportal1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.docker.keycloak1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.docker.uaa1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.fakeportal-oauth-provider1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.keycloak3
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.keycloak-oauth-provider1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.local.fakeportal1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.local.keycloak1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.local.uaa2
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.mgt-prefix1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.uaa4
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/.env.uaa-oauth-provider1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/Makefile18
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/keycloak-localhost/h2/keycloakdb.mv.dbbin2174976 -> 0 bytes
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/keycloak/h2/keycloakdb.mv.dbbin2174976 -> 0 bytes
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/keycloak/test-realm.json2428
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated-localhost.config30
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated-with-prefix.config31
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated.conf12
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated.config30
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost-keycloak.config32
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.conf13
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.config32
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-keycloak.config31
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-mgt-prefix.config33
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq.conf11
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq.config32
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq.idp-initiated.conf1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq.mgt-prefix.conf1
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/rabbitmq.uaa.conf1
-rwxr-xr-xdeps/rabbitmq_management/selenium/test/oauth/test.sh5
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/log4j2.properties30
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/signing-key.pem9
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/uaa.yml184
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/uaa/uaa.yml9
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-idp-down/landing.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-uaa-down/landing.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/happy-login.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/happy-login.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/landing.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/landing.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/logout.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/logout.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/token-expires.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/token-expires.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/unauthorized.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/unauthorized.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/happy-login.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-uaa/happy-login.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/landing.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-uaa/landing.js)2
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/logout.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-uaa/logout.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/token-refresh.js (renamed from deps/rabbitmq_management/selenium/test/oauth/with-uaa/token-refresh.js)0
-rw-r--r--deps/rabbitmq_management/selenium/test/utils.js7
82 files changed, 3113 insertions, 1149 deletions
diff --git a/deps/rabbitmq_management/selenium/README.md b/deps/rabbitmq_management/selenium/README.md
index 725781f552..a98215201d 100644
--- a/deps/rabbitmq_management/selenium/README.md
+++ b/deps/rabbitmq_management/selenium/README.md
@@ -11,15 +11,34 @@ To run the tests we need:
All test cases and their configuration files are under the `test` folder and grouped into subfolders based on the area of functionality they are testing. For instance, under `oauth` folder, we have test cases about OAuth 2.0.
Furthermore, within an area of functionality like OAuth 2.0 we want to test under different configuration.
-For instance under `test/oauth/with-uaa` we group all test cases which run against UAA. Whereas
-under `test/oauth/with-uaa-down` we group all test cases which run against a UAA which is down.
-
-And under `suites` folder we have the test suites where we literally script the following:
- - the suite's **setup**, e.g. start RabbitMQ and UAA with a specific configuration
- - the path to the test cases
- - the path to the test case configuration
- - the suite's **teardown**, e.g. stop RabbitMQ and UAA
- - and save all logs and screen captures if any
+For instance under `test/oauth/with-sp-initiated` we group all test cases which run against an Authorization server via the Authorization Code Flow. Whereas under `test/oauth/with-idp-down` we group all test cases which run against an Authorization server which is down.
+
+And under `suites` folder we have the test suites. A test suite is a script which executes all test cases
+under a folder and using a given configuration and launching a number of components the test suite depends on.
+
+Some test cases only depend on RabbitMQ such as the `basic-auth.sh`. In this test suite, we specify the location of the test case relative to the `test` folder.
+And we call the function `run`. We always have to source the file under `bin/suite_template`.
+
+```
+TEST_CASES_PATH=/basic-auth
+
+source $SCRIPT/../bin/suite_template
+run
+````
+
+When our test suite requires of other components such as UAA, we use the function call `runWith` as we see below for the test case `oauth-with-uaa.sh`. In this test case, in addition to declaring the location of the test case, we also specify the location of the configuration files required to launch the components this suite
+depends on. We also specify which profiles are activated which in turn defines the settings and configuration files used in the suite. And said earlier, the suite runs via the function `runWith` specifying the components that should be started and stopped and its logs captured too.
+
+```
+TEST_CASES_PATH=/oauth/with-sp-initiated
+TEST_CONFIG_PATH=/oauth
+PROFILES="uaa uaa-oauth-provider"
+
+source $SCRIPT/../bin/suite_template
+runWith uaa
+
+```
+
# How to run the tests
diff --git a/deps/rabbitmq_management/selenium/bin/find-template-files b/deps/rabbitmq_management/selenium/bin/find-template-files
new file mode 100755
index 0000000000..4199174a35
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/bin/find-template-files
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+TEST_PATH=${1:?"First parameter must be the test path"}
+TEMPLATE_FILE_PREFIX=${2:?"Second parameter must be the template file prefix"}
+TEMPLATE_FILE_SUFFIX=${3:-""}
+TEST_PARENT_PATH="$(dirname "$TEST_PATH")"
+
+find_templates_files() {
+ find_template_files_in $TEST_PARENT_PATH
+ find_template_files_in $TEST_PATH
+
+}
+find_template_files_in() {
+
+ for file in $1/${TEMPLATE_FILE_PREFIX}.*${TEMPLATE_FILE_SUFFIX}
+ do
+ if [ ! -f $file ]
+ then
+ continue
+ fi
+ entry="$(basename $file)"
+ prefix=${entry#$TEMPLATE_FILE_PREFIX.*}
+ if [[ $prefix == $TEMPLATE_FILE_SUFFIX ]]
+ then
+ echo "$1/${TEMPLATE_FILE_PREFIX}.${TEMPLATE_FILE_SUFFIX}"
+ else
+ profiles=${prefix%.$TEMPLATE_FILE_SUFFIX}
+ matched_entry=true
+ for p in ${profiles//./ }
+ do
+ if [[ "$PROFILES" != *"$p"* && $matched_entry == true ]]; then
+ matched_entry=false
+ fi
+ done
+ if [[ $matched_entry == true ]]; then
+ echo "$file"
+ fi
+ fi
+
+ done
+}
+
+
+find_templates_files
diff --git a/deps/rabbitmq_management/selenium/bin/gen-env-file b/deps/rabbitmq_management/selenium/bin/gen-env-file
new file mode 100755
index 0000000000..4bece07d49
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/bin/gen-env-file
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+ENV_FILE="/tmp/rabbitmq/.env"
+FIND_PATH=$1
+ENV_FILE=$2
+FIND_PARENT_PATH="$(dirname "$FIND_PATH")"
+
+generate_env_file() {
+ parentdir="$(dirname "$ENV_FILE")"
+ mkdir -p $parentdir
+ echo "" > $ENV_FILE
+
+ for f in $($SCRIPT/find-template-files $FIND_PATH ".env")
+ do
+ cat $f >> $ENV_FILE
+ done
+}
+
+generate_env_file
diff --git a/deps/rabbitmq_management/selenium/bin/gen-keycloak-json b/deps/rabbitmq_management/selenium/bin/gen-keycloak-json
new file mode 100755
index 0000000000..777541164a
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/bin/gen-keycloak-json
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+
+SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+#set -x
+
+KEYCLOAK_PATH=${1:?First parameter is the directory env and config files are relative to}
+ENV_FILE=${2:?Second parameter is a comma-separated list of .env file which has exported template variables}
+FINAL_CONFIG_FILE=${3:?Forth parameter is the name of the final config file. It is relative to where this script is run from}
+
+source $ENV_FILE
+
+echo "" > $FINAL_CONFIG_FILE
+
+for f in $($SCRIPT/find-template-files $KEYCLOAK_PATH "test-realm" "json")
+do
+ envsubst < $f >> $FINAL_CONFIG_FILE
+done
diff --git a/deps/rabbitmq_management/selenium/bin/gen-rabbitmq-conf b/deps/rabbitmq_management/selenium/bin/gen-rabbitmq-conf
new file mode 100755
index 0000000000..f3349c1f0b
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/bin/gen-rabbitmq-conf
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+#set -x
+
+TEST_PATH=${1:?First parameter is the directory env and config files are relative to}
+ENV_FILE=${2:?Second parameter is a comma-separated list of .env file which has exported template variables}
+FINAL_CONFIG_FILE=${3:?Forth parameter is the name of the final config file. It is relative to where this script is run from}
+
+source $ENV_FILE
+
+echo "" > $FINAL_CONFIG_FILE
+
+for f in $($SCRIPT/find-template-files $TEST_PATH "rabbitmq" "conf")
+do
+ envsubst < $f >> $FINAL_CONFIG_FILE
+done
diff --git a/deps/rabbitmq_management/selenium/bin/gen-uaa-yml b/deps/rabbitmq_management/selenium/bin/gen-uaa-yml
new file mode 100755
index 0000000000..84090e707c
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/bin/gen-uaa-yml
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+#set -x
+
+UAA_PATH=${1:?First parameter is the directory env and config files are relative to}
+ENV_FILE=${2:?Second parameter is a comma-separated list of .env file which has exported template variables}
+FINAL_CONFIG_FILE=${3:?Forth parameter is the name of the final config file. It is relative to where this script is run from}
+
+source $ENV_FILE
+
+echo "" > $FINAL_CONFIG_FILE
+
+for f in $($SCRIPT/find-template-files $UAA_PATH "uaa" "yml")
+do
+ envsubst < $f >> $FINAL_CONFIG_FILE
+done
diff --git a/deps/rabbitmq_management/selenium/bin/suite_template b/deps/rabbitmq_management/selenium/bin/suite_template
new file mode 100644
index 0000000000..31250d0a2b
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/bin/suite_template
@@ -0,0 +1,431 @@
+#!/usr/bin/env bash
+
+SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+SUITE=$(caller)
+SUITE=$(basename "${SUITE}" .sh )
+
+SELENIUM_DOCKER_IMAGE=selenium/standalone-chrome:103.0
+UAA_DOCKER_IMAGE=cloudfoundry/uaa:75.21.0
+KEYCLOAK_DOCKER_IMAGE=quay.io/keycloak/keycloak:20.0
+HTTPD_DOCKER_IMAGE=httpd:latest
+PADDING=""
+ENV_FILE=/tmp/rabbitmq/.env
+declare -a REQUIRED_COMPONENTS
+
+tabs 4
+
+print() {
+ echo -e "${PADDING}$1"
+}
+begin() {
+ print "\n$@"
+ PADDING="${PADDING}\t"
+}
+end() {
+ PADDING=`echo $PADDING | rev | cut -c 4- | rev`
+ print "$@"
+}
+init_suite() {
+ TEST_DIR=$(realpath ${SCRIPT}/../test)
+ TEST_CASES_DIR=$(realpath ${TEST_DIR}${TEST_CASES_PATH:?"missing TEST_CASES_PATH"})
+ if [ -z "${TEST_CONFIG_PATH}" ]; then TEST_CONFIG_DIR=$TEST_CASES_DIR
+ else TEST_CONFIG_DIR=$(realpath ${TEST_DIR}${TEST_CONFIG_PATH})
+ fi
+ DOCKER_NETWORK=${DOCKER_NETWORK:-rabbitmq_net}
+
+ begin "Initializing suite $SUITE ..."
+ print "> REQUIRED_COMPONENTS: ${REQUIRED_COMPONENTS[*]}"
+ print "> TEST_CASES_DIR: ${TEST_CASES_DIR} "
+ print "> TEST_CONFIG_DIR: ${TEST_CONFIG_DIR} "
+ print "> DOCKER_NETWORK: ${DOCKER_NETWORK} "
+ print "> PROFILES: ${PROFILES} "
+ print "> ENV_FILE: ${ENV_FILE} "
+ end "Initialized suite ..."
+}
+
+BIN_DIR=${SCRIPT}/../bin
+LOGS=$PWD/logs/${SUITE}
+SCREENS=$PWD/screens/${SUITE}
+
+build_mocha_image() {
+ if [[ "$(docker images -q mocha-test 2> /dev/null)" == "" ]]; then
+ docker build -t mocha-test --target test $SCRIPT/..
+ fi
+}
+
+requires() {
+ REQUIRED_COMPONENTS=$@
+}
+
+start_selenium() {
+ begin "Starting selenium ..."
+
+ print "> SELENIUM_DOCKER_IMAGE: ${SELENIUM_DOCKER_IMAGE}"
+ kill_container_if_exist selenium
+
+ docker run \
+ --detach \
+ --name selenium \
+ --net ${DOCKER_NETWORK} \
+ -p 4444:4444 \
+ --shm-size=2g \
+ ${SELENIUM_DOCKER_IMAGE}
+
+ wait_for_message selenium "Started Selenium Standalone"
+ end "Selenium ready"
+}
+
+kill_container_if_exist() {
+ docker stop $1 &> /dev/null || true && docker rm $1 &> /dev/null || true
+}
+wait_for_message() {
+ attemps_left=10
+ while ! docker logs $1 | grep -q "$2";
+ do
+ sleep 5
+ print "Waiting 5sec for $1 to start ($attemps_left attempts left )..."
+ ((attemps_left--))
+ if [[ "$attemps_left" -lt 1 ]]; then
+ print "Timed out waiting"
+ exit 1
+ fi
+ done
+}
+
+init_rabbitmq() {
+ RABBITMQ_CONFIG_DIR=${TEST_CONFIG_DIR}
+ RABBITMQ_DOCKER_IMAGE=${RABBITMQ_DOCKER_IMAGE:-rabbitmq}
+ RABBITMQ_URL=${RABBITMQ_URL:-http://rabbitmq:15672}
+
+ print "> RABBITMQ_CONFIG_DIR: ${RABBITMQ_CONFIG_DIR}"
+ print "> RABBITMQ_DOCKER_IMAGE: ${RABBITMQ_DOCKER_IMAGE}"
+ print "> RABBITMQ_URL: ${RABBITMQ_URL}"
+ [[ -z "${OAUTH_SIGNING_KEY_DIR}" ]] || print "> OAUTH_SIGNING_KEY_DIR: ${OAUTH_SIGNING_KEY_DIR} relative to ${TEST_DIR}"
+
+}
+
+start_rabbitmq() {
+ begin "Starting rabbitmq ..."
+
+ init_rabbitmq
+ kill_container_if_exist rabbitmq
+
+ MOUNT_RABBITMQ_CONF="/etc/rabbitmq/rabbitmq.conf"
+ ${BIN_DIR}/gen-rabbitmq-conf ${RABBITMQ_CONFIG_DIR} $ENV_FILE /tmp$MOUNT_RABBITMQ_CONF
+ print "> EFFECTIVE RABBITMQ_CONFIG_FILE: /tmp$MOUNT_RABBITMQ_CONF"
+
+ docker run \
+ --detach \
+ --name rabbitmq \
+ --net ${DOCKER_NETWORK} \
+ -p 15672:15672 -p 5672:5672 \
+ -v ${RABBITMQ_CONFIG_DIR}/logging.conf:/etc/rabbitmq/conf.d/logging.conf:ro \
+ -v /tmp$MOUNT_RABBITMQ_CONF:${MOUNT_RABBITMQ_CONF}:ro \
+ -v ${RABBITMQ_CONFIG_DIR}/enabled_plugins:/etc/rabbitmq/enabled_plugins \
+ -v ${TEST_DIR}/${OAUTH_SIGNING_KEY_DIR}:/config \
+ ${RABBITMQ_DOCKER_IMAGE}
+
+ wait_for_message rabbitmq "Server startup complete"
+ end "RabbitMQ ready"
+}
+init_uaa() {
+ UAA_CONFIG_PATH=${UAA_CONFIG_PATH:-oauth/uaa}
+ UAA_CONFIG_DIR=$(realpath ${TEST_DIR}/${UAA_CONFIG_PATH})
+
+ print "> UAA_CONFIG_DIR: ${UAA_CONFIG_DIR}"
+ print "> UAA_URL: ${UAA_URL}"
+ print "> UAA_DOCKER_IMAGE: ${UAA_DOCKER_IMAGE}"
+}
+start_uaa() {
+ begin "Starting UAA ..."
+
+ init_uaa
+ kill_container_if_exist uaa
+
+ MOUNT_UAA_CONF_DIR=/tmp/uaa
+
+ mkdir -p $MOUNT_UAA_CONF_DIR
+ cp ${UAA_CONFIG_DIR}/* $MOUNT_UAA_CONF_DIR
+ ${BIN_DIR}/gen-uaa-yml ${UAA_CONFIG_DIR} $ENV_FILE $MOUNT_UAA_CONF_DIR/uaa.yml
+ print "> EFFECTIVE UAA_CONFIG_FILE: $MOUNT_UAA_CONF_DIR/uaa.yml"
+
+ docker run \
+ --detach \
+ --name uaa \
+ --net ${DOCKER_NETWORK} \
+ --publish 8080:8080 \
+ --mount "type=bind,source=$MOUNT_UAA_CONF_DIR,target=/uaa" \
+ --env UAA_CONFIG_PATH="/uaa" \
+ --env JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom" \
+ ${UAA_DOCKER_IMAGE}
+
+ wait_for_oidc_endpoint uaa $UAA_URL
+ end "UAA is ready"
+}
+init_keycloak() {
+ KEYCLOAK_CONFIG_PATH=${KEYCLOAK_CONFIG_PATH:-oauth/keycloak}
+ KEYCLOAK_CONFIG_DIR=$(realpath ${TEST_DIR}/${KEYCLOAK_CONFIG_PATH})
+ KEYCLOAK_URL=${OAUTH_PROVIDER_URL}
+
+ print "> KEYCLOAK_CONFIG_DIR: ${KEYCLOAK_CONFIG_DIR}"
+ print "> KEYCLOAK_URL: ${KEYCLOAK_URL}"
+ print "> KEYCLOAK_DOCKER_IMAGE: ${KEYCLOAK_DOCKER_IMAGE}"
+}
+start_keycloak() {
+ begin "Starting keycloak ..."
+
+ init_keycloak
+ kill_container_if_exist keycloak
+
+ MOUNT_KEYCLOAK_CONF_DIR=/tmp/keycloak
+
+ mkdir -p $MOUNT_KEYCLOAK_CONF_DIR
+ ${BIN_DIR}/gen-keycloak-json ${KEYCLOAK_CONFIG_DIR} $ENV_FILE $MOUNT_KEYCLOAK_CONF_DIR/test-realm.json
+ print "> EFFECTIVE KEYCLOAK_CONFIG_FILE: $MOUNT_KEYCLOAK_CONF_DIR/test-realm.json"
+
+ docker run \
+ --detach \
+ --name keycloak \
+ --net ${DOCKER_NETWORK} \
+ --publish 8080:8080 \
+ --env KEYCLOAK_ADMIN=admin \
+ --env KEYCLOAK_ADMIN_PASSWORD=admin \
+ --mount type=bind,source=${MOUNT_KEYCLOAK_CONF_DIR}/,target=/opt/keycloak/data/import/ \
+ ${KEYCLOAK_DOCKER_IMAGE} start-dev --import-realm
+
+ wait_for_oidc_endpoint keycloak $KEYCLOAK_URL
+ end "Keycloak is ready"
+}
+wait_for_oidc_endpoint() {
+ NAME=$1
+ BASE_URL=$2
+
+ max_retry=10
+ counter=0
+ print "Waiting for OIDC discovery endpoint $NAME ... (BASE_URL: $BASE_URL)"
+ until (docker run --net ${DOCKER_NETWORK} --rm curlimages/curl:7.85.0 -L --fail ${BASE_URL}/.well-known/openid-configuration >/dev/null 2>&1)
+ do
+ sleep 5
+ [[ counter -eq $max_retry ]] && print "Failed!" && exit 1
+ print "Trying again. Try #$counter"
+ ((counter++))
+ done
+ sleep 20
+}
+
+init_fakeportal() {
+ FAKE_PORTAL_URL=${FAKE_PORTAL_URL:-http://fakeportal:3000}
+ FAKE_PORTAL_DIR=${SCRIPT}/../fakeportal
+ CLIENT_ID="${CLIENT_ID:-rabbit_idp_user}"
+ CLIENT_SECRET="${CLIENT_SECRET:-rabbit_idp_user}"
+
+ print "> FAKE_PORTAL_URL: ${FAKE_PORTAL_URL}"
+ print "> UAA_URL: ${UAA_URL}"
+ print "> RABBITMQ_URL: ${RABBITMQ_URL}"
+ print "> CLIENT_ID: ${CLIENT_ID}"
+ print "> CLIENT_SECRET: ${CLIENT_SECRET}"
+}
+start_fakeportal() {
+ begin "Starting fakeportal ..."
+
+ init_fakeportal
+ kill_container_if_exist fakeportal
+
+ docker run \
+ --detach \
+ --name fakeportal \
+ --net ${DOCKER_NETWORK} \
+ --publish 3000:3000 \
+ --env RABBITMQ_URL="${RABBITMQ_URL}" \
+ --env UAA_URL="${UAA_URL}" \
+ --env CLIENT_ID="${CLIENT_ID}" \
+ --env CLIENT_SECRET="${CLIENT_SECRET}" \
+ -v ${FAKE_PORTAL_DIR}:/code/fakeportal \
+ mocha-test run fakeportal
+
+ wait_for_url $FAKE_PORTAL_URL
+ end "Fakeportal is ready"
+}
+
+init_fakeproxy() {
+ FAKE_PROXY_URL=${FAKE_PROXY_URL:-http://fakeproxy:3000}
+ FAKE_PROXY_DIR=${SCRIPT}/../fakeportal
+ CLIENT_ID="${CLIENT_ID:-rabbit_idp_user}"
+ CLIENT_SECRET="${CLIENT_SECRET:-rabbit_idp_user}"
+ print "> FAKE_PROXY_URL: ${FAKE_PROXY_URL}"
+ print "> UAA_BASE_URL: ${UAA_BASE_URL}"
+ print "> RABBITMQ_URL: ${RABBITMQ_URL}"
+ print "> CLIENT_ID: ${CLIENT_ID}"
+ print "> CLIENT_SECRET: ${CLIENT_SECRET}"
+}
+start_fakeproxy() {
+ begin "Starting fakeproxy ..."
+
+ init_fakeproxy
+ kill_container_if_exist fakeproxy
+
+ docker run \
+ --detach \
+ --name fakeproxy \
+ --net ${DOCKER_NETWORK} \
+ --publish 3000:3000 \
+ --env RABBITMQ_URL="${RABBITMQ_URL}" \
+ --env UAA_URL="${UAA_BASE_URL}" \
+ --env CLIENT_ID="${CLIENT_ID}" \
+ --env CLIENT_SECRET="${CLIENT_SECRET}" \
+ -v ${FAKE_PROXY_DIR}:/code/fakeportal \
+ mocha-test run fakeproxy
+
+ RABBITMQ_URL="$FAKE_PROXY_URL"
+
+ wait_for_url $FAKE_PROXY_URL
+ end "Fakeproxy is ready"
+
+}
+
+wait_for_url() {
+ url=$1
+ max_retry=10
+ counter=0
+ until (docker run --net rabbitmq_net --rm curlimages/curl:7.85.0 -L -f -v $url >/dev/null 2>&1)
+ do
+ print "Waiting for $url to start"
+ sleep 5
+ [[ counter -eq $max_retry ]] && print "Failed!" && exit 1
+ print "Trying again. Try #$counter"
+ ((counter++))
+ done
+}
+
+init_proxy() {
+ HTTPD_CONFIG_PATH=${HTTPD_CONFIG_PATH:?"missing HTTPD_CONFIG_PATH"}
+ HTTPD_CONFIG_DIR=${TEST_DIR}${HTTPD_CONFIG_PATH}
+ PROXIED_RABBITMQ_URL=${PROXIED_RABBITMQ_URL:?"missing PROXIED_RABBITMQ_URL"}
+
+ print "> HTTPD_CONFIG: ${HTTPD_CONFIG_DIR}"
+ print "> PROXIED_RABBITMQ_URL: ${PROXIED_RABBITMQ_URL}"
+ print "> HTTPD_DOCKER_IMAGE: ${HTTPD_DOCKER_IMAGE}"
+}
+start_proxy() {
+ begin "Starting proxy ..."
+
+ init_proxy
+ kill_container_if_exist proxy
+
+ docker run \
+ --detach \
+ --name proxy \
+ --net ${DOCKER_NETWORK} \
+ --publish 8080:8080 \
+ --mount "type=bind,source=${HTTPD_CONFIG_DIR},target=/usr/local/apache2/conf" \
+ ${HTTPD_DOCKER_IMAGE}
+
+ wait_for_url $PROXIED_RABBITMQ_URL
+ end "Proxy is ready"
+}
+
+
+test () {
+ kill_container_if_exist mocha
+ begin "Running tests with env variables:"
+
+ print "> RABBITMQ_URL: ${RABBITMQ_URL}"
+ print "> UAA_URL: ${UAA_URL}"
+ print "> FAKE_PORTAL_URL: ${FAKE_PORTAL_URL}"
+
+ docker run \
+ --rm \
+ --name mocha \
+ --net ${DOCKER_NETWORK} \
+ --env RABBITMQ_URL=${RABBITMQ_URL} \
+ --env UAA_URL=${UAA_URL} \
+ --env FAKE_PORTAL_URL=${FAKE_PORTAL_URL} \
+ --env RUN_LOCAL=false \
+ -v ${TEST_DIR}:/code/test \
+ -v ${SCREENS}:/screens \
+ mocha-test test /code/test${TEST_CASES_PATH}
+
+ end "Finishing running test"
+}
+
+save_logs() {
+ mkdir -p $LOGS
+ save_container_logs selenium
+}
+save_container_logs() {
+ docker container ls | grep $1 >/dev/null 2>&1 && docker logs $1 > $LOGS/$1.log || echo "$1 not running"
+}
+
+profiles_with_local_or_docker() {
+ if [[ "$PROFILES" != *"local"* && "$PROFILES" != *"docker"* ]]; then
+ echo "$PROFILES docker"
+ else
+ echo "$PROFILES"
+ fi
+}
+generate_env_file() {
+ mkdir -p /tmp/rabbitmq
+ ${BIN_DIR}/gen-env-file $TEST_CONFIG_DIR $ENV_FILE
+ source $ENV_FILE
+}
+run() {
+ runWith rabbitmq
+}
+runWith() {
+ if [[ "$@" != *"rabbitmq"* ]]; then
+ REQUIRED_COMPONENTS+=("rabbitmq")
+ fi
+
+ for (( i=1; i<=$#; i++)) {
+ eval val='$'$i
+ REQUIRED_COMPONENTS+=( "$val" )
+ }
+
+ export PROFILES=`profiles_with_local_or_docker`
+ init_suite
+ generate_env_file
+ build_mocha_image
+ start_selenium
+
+ trap _teardown EXIT
+
+ [[ $(type -t _setup) == function ]] && _setup
+
+ test
+ TEST_RESULT=$?
+
+ save_logs
+ [[ $(type -t _save_logs) == function ]] && _save_logs
+
+ #[[ $(type -t _teardown) == function ]] && _teardown
+
+ kill_container_if_exist selenium
+
+ exit $TEST_RESULT
+
+}
+_setup() {
+ for i in "${REQUIRED_COMPONENTS[@]}"
+ do
+ start="start_$i"
+ $start
+ done
+}
+_teardown() {
+ begin "Tear down ..."
+ for i in "${REQUIRED_COMPONENTS[@]}"
+ do
+ print "Tear down $i"
+ $(kill_container_if_exist $i)
+ done
+ end "Finished teardown"
+}
+_save_logs() {
+ begin "Saving Logs to $LOGS ..."
+ for i in "${REQUIRED_COMPONENTS[@]}"
+ do
+ print "Saving logs for $i"
+ $(save_container_logs $i)
+ done
+ end "Finished saving logs"
+}
diff --git a/deps/rabbitmq_management/selenium/fakeportal/app.js b/deps/rabbitmq_management/selenium/fakeportal/app.js
index cd498aaba0..13994cf6bf 100644
--- a/deps/rabbitmq_management/selenium/fakeportal/app.js
+++ b/deps/rabbitmq_management/selenium/fakeportal/app.js
@@ -21,6 +21,8 @@ app.get('/', function(req, res){
access_token: access_token(id, secret)
});
});
+app.get('/favicon.ico', (req, res) => res.status(204));
+
app.listen(3000);
console.log('Express started on port 3000');
diff --git a/deps/rabbitmq_management/selenium/run-suites.sh b/deps/rabbitmq_management/selenium/run-suites.sh
index 73ba5dde5a..e7c8d4938b 100755
--- a/deps/rabbitmq_management/selenium/run-suites.sh
+++ b/deps/rabbitmq_management/selenium/run-suites.sh
@@ -10,12 +10,12 @@ NC='\033[0m'
SUCCESSFUL_SUITES=()
FAILED_SUITES=()
-for f in $SCRIPT/suites/${1:-*.sh}
+for f in $(find $SCRIPT/suites/ -name "${1:-*.sh}");
do
SUITE=$(basename -- "$f")
echo "=== Running suite $SUITE ============================================"
echo " "
- $f
+ ENV_MODES="docker" $f
TEST_RESULT="$?"
TEST_STATUS="${GREEN}Succeeded${NC}"
if [ "$TEST_RESULT" -ne 0 ]
diff --git a/deps/rabbitmq_management/selenium/suites/basic-auth-behind-proxy.sh b/deps/rabbitmq_management/selenium/suites/basic-auth-behind-proxy.sh
index 0a1a9aaa59..e3e5995906 100755
--- a/deps/rabbitmq_management/selenium/suites/basic-auth-behind-proxy.sh
+++ b/deps/rabbitmq_management/selenium/suites/basic-auth-behind-proxy.sh
@@ -2,27 +2,9 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
TEST_CASES_PATH=/basic-auth
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
-TEST_CONFIG_PATH=/httpd-proxy
-
-RABBITMQ_URL=http://proxy:8080
-
-source $SCRIPT/suite_template
+HTTPD_CONFIG_PATH=/httpd-proxy
+PROFILES="proxy"
-_setup () {
- start_proxy
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
-}
-_teardown() {
- kill_container_if_exist proxy
- kill_container_if_exist rabbitmq
-}
-run
+source $SCRIPT/../bin/suite_template
+runWith proxy
diff --git a/deps/rabbitmq_management/selenium/suites/basic-auth.sh b/deps/rabbitmq_management/selenium/suites/basic-auth.sh
index dde5e37755..baeb8becea 100755
--- a/deps/rabbitmq_management/selenium/suites/basic-auth.sh
+++ b/deps/rabbitmq_management/selenium/suites/basic-auth.sh
@@ -2,23 +2,7 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
TEST_CASES_PATH=/basic-auth
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
-TEST_CONFIG_PATH=/basic-auth
-
-source $SCRIPT/suite_template
-_setup () {
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
-}
-_teardown() {
- kill_container_if_exist rabbitmq
-}
+source $SCRIPT/../bin/suite_template
run
diff --git a/deps/rabbitmq_management/selenium/suites/definitions.sh b/deps/rabbitmq_management/selenium/suites/definitions.sh
index c01ccc7412..897bd5f782 100755
--- a/deps/rabbitmq_management/selenium/suites/definitions.sh
+++ b/deps/rabbitmq_management/selenium/suites/definitions.sh
@@ -2,23 +2,8 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
TEST_CASES_PATH=/definitions
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
TEST_CONFIG_PATH=/basic-auth
-source $SCRIPT/suite_template
-
-_setup () {
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
-}
-_teardown() {
- kill_container_if_exist rabbitmq
-}
+source $SCRIPT/../bin/suite_template
run
diff --git a/deps/rabbitmq_management/selenium/suites/exchanges.sh b/deps/rabbitmq_management/selenium/suites/exchanges.sh
index 2a1581f42c..0199bac6ba 100755
--- a/deps/rabbitmq_management/selenium/suites/exchanges.sh
+++ b/deps/rabbitmq_management/selenium/suites/exchanges.sh
@@ -2,23 +2,8 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
TEST_CASES_PATH=/exchanges
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
TEST_CONFIG_PATH=/basic-auth
-source $SCRIPT/suite_template
-
-_setup () {
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
-}
-_teardown() {
- kill_container_if_exist rabbitmq
-}
+source $SCRIPT/../bin/suite_template
run
diff --git a/deps/rabbitmq_management/selenium/suites/limits.sh b/deps/rabbitmq_management/selenium/suites/limits.sh
index 9a46bc43c6..fc0beb779b 100755
--- a/deps/rabbitmq_management/selenium/suites/limits.sh
+++ b/deps/rabbitmq_management/selenium/suites/limits.sh
@@ -2,23 +2,8 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
TEST_CASES_PATH=/limits
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
TEST_CONFIG_PATH=/basic-auth
-source $SCRIPT/suite_template
-
-_setup () {
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
-}
-_teardown() {
- kill_container_if_exist rabbitmq
-}
+source $SCRIPT/../bin/suite_template
run
diff --git a/deps/rabbitmq_management/selenium/suites/mgt-only-exchanges.sh b/deps/rabbitmq_management/selenium/suites/mgt-only-exchanges.sh
index 7f7b326da3..a634c26fd6 100755
--- a/deps/rabbitmq_management/selenium/suites/mgt-only-exchanges.sh
+++ b/deps/rabbitmq_management/selenium/suites/mgt-only-exchanges.sh
@@ -2,23 +2,8 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
TEST_CASES_PATH=/exchanges
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
TEST_CONFIG_PATH=/mgt-only
-source $SCRIPT/suite_template
-
-_setup () {
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
-}
-_teardown() {
- kill_container_if_exist rabbitmq
-}
+source $SCRIPT/../bin/suite_template
run
diff --git a/deps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa-and-prefix.sh b/deps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa-and-prefix.sh
index e2f5063236..d12caedb33 100755
--- a/deps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa-and-prefix.sh
+++ b/deps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa-and-prefix.sh
@@ -2,36 +2,9 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
-TEST_CASES_PATH=/oauth/with-idp-initiated-logon
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
+TEST_CASES_PATH=/oauth/with-idp-initiated
TEST_CONFIG_PATH=/oauth
-# Path to the uaa configuration. It is relative to the TEST_CONFIG_PATH
-UAA_CONFIG_PATH=/uaa
-# Name of the rabbitmq config file. It is relative to the TEST_CONFIG_PATH
-RABBITMQ_CONFIG_FILENAME=rabbitmq-idp-initiated-with-prefix.config
-
-# Needed by fakeportal
-RABBITMQ_URL=http://rabbitmq:15672/my-prefix/another-prefix/
-
-source $SCRIPT/suite_template
+PROFILES="uaa fakeportal-oauth-provider idp-initiated mgt-prefix"
-_setup () {
- start_uaa
- start_rabbitmq
- start_fakeportal
-}
-_save_logs() {
- save_container_logs rabbitmq
- save_container_logs uaa
- save_container_logs fakeportal
-}
-_teardown() {
- kill_container_if_exist rabbitmq
- kill_container_if_exist uaa
- kill_container_if_exist fakeportal
-}
-run
+source $SCRIPT/../bin/suite_template
+runWith uaa fakeportal
diff --git a/deps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa.sh b/deps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa.sh
index 5923547ee2..41fc7b89ef 100755
--- a/deps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa.sh
+++ b/deps/rabbitmq_management/selenium/suites/oauth-idp-initiated-with-uaa.sh
@@ -2,33 +2,9 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
-TEST_CASES_PATH=/oauth/with-idp-initiated-logon
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
+TEST_CASES_PATH=/oauth/with-idp-initiated
TEST_CONFIG_PATH=/oauth
-# Path to the uaa configuration. It is relative to the TEST_CONFIG_PATH
-UAA_CONFIG_PATH=/uaa
-# Name of the rabbitmq config file. It is relative to the TEST_CONFIG_PATH
-RABBITMQ_CONFIG_FILENAME=rabbitmq-idp-initiated.conf
-
-source $SCRIPT/suite_template
+PROFILES="uaa fakeportal-oauth-provider idp-initiated"
-_setup () {
- start_uaa
- start_rabbitmq
- start_fakeportal
-}
-_save_logs() {
- save_container_logs rabbitmq
- save_container_logs uaa
- save_container_logs fakeportal
-}
-_teardown() {
- kill_container_if_exist rabbitmq
- kill_container_if_exist uaa
- kill_container_if_exist fakeportal
-}
-run
+source $SCRIPT/../bin/suite_template
+runWith uaa fakeportal
diff --git a/deps/rabbitmq_management/selenium/suites/oauth-with-keycloak.sh b/deps/rabbitmq_management/selenium/suites/oauth-with-keycloak.sh
index 3171d13571..92fcb3d0d5 100755
--- a/deps/rabbitmq_management/selenium/suites/oauth-with-keycloak.sh
+++ b/deps/rabbitmq_management/selenium/suites/oauth-with-keycloak.sh
@@ -2,30 +2,9 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
-TEST_CASES_PATH=/oauth/with-uaa
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
+TEST_CASES_PATH=/oauth/with-sp-initiated
TEST_CONFIG_PATH=/oauth
-# Path to the uaa configuration. It is relative to the TEST_CONFIG_PATH
-KEYCLOAK_CONFIG_PATH=/keycloak
-# Name of the rabbitmq config file. It is relative to the TEST_CONFIG_PATH
-RABBITMQ_CONFIG_FILENAME=rabbitmq-with-keycloak.config
-
-source $SCRIPT/suite_template
+PROFILES="keycloak keycloak-oauth-provider"
-_setup () {
- start_keycloak
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
- save_container_logs keycloak
-}
-_teardown() {
- kill_container_if_exist rabbitmq
- kill_container_if_exist keycloak
-}
-run
+source $SCRIPT/../bin/suite_template
+runWith keycloak
diff --git a/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-and-mgt-prefix.sh b/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-and-mgt-prefix.sh
new file mode 100755
index 0000000000..deb129054c
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-and-mgt-prefix.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+TEST_CASES_PATH=/oauth/with-sp-initiated
+TEST_CONFIG_PATH=/oauth
+PROFILES="uaa uaa-oauth-provider mgt-prefix"
+
+source $SCRIPT/../bin/suite_template
+runWith uaa
diff --git a/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-down.sh b/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-down.sh
index a253f02e8d..b87feb23ef 100755
--- a/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-down.sh
+++ b/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-down.sh
@@ -2,23 +2,9 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
-TEST_CASES_PATH=/oauth/with-uaa-down
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
+TEST_CASES_PATH=/oauth/with-idp-down
TEST_CONFIG_PATH=/oauth
+PROFILES="uaa uaa-oauth-provider"
-source $SCRIPT/suite_template
-
-_setup () {
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
-}
-_teardown() {
- kill_container_if_exist rabbitmq
-}
+source $SCRIPT/../bin/suite_template
run
diff --git a/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-with-mgt-prefix.sh b/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-with-mgt-prefix.sh
deleted file mode 100755
index 5912b6c0a4..0000000000
--- a/deps/rabbitmq_management/selenium/suites/oauth-with-uaa-with-mgt-prefix.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env bash
-
-SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
-TEST_CASES_PATH=/oauth/with-uaa
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
-TEST_CONFIG_PATH=/oauth
-# Path to the uaa configuration. It is relative to the TEST_CONFIG_PATH
-UAA_CONFIG_PATH=/uaa-with-mgt-prefix
-# Name of the rabbitmq config file. It is relative to the TEST_CONFIG_PATH
-RABBITMQ_CONFIG_FILENAME=rabbitmq-with-mgt-prefix.config
-
-RABBITMQ_URL=http://rabbitmq:15672/my-prefix/another-prefix/
-
-source $SCRIPT/suite_template
-
-_setup () {
- start_uaa
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
- save_container_logs uaa
-}
-_teardown() {
- kill_container_if_exist rabbitmq
- kill_container_if_exist uaa
-}
-run
diff --git a/deps/rabbitmq_management/selenium/suites/oauth-with-uaa.sh b/deps/rabbitmq_management/selenium/suites/oauth-with-uaa.sh
index e3505dc60c..c05b4c152e 100755
--- a/deps/rabbitmq_management/selenium/suites/oauth-with-uaa.sh
+++ b/deps/rabbitmq_management/selenium/suites/oauth-with-uaa.sh
@@ -2,29 +2,9 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
-TEST_CASES_PATH=/oauth/with-uaa
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
+TEST_CASES_PATH=/oauth/with-sp-initiated
TEST_CONFIG_PATH=/oauth
-# Path to the uaa configuration. It is relative to the TEST_CONFIG_PATH
-UAA_CONFIG_PATH=/uaa
-RABBITMQ_CONFIG_FILENAME=rabbitmq.conf
-
-source $SCRIPT/suite_template
+PROFILES="uaa uaa-oauth-provider"
-_setup () {
- start_uaa
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
- save_container_logs uaa
-}
-_teardown() {
- kill_container_if_exist rabbitmq
- kill_container_if_exist uaa
-}
-run
+source $SCRIPT/../bin/suite_template
+runWith uaa
diff --git a/deps/rabbitmq_management/selenium/suites/suite_template b/deps/rabbitmq_management/selenium/suites/suite_template
deleted file mode 100644
index b58c9b7b70..0000000000
--- a/deps/rabbitmq_management/selenium/suites/suite_template
+++ /dev/null
@@ -1,312 +0,0 @@
-#!/usr/bin/env bash
-
-SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-SUITE=${SUITE:?"missing SUITE"}
-SELENIUM_DOCKER_IMAGE=selenium/standalone-chrome:103.0
-UAA_DOCKER_IMAGE=cloudfoundry/uaa:75.21.0
-#UAA_DOCKER_IMAGE=cloudfoundry/uaa:76.0.0
-KEYCLOAK_DOCKER_IMAGE=quay.io/keycloak/keycloak:18.0.0
-HTTPD_DOCKER_IMAGE=httpd:latest
-
-init_suite() {
- TEST_DIR=${SCRIPT}/../test
- TEST_CASES_DIR=${TEST_DIR}${TEST_CASES_PATH:?"missing TEST_CASES_PATH"}
- TEST_CONFIG_DIR=${TEST_DIR}${TEST_CONFIG_PATH:?"missing TEST_CONFIG_PATH"}
- DOCKER_NETWORK=${DOCKER_NETWORK:-rabbitmq_net}
-
- echo "> TEST_CASES_DIR: ${TEST_CASES_DIR} "
- echo "> TEST_CONFIG_DIR: ${TEST_CONFIG_DIR} "
- echo "> DOCKER_NETWORK: ${DOCKER_NETWORK} "
-}
-
-BIN=${SCRIPT}/../bin
-LOGS=$PWD/logs/${SUITE}
-SCREENS=$PWD/screens/${SUITE}
-
-build_mocha_image() {
- if [[ "$(docker images -q mocha-test 2> /dev/null)" == "" ]]; then
- docker build -t mocha-test --target test $SCRIPT/..
- fi
-}
-
-start_selenium() {
- echo "Starting selenium ..."
-
- echo "> SELENIUM_DOCKER_IMAGE: ${SELENIUM_DOCKER_IMAGE}"
- kill_container_if_exist selenium
-
- docker run \
- --detach \
- --name selenium \
- --net ${DOCKER_NETWORK} \
- -p 4444:4444 \
- --shm-size=2g \
- ${SELENIUM_DOCKER_IMAGE}
-
- wait_for_message selenium "Started Selenium Standalone"
- echo "Selenium ready"
-}
-
-kill_container_if_exist() {
- docker stop $1 &> /dev/null || true && docker rm $1 &> /dev/null || true
-}
-wait_for_message() {
- attemps_left=10
- while ! docker logs $1 | grep -q "$2";
- do
- sleep 5
- echo "Waiting 5sec for $1 to start ($attemps_left attempts left )..."
- ((attemps_left--))
- if [[ "$attemps_left" -lt 1 ]]; then
- echo "Timed out waiting"
- exit 1
- fi
- done
-}
-
-init_rabbitmq() {
- RABBITMQ_CONFIG_DIR=${TEST_CONFIG_DIR}
- RABBITMQ_DOCKER_IMAGE=${RABBITMQ_DOCKER_IMAGE:-rabbitmq}
- RABBITMQ_URL=${RABBITMQ_URL:-http://rabbitmq:15672}
- RABBITMQ_CONFIG_FILENAME=${RABBITMQ_CONFIG_FILENAME:-rabbitmq.config}
- RABBITMQ_CONFIG_FILE=${RABBITMQ_CONFIG_DIR}/${RABBITMQ_CONFIG_FILENAME}
-
- echo "> RABBITMQ_CONFIG_DIR: ${RABBITMQ_CONFIG_DIR}"
- echo "> RABBITMQ_CONFIG_FILE: ${RABBITMQ_CONFIG_FILE}"
- echo "> RABBITMQ_DOCKER_IMAGE: ${RABBITMQ_DOCKER_IMAGE}"
- echo "> RABBITMQ_URL: ${RABBITMQ_URL}"
-}
-
-start_rabbitmq () {
- echo "Starting rabbitmq ..."
-
- init_rabbitmq
- kill_container_if_exist rabbitmq
-
- MOUNT_RABBITMQ_CONFIG="/etc/rabbitmq/rabbitmq.config"
- if [[ "$RABBITMQ_CONFIG_FILE" == *.conf ]]
- then
- MOUNT_RABBITMQ_CONFIG="/etc/rabbitmq/rabbitmq.conf"
- fi
-
- docker run \
- --detach \
- --name rabbitmq \
- --net ${DOCKER_NETWORK} \
- -p 15672:15672 -p 5672:5672 \
- -v ${RABBITMQ_CONFIG_DIR}/logging.conf:/etc/rabbitmq/conf.d/logging.conf:ro \
- -v ${RABBITMQ_CONFIG_FILE}:${MOUNT_RABBITMQ_CONFIG}:ro \
- -v ${RABBITMQ_CONFIG_DIR}/enabled_plugins:/etc/rabbitmq/enabled_plugins \
- -v ${RABBITMQ_CONFIG_DIR}:/config \
- ${RABBITMQ_DOCKER_IMAGE}
-
- wait_for_message rabbitmq "Server startup complete"
- echo "RabbitMQ ready"
-}
-init_uaa() {
- UAA_CONFIG_PATH=${UAA_CONFIG_PATH:?"missing UAA_CONFIG_PATH"}
- UAA_CONFIG_DIR=${TEST_CONFIG_DIR}${UAA_CONFIG_PATH}
- UAA_BASE_URL=http://uaa:8080
-
- echo "> UAA_CONFIG: ${UAA_CONFIG_DIR}"
- echo "> UAA_BASE_URL: ${UAA_BASE_URL}"
- echo "> UAA_DOCKER_IMAGE: ${UAA_DOCKER_IMAGE}"
-}
-start_uaa() {
- echo "Starting uaa ..."
-
- init_uaa
- kill_container_if_exist uaa
-
- docker run \
- --detach \
- --name uaa \
- --net ${DOCKER_NETWORK} \
- --publish 8080:8080 \
- --mount "type=bind,source=${UAA_CONFIG_DIR},target=/uaa" \
- --env UAA_CONFIG_PATH="/uaa" \
- --env JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom" \
- ${UAA_DOCKER_IMAGE}
-
- wait_for_uaa
-}
-wait_for_uaa() {
- wait_for_oidc_endpoint uaa $UAA_BASE_URL
-}
-
-init_keycloak() {
- KEYCLOAK_CONFIG_PATH=${KEYCLOAK_CONFIG_PATH:?"missing KEYCLOAK_CONFIG_PATH"}
- KEYCLOAK_CONFIG_DIR=${TEST_CONFIG_DIR}${KEYCLOAK_CONFIG_PATH}
- KEYCLOAK_BASE_URL=http://keycloak:8080/realms/test
-
- echo "> KEYCLOAK_CONFIG: ${KEYCLOAK_CONFIG_DIR}"
- echo "> KEYCLOAK_BASE_URL: ${KEYCLOAK_BASE_URL}"
- echo "> KEYCLOAK_DOCKER_IMAGE: ${KEYCLOAK_DOCKER_IMAGE}"
-}
-start_keycloak() {
- echo "Starting keycloak ..."
-
- init_keycloak
- kill_container_if_exist keycloak
-
- # required in order to run in github actions
- chmod 777 ${KEYCLOAK_CONFIG_DIR}/h2
- chmod 666 ${KEYCLOAK_CONFIG_DIR}/h2/*
-
- docker run \
- --detach \
- --name keycloak \
- --net ${DOCKER_NETWORK} \
- --publish 8080:8080 \
- --env KEYCLOAK_ADMIN=admin \
- --env KEYCLOAK_ADMIN_PASSWORD=admin \
- --mount type=bind,source=${KEYCLOAK_CONFIG_DIR}/h2,target=/opt/keycloak/data/h2 \
- ${KEYCLOAK_DOCKER_IMAGE} start-dev
-
- wait_for_keycloak
-}
-wait_for_oidc_endpoint() {
- NAME=$1
- BASE_URL=$2
-
- max_retry=10
- counter=0
- echo "Waiting for $NAME to start ... (BASE_URL: $BASE_URL)"
- until (docker run --net ${DOCKER_NETWORK} --rm curlimages/curl:7.85.0 -L --fail ${BASE_URL}/.well-known/openid-configuration >/dev/null 2>&1)
- do
- sleep 5
- [[ counter -eq $max_retry ]] && echo "Failed!" && exit 1
- echo "Trying again. Try #$counter"
- ((counter++))
- done
- sleep 20
- #docker run --net ${DOCKER_NETWORK} --rm curlimages/curl:7.85.0 --fail -L ${BASE_URL}/.well-known/openid-configuration
- echo "$NAME is ready"
-
-}
-wait_for_keycloak() {
- wait_for_oidc_endpoint keycloak $KEYCLOAK_BASE_URL
-}
-
-init_fakeportal() {
- FAKE_PORTAL_URL=${FAKE_PORTAL_URL:-http://fakeportal:3000}
- FAKE_PORTAL_DIR=${SCRIPT}/../fakeportal
- echo "> FAKE_PORTAL_URL: ${FAKE_PORTAL_URL}"
- echo "> UAA_BASE_URL: ${UAA_BASE_URL}"
- echo "> RABBITMQ_URL: ${RABBITMQ_URL}"
-}
-start_fakeportal() {
- init_fakeportal
- kill_container_if_exist fakeportal
-
- docker run \
- --detach \
- --name fakeportal \
- --net ${DOCKER_NETWORK} \
- --publish 3000:3000 \
- --env RABBITMQ_URL="${RABBITMQ_URL}" \
- --env UAA_URL="${UAA_BASE_URL}" \
- --env CLIENT_ID="rabbit_idp_user" \
- --env CLIENT_SECRET="rabbit_idp_user" \
- -v ${FAKE_PORTAL_DIR}:/code/fakeportal \
- mocha-test run fakeportal
-
- wait_for_url http://fakeportal:3000/
-}
-
-wait_for_url() {
- url=$1
- max_retry=10
- counter=0
- until (docker run --net rabbitmq_net --rm curlimages/curl:7.85.0 -L -f -v $url >/dev/null 2>&1)
- echo "Waiting for $url to start"
- do
- sleep 5
- [[ counter -eq $max_retry ]] && echo "Failed!" && exit 1
- echo "Trying again. Try #$counter"
- ((counter++))
- done
- echo "$url is ready"
-}
-
-init_proxy() {
- HTTPD_CONFIG_DIR=${TEST_CONFIG_DIR}
- HTTPD_URL=http://proxy:8080
-
- echo "> HTTPD_CONFIG: ${HTTPD_CONFIG_DIR}"
- echo "> HTTPD_URL: ${HTTPD_URL}"
- echo "> HTTPD_DOCKER_IMAGE: ${HTTPD_DOCKER_IMAGE}"
-}
-start_proxy() {
- echo "Starting proxy ..."
-
- init_proxy
- kill_container_if_exist proxy
-
- docker run \
- --detach \
- --name proxy \
- --net ${DOCKER_NETWORK} \
- --publish 8080:8080 \
- --mount "type=bind,source=${HTTPD_CONFIG_DIR},target=/usr/local/apache2/conf" \
- ${HTTPD_DOCKER_IMAGE}
-
- wait_for_url $HTTPD_URL
-}
-
-
-test () {
- kill_container_if_exist mocha
- echo "Running tests with env variables:"
- echo "> RABBITMQ_URL: ${RABBITMQ_URL}"
- echo "> UAA_URL: ${UAA_URL}"
- echo "> FAKE_PORTAL_URL: ${FAKE_PORTAL_URL}"
-
- docker run \
- --rm \
- --name mocha \
- --net ${DOCKER_NETWORK} \
- --env RABBITMQ_URL=${RABBITMQ_URL} \
- --env UAA_URL=${UAA_URL} \
- --env FAKE_PORTAL_URL=${FAKE_PORTAL_URL} \
- --env RUN_LOCAL=false \
- -v ${TEST_DIR}:/code/test \
- -v ${SCREENS}:/screens \
- mocha-test test /code/test${TEST_CASES_PATH}
-}
-
-save_logs() {
- mkdir -p $LOGS
- save_container_logs selenium
-}
-save_container_logs() {
- docker container ls | grep $1 && docker logs $1 > $LOGS/$1.log || echo "$1 not running"
-}
-
-run() {
- init_suite
-
- build_mocha_image
- start_selenium
-
- trap _teardown EXIT
-
- echo "Set up ..."
- [[ $(type -t _setup) == function ]] && _setup
-
- test
- TEST_RESULT=$?
-
- echo "Saving Logs to $LOGS ..."
- save_logs
- [[ $(type -t _save_logs) == function ]] && _save_logs
-
- echo "Tear down ..."
- [[ $(type -t _teardown) == function ]] && _teardown
-
- kill_container_if_exist selenium
-
- exit $TEST_RESULT
-
-}
diff --git a/deps/rabbitmq_management/selenium/suites/vhosts.sh b/deps/rabbitmq_management/selenium/suites/vhosts.sh
index 11dc583f3a..f3856fcec8 100755
--- a/deps/rabbitmq_management/selenium/suites/vhosts.sh
+++ b/deps/rabbitmq_management/selenium/suites/vhosts.sh
@@ -2,23 +2,8 @@
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# Name of the suite used to generate log and screen folders
-SUITE=$( basename "${BASH_SOURCE[0]}" .sh)
-
-# Path to the test cases this suite should run. It is relative to the selenium/test folder
TEST_CASES_PATH=/vhosts
-# Path to the folder where all configuration file reside. It is relative to the selenim/test folder
TEST_CONFIG_PATH=/basic-auth
-source $SCRIPT/suite_template
-
-_setup () {
- start_rabbitmq
-}
-_save_logs() {
- save_container_logs rabbitmq
-}
-_teardown() {
- kill_container_if_exist rabbitmq
-}
+source $SCRIPT/../bin/suite_template
run
diff --git a/deps/rabbitmq_management/selenium/test/.env.docker b/deps/rabbitmq_management/selenium/test/.env.docker
new file mode 100644
index 0000000000..7b7dcbe843
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/.env.docker
@@ -0,0 +1,2 @@
+export RABBITMQ_BASE_URL=http://rabbitmq:15672
+export RABBITMQ_URL=http://rabbitmq:15672
diff --git a/deps/rabbitmq_management/selenium/test/.env.docker.proxy b/deps/rabbitmq_management/selenium/test/.env.docker.proxy
new file mode 100644
index 0000000000..ef603c9055
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/.env.docker.proxy
@@ -0,0 +1 @@
+export PROXIED_RABBITMQ_URL=http://proxy:8080
diff --git a/deps/rabbitmq_management/selenium/test/.env.local b/deps/rabbitmq_management/selenium/test/.env.local
new file mode 100644
index 0000000000..6e9e7bdd65
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/.env.local
@@ -0,0 +1,2 @@
+export RABBITMQ_BASE_URL=http://localhost:15672
+export RABBITMQ_URL=http://localhost:15672
diff --git a/deps/rabbitmq_management/selenium/test/.env.local.proxy b/deps/rabbitmq_management/selenium/test/.env.local.proxy
new file mode 100644
index 0000000000..0a2223dc71
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/.env.local.proxy
@@ -0,0 +1 @@
+export PROXIED_RABBITMQ_URL=http://0.0.0.0:8080
diff --git a/deps/rabbitmq_management/selenium/test/basic-auth/Makefile b/deps/rabbitmq_management/selenium/test/basic-auth/Makefile
index 84446d1c12..6f699e88ea 100644
--- a/deps/rabbitmq_management/selenium/test/basic-auth/Makefile
+++ b/deps/rabbitmq_management/selenium/test/basic-auth/Makefile
@@ -14,7 +14,7 @@ start-rabbitmq: ## Start RabbitMQ
@(docker kill rabbitmq >/dev/null 2>&1 && docker rm rabbitmq)
@(gmake --directory=${RABBITMQ_SERVER_ROOT} run-broker \
RABBITMQ_ENABLED_PLUGINS="rabbitmq_management" \
- RABBITMQ_CONFIG_FILE=deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.config)
+ RABBITMQ_CONFIG_FILE=deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.conf)
test: ## Run tests interactively e.g. make test [TEST=landing.js]
@(RABBITMQ_URL=http://localhost:15672 RUN_LOCAL=true SCREENSHOTS_DIR=${PWD}/../../screens npm test $(PWD)/$(TEST))
diff --git a/deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.conf b/deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.conf
new file mode 100644
index 0000000000..95a5f1ddbb
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.conf
@@ -0,0 +1,3 @@
+auth_backends.1 = rabbit_auth_backend_internal
+
+management.login_session_timeout = 150
diff --git a/deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.config b/deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.config
deleted file mode 100644
index 75440aa571..0000000000
--- a/deps/rabbitmq_management/selenium/test/basic-auth/rabbitmq.config
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_internal]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 150} %% in minutes
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/httpd-proxy/enabled_plugins b/deps/rabbitmq_management/selenium/test/httpd-proxy/enabled_plugins
deleted file mode 100644
index 352dfc4de1..0000000000
--- a/deps/rabbitmq_management/selenium/test/httpd-proxy/enabled_plugins
+++ /dev/null
@@ -1 +0,0 @@
-[rabbitmq_management].
diff --git a/deps/rabbitmq_management/selenium/test/httpd-proxy/rabbitmq.config b/deps/rabbitmq_management/selenium/test/httpd-proxy/rabbitmq.config
deleted file mode 100644
index 75440aa571..0000000000
--- a/deps/rabbitmq_management/selenium/test/httpd-proxy/rabbitmq.config
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_internal]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 150} %% in minutes
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/httpd-proxy/logging.conf b/deps/rabbitmq_management/selenium/test/mgt-only/logging.conf
index a2994c7860..a2994c7860 100644
--- a/deps/rabbitmq_management/selenium/test/httpd-proxy/logging.conf
+++ b/deps/rabbitmq_management/selenium/test/mgt-only/logging.conf
diff --git a/deps/rabbitmq_management/selenium/test/mgt-only/rabbitmq.conf b/deps/rabbitmq_management/selenium/test/mgt-only/rabbitmq.conf
new file mode 100644
index 0000000000..33024b845c
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/mgt-only/rabbitmq.conf
@@ -0,0 +1,4 @@
+auth_backends.1 = rabbit_auth_backend_internal
+
+management.login_session_timeout = 150
+management_agent.disable_metrics_collector = true
diff --git a/deps/rabbitmq_management/selenium/test/mgt-only/rabbitmq.config b/deps/rabbitmq_management/selenium/test/mgt-only/rabbitmq.config
deleted file mode 100644
index 3e810f6836..0000000000
--- a/deps/rabbitmq_management/selenium/test/mgt-only/rabbitmq.config
+++ /dev/null
@@ -1,12 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_internal]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 150} %% in minutes
- ]},
- {rabbitmq_management_agent, [
- {disable_metrics_collector, true}
- ]}
-
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.docker.fakeportal b/deps/rabbitmq_management/selenium/test/oauth/.env.docker.fakeportal
new file mode 100644
index 0000000000..4b5de0fa0f
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.docker.fakeportal
@@ -0,0 +1 @@
+export FAKEPORTAL_URL=http://fakeportal:3000
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.docker.keycloak b/deps/rabbitmq_management/selenium/test/oauth/.env.docker.keycloak
new file mode 100644
index 0000000000..2334f65f49
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.docker.keycloak
@@ -0,0 +1 @@
+export KEYCLOAK_URL=http://keycloak:8080/realms/test
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.docker.uaa b/deps/rabbitmq_management/selenium/test/oauth/.env.docker.uaa
new file mode 100644
index 0000000000..afc4391852
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.docker.uaa
@@ -0,0 +1 @@
+export UAA_URL=http://uaa:8080
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.fakeportal-oauth-provider b/deps/rabbitmq_management/selenium/test/oauth/.env.fakeportal-oauth-provider
new file mode 100644
index 0000000000..5a43c88c80
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.fakeportal-oauth-provider
@@ -0,0 +1 @@
+export OAUTH_PROVIDER_URL=${FAKEPORTAL_URL}
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.keycloak b/deps/rabbitmq_management/selenium/test/oauth/.env.keycloak
new file mode 100644
index 0000000000..73be54763c
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.keycloak
@@ -0,0 +1,3 @@
+export OAUTH_SIGNING_KEY_DIR=oauth/keycloak
+export OAUTH_SIGNING_KEY_ID=Gnl2ZlbRh3rAr6Wymc988_5cY7T5GuePd5dpJlXDJUk
+export OAUTH_SCOPES="openid profile rabbitmq.tag:management"
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.keycloak-oauth-provider b/deps/rabbitmq_management/selenium/test/oauth/.env.keycloak-oauth-provider
new file mode 100644
index 0000000000..df1e3d2703
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.keycloak-oauth-provider
@@ -0,0 +1 @@
+export OAUTH_PROVIDER_URL=${KEYCLOAK_URL}
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.local.fakeportal b/deps/rabbitmq_management/selenium/test/oauth/.env.local.fakeportal
new file mode 100644
index 0000000000..4b5de0fa0f
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.local.fakeportal
@@ -0,0 +1 @@
+export FAKEPORTAL_URL=http://fakeportal:3000
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.local.keycloak b/deps/rabbitmq_management/selenium/test/oauth/.env.local.keycloak
new file mode 100644
index 0000000000..f736b938a9
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.local.keycloak
@@ -0,0 +1 @@
+export OAUTH_PROVIDER_URL=http://localhost:8080/realms/test
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.local.uaa b/deps/rabbitmq_management/selenium/test/oauth/.env.local.uaa
new file mode 100644
index 0000000000..7f5a297ef3
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.local.uaa
@@ -0,0 +1,2 @@
+export UAA_URL=http://localhost:8080
+export OAUTH_PROVIDER_URL=${UAA_URL}
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.mgt-prefix b/deps/rabbitmq_management/selenium/test/oauth/.env.mgt-prefix
new file mode 100644
index 0000000000..7801a87866
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.mgt-prefix
@@ -0,0 +1 @@
+export RABBITMQ_URL=${RABBITMQ_BASE_URL}/my-prefix/another-prefix/
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.uaa b/deps/rabbitmq_management/selenium/test/oauth/.env.uaa
new file mode 100644
index 0000000000..78ea3883ce
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.uaa
@@ -0,0 +1,4 @@
+export OAUTH_SIGNING_KEY_ID=legacy-token-key
+export OAUTH_SIGNING_KEY_DIR=oauth/uaa
+export OAUTH_CLIENT_SECRET=rabbit_client_code
+export OAUTH_SCOPES="openid profile rabbitmq.*"
diff --git a/deps/rabbitmq_management/selenium/test/oauth/.env.uaa-oauth-provider b/deps/rabbitmq_management/selenium/test/oauth/.env.uaa-oauth-provider
new file mode 100644
index 0000000000..044eba01c6
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/.env.uaa-oauth-provider
@@ -0,0 +1 @@
+export OAUTH_PROVIDER_URL=${UAA_URL}
diff --git a/deps/rabbitmq_management/selenium/test/oauth/Makefile b/deps/rabbitmq_management/selenium/test/oauth/Makefile
index 804711f750..f045b9c260 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/Makefile
+++ b/deps/rabbitmq_management/selenium/test/oauth/Makefile
@@ -4,11 +4,13 @@ SHELL = bash# we depend on bash expansion for e.g. queue patterns
.DEFAULT_GOAL = help
RABBITMQ_SERVER_ROOT = ../../../../../
SCREENSHOTS_DIR = ${PWD}/../../screens
-RABBITMQ_CONFIG_FILE = rabbitmq-localhost.config
+RABBITMQ_CONFIG_FILES ?= rabbitmq.tmpl.conf
username := rabbit_admin
password := rabbit_admin
+
+
### TARGETS ###
help:
@@ -16,12 +18,22 @@ help:
start-rabbitmq: ## Start RabbitMQ
@(docker kill rabbitmq >/dev/null 2>&1 && docker rm rabbitmq)
+ @(mkdir -p /tmp/rabbitmq)
+ @(../gen-env-file ${PWD} /tmp/rabbitmq/.env)
+ @(../template-config ${PWD} /tmp/rabbitmq/.env ${RABBITMQ_CONFIG_FILES} /tmp/rabbitmq/generated.conf)
+ @(echo "Templated ${RABBITMQ_CONFIG_FILES} into /tmp/rabbitmq/generated.conf ")
@(gmake --directory=${RABBITMQ_SERVER_ROOT} run-broker \
RABBITMQ_ENABLED_PLUGINS="rabbitmq_auth_backend_oauth2,rabbitmq_management" \
- RABBITMQ_CONFIG_FILE=deps/rabbitmq_management/selenium/test/oauth/${RABBITMQ_CONFIG_FILE})
+ RABBITMQ_CONFIG_FILE="/tmp/rabbitmq/generated.conf")
start-uaa: ## Start UAA
- @(UAA_CONFIG=${PWD}/uaa-localhost ./start-uaa.sh)
+ @(echo "Templating ...")
+ @(mkdir -p /tmp/rabbitmq)
+ @(../gen-env-file ${PWD} /tmp/rabbitmq/.env)
+ @(../template-config ${PWD} /tmp/rabbitmq/.env uaa/uaa.tmpl.yml uaa/uaa.yml)
+ @(echo "Templated uaa/uaa.tmpl.yml into uaa/uaa.yml ")
+ @(UAA_CONFIG=${PWD}/uaa ./start-uaa.sh)
+
stop-uaa: ## Stop UAA
@(./stop-uaa.sh)
diff --git a/deps/rabbitmq_management/selenium/test/oauth/keycloak-localhost/h2/keycloakdb.mv.db b/deps/rabbitmq_management/selenium/test/oauth/keycloak-localhost/h2/keycloakdb.mv.db
deleted file mode 100644
index 4af7c004a5..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/keycloak-localhost/h2/keycloakdb.mv.db
+++ /dev/null
Binary files differ
diff --git a/deps/rabbitmq_management/selenium/test/oauth/keycloak/h2/keycloakdb.mv.db b/deps/rabbitmq_management/selenium/test/oauth/keycloak/h2/keycloakdb.mv.db
deleted file mode 100644
index cbdc8f77a0..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/keycloak/h2/keycloakdb.mv.db
+++ /dev/null
Binary files differ
diff --git a/deps/rabbitmq_management/selenium/test/oauth/keycloak/test-realm.json b/deps/rabbitmq_management/selenium/test/oauth/keycloak/test-realm.json
new file mode 100644
index 0000000000..1b6139fa8b
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/keycloak/test-realm.json
@@ -0,0 +1,2428 @@
+{
+ "id" : "test",
+ "realm" : "test",
+ "notBefore" : 0,
+ "defaultSignatureAlgorithm" : "RS256",
+ "revokeRefreshToken" : false,
+ "refreshTokenMaxReuse" : 0,
+ "accessTokenLifespan" : 300,
+ "accessTokenLifespanForImplicitFlow" : 900,
+ "ssoSessionIdleTimeout" : 1800,
+ "ssoSessionMaxLifespan" : 36000,
+ "ssoSessionIdleTimeoutRememberMe" : 0,
+ "ssoSessionMaxLifespanRememberMe" : 0,
+ "offlineSessionIdleTimeout" : 2592000,
+ "offlineSessionMaxLifespanEnabled" : false,
+ "offlineSessionMaxLifespan" : 5184000,
+ "clientSessionIdleTimeout" : 0,
+ "clientSessionMaxLifespan" : 0,
+ "clientOfflineSessionIdleTimeout" : 0,
+ "clientOfflineSessionMaxLifespan" : 0,
+ "accessCodeLifespan" : 60,
+ "accessCodeLifespanUserAction" : 300,
+ "accessCodeLifespanLogin" : 1800,
+ "actionTokenGeneratedByAdminLifespan" : 43200,
+ "actionTokenGeneratedByUserLifespan" : 300,
+ "oauth2DeviceCodeLifespan" : 600,
+ "oauth2DevicePollingInterval" : 5,
+ "enabled" : true,
+ "sslRequired" : "external",
+ "registrationAllowed" : false,
+ "registrationEmailAsUsername" : false,
+ "rememberMe" : false,
+ "verifyEmail" : false,
+ "loginWithEmailAllowed" : true,
+ "duplicateEmailsAllowed" : false,
+ "resetPasswordAllowed" : false,
+ "editUsernameAllowed" : false,
+ "bruteForceProtected" : false,
+ "permanentLockout" : false,
+ "maxFailureWaitSeconds" : 900,
+ "minimumQuickLoginWaitSeconds" : 60,
+ "waitIncrementSeconds" : 60,
+ "quickLoginCheckMilliSeconds" : 1000,
+ "maxDeltaTimeSeconds" : 43200,
+ "failureFactor" : 30,
+ "roles" : {
+ "realm" : [ {
+ "id" : "6feb7afe-2fa8-4569-8fb8-e50c2a4302d2",
+ "name" : "offline_access",
+ "description" : "${role_offline-access}",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "2b61bc53-60cc-48fc-b89b-ee3e80204895",
+ "name" : "rabbitmq.tag:management",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "c28bf7ca-9fb7-485c-a68b-d5fb4bd844fb",
+ "name" : "rabbitmq.tag:administrator",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "d2b776e4-8c4d-4168-9d52-76aaa115ee70",
+ "name" : "uma_authorization",
+ "description" : "${role_uma_authorization}",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "77e9131f-1eb3-45a3-9f3b-f74991a99def",
+ "name" : "rabbitmq.configure:*/*",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "97bb2b6b-33ff-404e-b754-351604d9f34c",
+ "name" : "rabbitmq",
+ "description" : "",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "b84ae322-7112-41d1-8a3f-0009447ded47",
+ "name" : "default-roles-test",
+ "description" : "${role_default-roles}",
+ "composite" : true,
+ "composites" : {
+ "realm" : [ "offline_access", "uma_authorization" ],
+ "client" : {
+ "account" : [ "view-profile", "manage-account" ]
+ }
+ },
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "0a838a26-4908-4750-a1d0-7cc322c698ae",
+ "name" : "producer",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "5516969b-be85-490c-9715-9c1186075d60",
+ "name" : "rabbitmq-management",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "216cfa85-9b8a-4fc0-bee1-814e2978d82b",
+ "name" : "rabbitmq.write:*/*",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ }, {
+ "id" : "dd893988-6661-4849-a0f1-1cd1a63b51a5",
+ "name" : "rabbitmq.read:*/*",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "test",
+ "attributes" : { }
+ } ],
+ "client" : {
+ "realm-management" : [ {
+ "id" : "6721a146-c9e3-4a24-9d26-6dbc7e3aae1f",
+ "name" : "manage-authorization",
+ "description" : "${role_manage-authorization}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "147b7e9a-d884-42b7-a970-245c2b5590b0",
+ "name" : "view-clients",
+ "description" : "${role_view-clients}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "realm-management" : [ "query-clients" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "c25f4711-ee9b-4457-9636-7dacffceb676",
+ "name" : "view-events",
+ "description" : "${role_view-events}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "1ce1e692-4dae-498f-8ac6-ca119eb329ef",
+ "name" : "query-realms",
+ "description" : "${role_query-realms}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "78cd990d-68bd-4e71-9561-5e4412bcbfb7",
+ "name" : "create-client",
+ "description" : "${role_create-client}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "c5bc4413-71cb-43f1-b48b-c9428aed47cd",
+ "name" : "query-clients",
+ "description" : "${role_query-clients}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "21b62a0b-62fd-4a39-8b97-8ce8b89ad9d8",
+ "name" : "view-identity-providers",
+ "description" : "${role_view-identity-providers}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "9df26a88-36e9-4670-8b63-dc4e57ebcce8",
+ "name" : "manage-clients",
+ "description" : "${role_manage-clients}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "02bc109a-d318-4196-aa15-171651685b50",
+ "name" : "view-users",
+ "description" : "${role_view-users}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "realm-management" : [ "query-users", "query-groups" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "97499d4c-fb81-4ee6-bd5e-6eb198424654",
+ "name" : "manage-events",
+ "description" : "${role_manage-events}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "bf64efcd-f8a4-47e6-bc5e-0ff29635b885",
+ "name" : "realm-admin",
+ "description" : "${role_realm-admin}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "realm-management" : [ "manage-authorization", "view-clients", "view-events", "query-realms", "create-client", "view-identity-providers", "query-clients", "view-users", "manage-clients", "manage-events", "view-realm", "manage-realm", "manage-users", "query-users", "query-groups", "manage-identity-providers", "view-authorization", "impersonation" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "fb251ef8-0f7e-4e85-a423-e3bf515dbe5c",
+ "name" : "manage-realm",
+ "description" : "${role_manage-realm}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "09df7745-f99e-4961-add6-eca3e2ab9b44",
+ "name" : "view-realm",
+ "description" : "${role_view-realm}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "45a27cee-8828-4427-90b4-9394b080db18",
+ "name" : "manage-users",
+ "description" : "${role_manage-users}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "7454f27b-cabc-4160-9835-1747659f6f00",
+ "name" : "query-users",
+ "description" : "${role_query-users}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "42d9a084-b4e0-42f5-8c29-9623fb265f79",
+ "name" : "query-groups",
+ "description" : "${role_query-groups}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "893a1a00-5e1f-4dc2-983d-640a3cce58fa",
+ "name" : "manage-identity-providers",
+ "description" : "${role_manage-identity-providers}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "8c9b5f3e-2819-4dbe-81d0-fa8721ff9f1d",
+ "name" : "view-authorization",
+ "description" : "${role_view-authorization}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ }, {
+ "id" : "1e3044c3-fb93-48fa-9b27-eb4d8c6ccad7",
+ "name" : "impersonation",
+ "description" : "${role_impersonation}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "attributes" : { }
+ } ],
+ "mgt_api_client" : [ ],
+ "security-admin-console" : [ ],
+ "admin-cli" : [ ],
+ "producer" : [ ],
+ "account-console" : [ ],
+ "broker" : [ {
+ "id" : "147bafb6-45a8-45ba-b214-7826b1fc4856",
+ "name" : "read-token",
+ "description" : "${role_read-token}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "f32cd0e1-5b78-412a-ba07-6ad2a9aeb007",
+ "attributes" : { }
+ } ],
+ "rabbit_client_code" : [ ],
+ "account" : [ {
+ "id" : "957f712c-e735-402d-9f41-ad9832749f51",
+ "name" : "delete-account",
+ "description" : "${role_delete-account}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "attributes" : { }
+ }, {
+ "id" : "9145b32b-f8ef-4ff0-b50a-be1af192a65a",
+ "name" : "manage-account-links",
+ "description" : "${role_manage-account-links}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "attributes" : { }
+ }, {
+ "id" : "59cac6df-51cd-4a3c-bf77-03bc2b34fe69",
+ "name" : "manage-consent",
+ "description" : "${role_manage-consent}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "account" : [ "view-consent" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "attributes" : { }
+ }, {
+ "id" : "508ce853-78d5-428c-9589-0e310fa7fe40",
+ "name" : "view-profile",
+ "description" : "${role_view-profile}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "attributes" : { }
+ }, {
+ "id" : "061542b2-67d9-4388-aadb-9c936f19d607",
+ "name" : "view-groups",
+ "description" : "${role_view-groups}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "attributes" : { }
+ }, {
+ "id" : "6d326537-afdd-4f72-8973-14b164361a7e",
+ "name" : "view-applications",
+ "description" : "${role_view-applications}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "attributes" : { }
+ }, {
+ "id" : "1fc2ea3e-395a-45bd-ae2f-a9eb674ed4b2",
+ "name" : "manage-account",
+ "description" : "${role_manage-account}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "account" : [ "manage-account-links" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "attributes" : { }
+ }, {
+ "id" : "95ad82e5-1859-496e-ba95-6b38f8043efd",
+ "name" : "view-consent",
+ "description" : "${role_view-consent}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "attributes" : { }
+ } ],
+ "rabbitmq-proxy-client" : [ ]
+ }
+ },
+ "groups" : [ ],
+ "defaultRole" : {
+ "id" : "b84ae322-7112-41d1-8a3f-0009447ded47",
+ "name" : "default-roles-test",
+ "description" : "${role_default-roles}",
+ "composite" : true,
+ "clientRole" : false,
+ "containerId" : "test"
+ },
+ "requiredCredentials" : [ "password" ],
+ "otpPolicyType" : "totp",
+ "otpPolicyAlgorithm" : "HmacSHA1",
+ "otpPolicyInitialCounter" : 0,
+ "otpPolicyDigits" : 6,
+ "otpPolicyLookAheadWindow" : 1,
+ "otpPolicyPeriod" : 30,
+ "otpPolicyCodeReusable" : false,
+ "otpSupportedApplications" : [ "totpAppFreeOTPName", "totpAppGoogleName" ],
+ "webAuthnPolicyRpEntityName" : "keycloak",
+ "webAuthnPolicySignatureAlgorithms" : [ "ES256" ],
+ "webAuthnPolicyRpId" : "",
+ "webAuthnPolicyAttestationConveyancePreference" : "not specified",
+ "webAuthnPolicyAuthenticatorAttachment" : "not specified",
+ "webAuthnPolicyRequireResidentKey" : "not specified",
+ "webAuthnPolicyUserVerificationRequirement" : "not specified",
+ "webAuthnPolicyCreateTimeout" : 0,
+ "webAuthnPolicyAvoidSameAuthenticatorRegister" : false,
+ "webAuthnPolicyAcceptableAaguids" : [ ],
+ "webAuthnPolicyPasswordlessRpEntityName" : "keycloak",
+ "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256" ],
+ "webAuthnPolicyPasswordlessRpId" : "",
+ "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified",
+ "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified",
+ "webAuthnPolicyPasswordlessRequireResidentKey" : "not specified",
+ "webAuthnPolicyPasswordlessUserVerificationRequirement" : "not specified",
+ "webAuthnPolicyPasswordlessCreateTimeout" : 0,
+ "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false,
+ "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ],
+ "users" : [ {
+ "id" : "4cf4d6b5-09e5-453f-bf22-c8efdc2dd1dc",
+ "createdTimestamp" : 1651841525973,
+ "username" : "rabbit_admin",
+ "enabled" : true,
+ "totp" : false,
+ "emailVerified" : true,
+ "firstName" : "",
+ "lastName" : "",
+ "email" : "rabbit_admin@rabbit.com",
+ "credentials" : [ {
+ "id" : "deca2be2-28ad-4f98-981f-3ec68bf12ae2",
+ "type" : "password",
+ "createdDate" : 1651841816533,
+ "secretData" : "{\"value\":\"bRuz2IKP4+kG3IKo258mVNqW8Nts6CkZavF3tf4M+/dlJFNPJIallxephOKUiVPtMOdO9Huq9K0uwTBYSZY3fg==\",\"salt\":\"v2qUXLV0n8402Ef8brQg1Q==\",\"additionalParameters\":{}}",
+ "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\",\"additionalParameters\":{}}"
+ } ],
+ "disableableCredentialTypes" : [ ],
+ "requiredActions" : [ ],
+ "realmRoles" : [ "rabbitmq.tag:administrator", "rabbitmq.configure:*/*", "rabbitmq", "rabbitmq.write:*/*", "rabbitmq.read:*/*" ],
+ "notBefore" : 0,
+ "groups" : [ ]
+ }, {
+ "id" : "15f03347-e2fc-4f8c-9743-f4dfd59f67fe",
+ "createdTimestamp" : 1652084304711,
+ "username" : "service-account-mgt_api_client",
+ "enabled" : true,
+ "totp" : false,
+ "emailVerified" : false,
+ "serviceAccountClientId" : "mgt_api_client",
+ "credentials" : [ ],
+ "disableableCredentialTypes" : [ ],
+ "requiredActions" : [ ],
+ "realmRoles" : [ "default-roles-test", "rabbitmq-management" ],
+ "notBefore" : 0,
+ "groups" : [ ]
+ }, {
+ "id" : "63ec2047-6689-45c0-981d-f9b127a6bb7f",
+ "createdTimestamp" : 1652084012762,
+ "username" : "service-account-producer",
+ "enabled" : true,
+ "totp" : false,
+ "emailVerified" : false,
+ "serviceAccountClientId" : "producer",
+ "credentials" : [ ],
+ "disableableCredentialTypes" : [ ],
+ "requiredActions" : [ ],
+ "realmRoles" : [ "default-roles-test", "producer" ],
+ "notBefore" : 0,
+ "groups" : [ ]
+ }, {
+ "id" : "7a51406b-d6d8-4c77-9b8a-135a2f07d8d5",
+ "createdTimestamp" : 1677053286393,
+ "username" : "service-account-rabbitmq-proxy-client",
+ "enabled" : true,
+ "totp" : false,
+ "emailVerified" : false,
+ "serviceAccountClientId" : "rabbitmq-proxy-client",
+ "credentials" : [ ],
+ "disableableCredentialTypes" : [ ],
+ "requiredActions" : [ ],
+ "realmRoles" : [ "default-roles-test" ],
+ "notBefore" : 0,
+ "groups" : [ ]
+ } ],
+ "scopeMappings" : [ {
+ "client" : "producer",
+ "roles" : [ "producer" ]
+ }, {
+ "clientScope" : "rabbitmq.read:*/*",
+ "roles" : [ "producer" ]
+ }, {
+ "clientScope" : "offline_access",
+ "roles" : [ "offline_access" ]
+ }, {
+ "clientScope" : "rabbitmq.configure:*/*",
+ "roles" : [ "producer" ]
+ }, {
+ "clientScope" : "rabbitmq.tag:management",
+ "roles" : [ "rabbitmq-management" ]
+ }, {
+ "clientScope" : "rabbitmq.write:*/*",
+ "roles" : [ "producer" ]
+ }, {
+ "clientScope" : "rabbitmq.tag:administrator",
+ "roles" : [ "rabbitmq.tag:administrator" ]
+ } ],
+ "clientScopeMappings" : {
+ "account" : [ {
+ "client" : "account-console",
+ "roles" : [ "manage-account", "view-groups" ]
+ } ]
+ },
+ "clients" : [ {
+ "id" : "bd6c76be-d33d-43d6-9cbb-965df4f0c025",
+ "clientId" : "account",
+ "name" : "${client_account}",
+ "rootUrl" : "${authBaseUrl}",
+ "baseUrl" : "/realms/test/account/",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ "/realms/test/account/*" ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : true,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : false,
+ "publicClient" : true,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "post.logout.redirect.uris" : "+"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : false,
+ "nodeReRegistrationTimeout" : 0,
+ "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "80023652-2709-4646-9367-b6114aa73bae",
+ "clientId" : "account-console",
+ "name" : "${client_account-console}",
+ "rootUrl" : "${authBaseUrl}",
+ "baseUrl" : "/realms/test/account/",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ "/realms/test/account/*" ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : true,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : false,
+ "publicClient" : true,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "post.logout.redirect.uris" : "+",
+ "pkce.code.challenge.method" : "S256"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : false,
+ "nodeReRegistrationTimeout" : 0,
+ "protocolMappers" : [ {
+ "id" : "ebcf72c5-f58a-48cb-a6fb-db44e8735d7e",
+ "name" : "audience resolve",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-audience-resolve-mapper",
+ "consentRequired" : false,
+ "config" : { }
+ } ],
+ "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "e5484264-82ff-46df-b38e-d5456439f413",
+ "clientId" : "admin-cli",
+ "name" : "${client_admin-cli}",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : false,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : true,
+ "serviceAccountsEnabled" : false,
+ "publicClient" : true,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "post.logout.redirect.uris" : "+"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : false,
+ "nodeReRegistrationTimeout" : 0,
+ "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "f32cd0e1-5b78-412a-ba07-6ad2a9aeb007",
+ "clientId" : "broker",
+ "name" : "${client_broker}",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : true,
+ "consentRequired" : false,
+ "standardFlowEnabled" : true,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : false,
+ "publicClient" : false,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "post.logout.redirect.uris" : "+"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : false,
+ "nodeReRegistrationTimeout" : 0,
+ "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "c5be3c24-0c88-4672-a77a-79002fcc9a9d",
+ "clientId" : "mgt_api_client",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "secret" : "LWOuYqJ8gjKg3D2U8CJZDuID3KiRZVDa",
+ "redirectUris" : [ ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : false,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : true,
+ "publicClient" : false,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "saml.force.post.binding" : "false",
+ "saml.multivalued.roles" : "false",
+ "frontchannel.logout.session.required" : "false",
+ "post.logout.redirect.uris" : "+",
+ "oauth2.device.authorization.grant.enabled" : "false",
+ "backchannel.logout.revoke.offline.tokens" : "false",
+ "saml.server.signature.keyinfo.ext" : "false",
+ "use.refresh.tokens" : "true",
+ "oidc.ciba.grant.enabled" : "false",
+ "backchannel.logout.session.required" : "true",
+ "client_credentials.use_refresh_token" : "false",
+ "require.pushed.authorization.requests" : "false",
+ "saml.client.signature" : "false",
+ "saml.allow.ecp.flow" : "false",
+ "id.token.as.detached.signature" : "false",
+ "saml.assertion.signature" : "false",
+ "client.secret.creation.time" : "1652084304",
+ "saml.encrypt" : "false",
+ "saml.server.signature" : "false",
+ "exclude.session.state.from.auth.response" : "false",
+ "saml.artifact.binding" : "false",
+ "saml_force_name_id_format" : "false",
+ "acr.loa.map" : "{}",
+ "tls.client.certificate.bound.access.tokens" : "false",
+ "saml.authnstatement" : "false",
+ "display.on.consent.screen" : "false",
+ "token.response.type.bearer.lower-case" : "false",
+ "saml.onetimeuse.condition" : "false"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : true,
+ "nodeReRegistrationTimeout" : -1,
+ "protocolMappers" : [ {
+ "id" : "33fd8faf-3ea6-4669-beea-45b9655cf6ab",
+ "name" : "Client IP Address",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientAddress",
+ "userinfo.token.claim" : "true",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientAddress",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "aae7e2aa-72e7-4d29-ae68-a66b846d62ab",
+ "name" : "aud",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-audience-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "id.token.claim" : "false",
+ "access.token.claim" : "true",
+ "included.custom.audience" : "rabbitmq",
+ "userinfo.token.claim" : "false"
+ }
+ }, {
+ "id" : "f7e826de-e651-4080-8e97-feba46b8a0a2",
+ "name" : "Client ID",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientId",
+ "userinfo.token.claim" : "true",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientId",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "545a1d71-5dc8-491c-bf7b-1c672d50e606",
+ "name" : "Client Host",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientHost",
+ "userinfo.token.claim" : "true",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientHost",
+ "jsonType.label" : "String"
+ }
+ } ],
+ "defaultClientScopes" : [ "rabbitmq.tag:administrator", "rabbitmq.tag:management", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "3e96bddd-95f9-4277-b3ad-f8f6f5d5bb59",
+ "clientId" : "producer",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "secret" : "kbOFBXI9tANgKUq8vXHLhT6YhbivgXxn",
+ "redirectUris" : [ ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : false,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : true,
+ "publicClient" : false,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "saml.force.post.binding" : "false",
+ "saml.multivalued.roles" : "false",
+ "frontchannel.logout.session.required" : "false",
+ "post.logout.redirect.uris" : "+",
+ "oauth2.device.authorization.grant.enabled" : "false",
+ "backchannel.logout.revoke.offline.tokens" : "false",
+ "saml.server.signature.keyinfo.ext" : "false",
+ "use.refresh.tokens" : "true",
+ "oidc.ciba.grant.enabled" : "false",
+ "backchannel.logout.session.required" : "false",
+ "client_credentials.use_refresh_token" : "true",
+ "require.pushed.authorization.requests" : "false",
+ "saml.client.signature" : "false",
+ "saml.allow.ecp.flow" : "false",
+ "id.token.as.detached.signature" : "false",
+ "saml.assertion.signature" : "false",
+ "client.secret.creation.time" : "1652081901",
+ "saml.encrypt" : "false",
+ "saml.server.signature" : "false",
+ "exclude.session.state.from.auth.response" : "false",
+ "saml.artifact.binding" : "false",
+ "saml_force_name_id_format" : "false",
+ "acr.loa.map" : "{}",
+ "tls.client.certificate.bound.access.tokens" : "false",
+ "saml.authnstatement" : "false",
+ "display.on.consent.screen" : "false",
+ "token.response.type.bearer.lower-case" : "false",
+ "saml.onetimeuse.condition" : "false"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : true,
+ "nodeReRegistrationTimeout" : -1,
+ "protocolMappers" : [ {
+ "id" : "72928dd9-10c9-4049-bfa7-4cc05e650f46",
+ "name" : "realm roles",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-realm-role-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.attribute" : "foo",
+ "access.token.claim" : "true",
+ "claim.name" : "realm_access.roles",
+ "jsonType.label" : "String",
+ "multivalued" : "true"
+ }
+ }, {
+ "id" : "4c3b3c28-795f-4056-a854-5cf119b36266",
+ "name" : "Client ID",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientId",
+ "userinfo.token.claim" : "true",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientId",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "56b7571c-3226-4c92-8615-c99b265a42fc",
+ "name" : "aud",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-audience-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "id.token.claim" : "false",
+ "access.token.claim" : "true",
+ "included.custom.audience" : "rabbitmq",
+ "userinfo.token.claim" : "false"
+ }
+ }, {
+ "id" : "4ca73107-b26b-46ee-985b-d2dcc099f21c",
+ "name" : "Client Host",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientHost",
+ "userinfo.token.claim" : "true",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientHost",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "26e5243a-3127-4528-9a54-8af324ac2392",
+ "name" : "client roles",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-client-role-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.attribute" : "foo",
+ "access.token.claim" : "true",
+ "claim.name" : "resource_access.${client_id}.roles",
+ "jsonType.label" : "String",
+ "multivalued" : "true"
+ }
+ }, {
+ "id" : "d52cc6cb-08a1-4c2b-bf06-61f234a419d1",
+ "name" : "Client IP Address",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientAddress",
+ "userinfo.token.claim" : "true",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientAddress",
+ "jsonType.label" : "String"
+ }
+ } ],
+ "defaultClientScopes" : [ "rabbitmq.read:*/*", "rabbitmq.write:*/*", "roles", "rabbitmq.configure:*/*" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "e64b05d1-0d1c-4294-85f9-52ae098ecf1f",
+ "clientId" : "rabbit_client_code",
+ "name" : "",
+ "description" : "",
+ "rootUrl" : "${RABBITMQ_URL}",
+ "adminUrl" : "",
+ "baseUrl" : "",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ "${RABBITMQ_URL}/*" ],
+ "webOrigins" : [ "*" ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : true,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : true,
+ "serviceAccountsEnabled" : false,
+ "publicClient" : true,
+ "frontchannelLogout" : true,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "saml.force.post.binding" : "false",
+ "saml.multivalued.roles" : "false",
+ "frontchannel.logout.session.required" : "false",
+ "post.logout.redirect.uris" : "+",
+ "oauth2.device.authorization.grant.enabled" : "false",
+ "backchannel.logout.revoke.offline.tokens" : "false",
+ "saml.server.signature.keyinfo.ext" : "false",
+ "use.refresh.tokens" : "true",
+ "oidc.ciba.grant.enabled" : "false",
+ "backchannel.logout.session.required" : "false",
+ "client_credentials.use_refresh_token" : "false",
+ "require.pushed.authorization.requests" : "false",
+ "saml.client.signature" : "false",
+ "saml.allow.ecp.flow" : "false",
+ "id.token.as.detached.signature" : "false",
+ "saml.assertion.signature" : "false",
+ "client.secret.creation.time" : "1652171962",
+ "saml.encrypt" : "false",
+ "saml.server.signature" : "false",
+ "exclude.session.state.from.auth.response" : "false",
+ "tls-client-certificate-bound-access-tokens" : "false",
+ "saml.artifact.binding" : "false",
+ "saml_force_name_id_format" : "false",
+ "acr.loa.map" : "{}",
+ "tls.client.certificate.bound.access.tokens" : "false",
+ "saml.authnstatement" : "false",
+ "display.on.consent.screen" : "false",
+ "token.response.type.bearer.lower-case" : "false",
+ "saml.onetimeuse.condition" : "false"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : true,
+ "nodeReRegistrationTimeout" : -1,
+ "protocolMappers" : [ {
+ "id" : "e6905c3e-7ace-4b4f-9244-0f20a86da8ef",
+ "name" : "aud",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-audience-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "id.token.claim" : "false",
+ "access.token.claim" : "true",
+ "included.custom.audience" : "rabbitmq",
+ "userinfo.token.claim" : "false"
+ }
+ }, {
+ "id" : "548a2e70-5a2b-4959-8c72-97f6455ce478",
+ "name" : "realm roles",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-realm-role-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.attribute" : "foo",
+ "access.token.claim" : "true",
+ "claim.name" : "extra_scope",
+ "jsonType.label" : "String",
+ "multivalued" : "true"
+ }
+ }, {
+ "id" : "923edb6d-2188-4f23-a547-7e372d9cb5eb",
+ "name" : "username",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-property-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "username",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "user_name",
+ "jsonType.label" : "String"
+ }
+ } ],
+ "defaultClientScopes" : [ "web-origins", "acr", "rabbitmq.tag:administrator", "profile", "roles", "rabbitmq.tag:management", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "c265f3db-ed3a-4898-8800-af044b3c30f5",
+ "clientId" : "rabbitmq-proxy-client",
+ "name" : "",
+ "description" : "",
+ "rootUrl" : "",
+ "adminUrl" : "",
+ "baseUrl" : "",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "secret" : "nt6pmZMeyrgzYgkg2MLgZQZxLveRMW5M",
+ "redirectUris" : [ "http://0.0.0.0:4180/*" ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : true,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : true,
+ "serviceAccountsEnabled" : true,
+ "publicClient" : false,
+ "frontchannelLogout" : true,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "client.secret.creation.time" : "1677053168",
+ "oauth2.device.authorization.grant.enabled" : "false",
+ "backchannel.logout.revoke.offline.tokens" : "false",
+ "use.refresh.tokens" : "true",
+ "tls-client-certificate-bound-access-tokens" : "false",
+ "oidc.ciba.grant.enabled" : "false",
+ "backchannel.logout.session.required" : "true",
+ "client_credentials.use_refresh_token" : "false",
+ "acr.loa.map" : "{}",
+ "require.pushed.authorization.requests" : "false",
+ "display.on.consent.screen" : "false",
+ "token.response.type.bearer.lower-case" : "false"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : true,
+ "nodeReRegistrationTimeout" : -1,
+ "protocolMappers" : [ {
+ "id" : "e1c2389a-c5ca-4a81-a5c2-67f919f2368d",
+ "name" : "Client ID",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientId",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientId",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "54b12841-4524-4b8a-8dc0-bb6f9044e11d",
+ "name" : "Client IP Address",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientAddress",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientAddress",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "a5c803da-af15-4fc8-ad7f-a4a900f0703b",
+ "name" : "Client Host",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usersessionmodel-note-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.session.note" : "clientHost",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "clientHost",
+ "jsonType.label" : "String"
+ }
+ } ],
+ "defaultClientScopes" : [ "web-origins", "acr", "roles", "rabbitmq", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "rabbitmq.tag:administrator", "profile", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "09de26c0-0a1b-4e5f-8724-23af07a0e54a",
+ "clientId" : "realm-management",
+ "name" : "${client_realm-management}",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : true,
+ "consentRequired" : false,
+ "standardFlowEnabled" : true,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : false,
+ "publicClient" : false,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "post.logout.redirect.uris" : "+"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : false,
+ "nodeReRegistrationTimeout" : 0,
+ "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ }, {
+ "id" : "16f67c5c-f86b-4334-93f4-fd26356cbb24",
+ "clientId" : "security-admin-console",
+ "name" : "${client_security-admin-console}",
+ "rootUrl" : "${authAdminUrl}",
+ "baseUrl" : "/admin/test/console/",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ "/admin/test/console/*" ],
+ "webOrigins" : [ "+" ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : true,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : false,
+ "publicClient" : true,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "post.logout.redirect.uris" : "+",
+ "pkce.code.challenge.method" : "S256"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : false,
+ "nodeReRegistrationTimeout" : 0,
+ "protocolMappers" : [ {
+ "id" : "26e7deed-9c26-4a19-88fa-845bec2e5909",
+ "name" : "locale",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "locale",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "locale",
+ "jsonType.label" : "String"
+ }
+ } ],
+ "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ]
+ } ],
+ "clientScopes" : [ {
+ "id" : "ec4e76a3-8597-41d4-aa7c-e4e1fee6a01a",
+ "name" : "profile",
+ "description" : "OpenID Connect built-in scope: profile",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true",
+ "consent.screen.text" : "${profileScopeConsentText}"
+ },
+ "protocolMappers" : [ {
+ "id" : "db04690a-de25-4627-8e0c-78a018e86ce8",
+ "name" : "family name",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-property-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "lastName",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "family_name",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "e5c72df5-7fa9-43c6-8f13-c7c2d73fe89a",
+ "name" : "profile",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "profile",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "profile",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "5856da2a-7aa0-446c-be48-22112783e322",
+ "name" : "nickname",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "nickname",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "nickname",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "5a7a208b-70eb-4f8f-b8ff-2115a615d696",
+ "name" : "gender",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "gender",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "gender",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "b1cad309-90cd-4fed-8e62-c05dc4649b99",
+ "name" : "birthdate",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "birthdate",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "birthdate",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "b3a08e61-6e08-4aa3-aa71-212bc13bff5d",
+ "name" : "picture",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "picture",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "picture",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "bc59bb88-2cae-4c60-b09f-3c18fced603f",
+ "name" : "website",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "website",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "website",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "da32f964-8b0a-4cef-babc-8b90f31b20a7",
+ "name" : "given name",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-property-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "firstName",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "given_name",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "eb6b8e8c-1e03-497a-80b4-3e9c26a86d9a",
+ "name" : "username",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-property-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "username",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "preferred_username",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "334e47b2-5f74-4668-b04e-9ab55513c146",
+ "name" : "updated at",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "updatedAt",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "updated_at",
+ "jsonType.label" : "long"
+ }
+ }, {
+ "id" : "7dad1c25-6b18-4571-8d92-bfd698c5b94b",
+ "name" : "full name",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-full-name-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "userinfo.token.claim" : "true"
+ }
+ }, {
+ "id" : "bf52c928-4d33-4c14-8e61-969b17bed2a5",
+ "name" : "zoneinfo",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "zoneinfo",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "zoneinfo",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "3a03eb21-7c20-4150-87f2-ca94c9df601c",
+ "name" : "middle name",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "middleName",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "middle_name",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "431c9682-e4ba-4348-9d07-f8d5415ca98b",
+ "name" : "locale",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "locale",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "locale",
+ "jsonType.label" : "String"
+ }
+ } ]
+ }, {
+ "id" : "b2ced9e2-289f-44b0-8567-5218a2eee3e6",
+ "name" : "rabbitmq.read:*/*",
+ "description" : "read all",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true"
+ }
+ }, {
+ "id" : "46f5e514-9283-4f03-b2af-a7da506f0cbc",
+ "name" : "offline_access",
+ "description" : "OpenID Connect built-in scope: offline_access",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "consent.screen.text" : "${offlineAccessScopeConsentText}",
+ "display.on.consent.screen" : "true"
+ }
+ }, {
+ "id" : "a4ffacea-34a8-4eb2-961f-af78e50b1140",
+ "name" : "address",
+ "description" : "OpenID Connect built-in scope: address",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true",
+ "consent.screen.text" : "${addressScopeConsentText}"
+ },
+ "protocolMappers" : [ {
+ "id" : "791b8544-4659-4d61-8fb8-8a18a687648d",
+ "name" : "address",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-address-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.attribute.formatted" : "formatted",
+ "user.attribute.country" : "country",
+ "user.attribute.postal_code" : "postal_code",
+ "userinfo.token.claim" : "true",
+ "user.attribute.street" : "street",
+ "id.token.claim" : "true",
+ "user.attribute.region" : "region",
+ "access.token.claim" : "true",
+ "user.attribute.locality" : "locality"
+ }
+ } ]
+ }, {
+ "id" : "7a2981c1-d606-43f6-acbf-76a8124e59b7",
+ "name" : "microprofile-jwt",
+ "description" : "Microprofile - JWT built-in scope",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "false"
+ },
+ "protocolMappers" : [ {
+ "id" : "63a285df-f6d0-4e06-9f16-d4a578fce8bf",
+ "name" : "upn",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-property-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "username",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "upn",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "1665df09-6855-420b-a649-0f0afe054b51",
+ "name" : "groups",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-realm-role-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "multivalued" : "true",
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "foo",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "groups",
+ "jsonType.label" : "String"
+ }
+ } ]
+ }, {
+ "id" : "b9c5af5d-59f3-445b-b899-c6574bc6191b",
+ "name" : "phone",
+ "description" : "OpenID Connect built-in scope: phone",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true",
+ "consent.screen.text" : "${phoneScopeConsentText}"
+ },
+ "protocolMappers" : [ {
+ "id" : "e945c389-e953-431b-b3b4-882a50a8054e",
+ "name" : "phone number",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "phoneNumber",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "phone_number",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "52b07524-1521-48d6-be23-779f8e1f8a67",
+ "name" : "phone number verified",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-attribute-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "phoneNumberVerified",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "phone_number_verified",
+ "jsonType.label" : "boolean"
+ }
+ } ]
+ }, {
+ "id" : "4dfc0d4d-654d-4e1c-8b58-64a0e1126a19",
+ "name" : "rabbitmq.configure:*/*",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true"
+ }
+ }, {
+ "id" : "93d154c5-e9fe-49ff-bca8-bc55a141a31e",
+ "name" : "rabbitmq.tag:management",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true"
+ }
+ }, {
+ "id" : "cc214fa3-0a7f-4390-9c4a-8ae14512e4a4",
+ "name" : "web-origins",
+ "description" : "OpenID Connect scope for add allowed web origins to the access token",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "false",
+ "display.on.consent.screen" : "false",
+ "consent.screen.text" : ""
+ },
+ "protocolMappers" : [ {
+ "id" : "e2ac8ddb-9c19-4088-bc72-c4176e0fac3f",
+ "name" : "allowed web origins",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-allowed-origins-mapper",
+ "consentRequired" : false,
+ "config" : { }
+ } ]
+ }, {
+ "id" : "53b1a2b2-085e-4e36-bb81-c88e8d846439",
+ "name" : "email",
+ "description" : "OpenID Connect built-in scope: email",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true",
+ "consent.screen.text" : "${emailScopeConsentText}"
+ },
+ "protocolMappers" : [ {
+ "id" : "e1a850d9-6372-4521-8d0d-acee25245c90",
+ "name" : "email",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-property-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "email",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "email",
+ "jsonType.label" : "String"
+ }
+ }, {
+ "id" : "43a7220e-d94d-43e6-a5e7-1a12dbbb4460",
+ "name" : "email verified",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-property-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "userinfo.token.claim" : "true",
+ "user.attribute" : "emailVerified",
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "claim.name" : "email_verified",
+ "jsonType.label" : "boolean"
+ }
+ } ]
+ }, {
+ "id" : "2b745afc-cb92-4ac3-b314-8ef1d638b4b1",
+ "name" : "roles",
+ "description" : "OpenID Connect scope for add user roles to the access token",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "false",
+ "display.on.consent.screen" : "true",
+ "consent.screen.text" : "${rolesScopeConsentText}"
+ },
+ "protocolMappers" : [ {
+ "id" : "2cac7c2c-7c9f-44e6-a76e-b8d3fad627ea",
+ "name" : "realm roles",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-realm-role-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.attribute" : "foo",
+ "access.token.claim" : "true",
+ "claim.name" : "realm_access.roles",
+ "jsonType.label" : "String",
+ "multivalued" : "true"
+ }
+ }, {
+ "id" : "43145559-8ab9-4630-a1af-794f5a39b865",
+ "name" : "audience resolve",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-audience-resolve-mapper",
+ "consentRequired" : false,
+ "config" : { }
+ }, {
+ "id" : "91c4a9bd-a9b9-402b-9eb6-762362d18c6b",
+ "name" : "client roles",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-usermodel-client-role-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "user.attribute" : "foo",
+ "access.token.claim" : "true",
+ "claim.name" : "resource_access.${client_id}.roles",
+ "jsonType.label" : "String",
+ "multivalued" : "true"
+ }
+ } ]
+ }, {
+ "id" : "8b53c714-89cf-4cfd-ac76-1b45bd841b58",
+ "name" : "acr",
+ "description" : "OpenID Connect scope for add acr (authentication context class reference) to the token",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "false",
+ "display.on.consent.screen" : "false"
+ },
+ "protocolMappers" : [ {
+ "id" : "6381b445-4f37-434e-b982-c34a6048913b",
+ "name" : "acr loa level",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-acr-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "id.token.claim" : "true",
+ "access.token.claim" : "true",
+ "userinfo.token.claim" : "true"
+ }
+ } ]
+ }, {
+ "id" : "3331893c-c67c-4146-b00a-b4862200628c",
+ "name" : "role_list",
+ "description" : "SAML role list",
+ "protocol" : "saml",
+ "attributes" : {
+ "consent.screen.text" : "${samlRoleListScopeConsentText}",
+ "display.on.consent.screen" : "true"
+ },
+ "protocolMappers" : [ {
+ "id" : "863078ec-d37c-46fc-a70e-3fe6340fbeec",
+ "name" : "role list",
+ "protocol" : "saml",
+ "protocolMapper" : "saml-role-list-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "single" : "false",
+ "attribute.nameformat" : "Basic",
+ "attribute.name" : "Role"
+ }
+ } ]
+ }, {
+ "id" : "b6b7be88-3c0f-4cda-b122-0c14960f5a6d",
+ "name" : "rabbitmq",
+ "description" : "",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true",
+ "gui.order" : "",
+ "consent.screen.text" : ""
+ },
+ "protocolMappers" : [ {
+ "id" : "acbeeaa3-34b1-45e5-9f07-14ea595ca9cb",
+ "name" : "rabbitmq-audience",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-audience-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "included.client.audience" : "rabbitmq-proxy-client",
+ "id.token.claim" : "false",
+ "access.token.claim" : "true",
+ "included.custom.audience" : "rabbitmq"
+ }
+ } ]
+ }, {
+ "id" : "2010b133-4bfe-4f5f-8d1a-33b2a7ad2e60",
+ "name" : "rabbitmq.write:*/*",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true"
+ }
+ }, {
+ "id" : "f6e6dd62-22bf-4421-910e-e6070908764c",
+ "name" : "rabbitmq.tag:administrator",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "include.in.token.scope" : "true",
+ "display.on.consent.screen" : "true"
+ }
+ } ],
+ "defaultDefaultClientScopes" : [ "role_list", "profile", "email", "roles", "web-origins", "acr", "rabbitmq" ],
+ "defaultOptionalClientScopes" : [ "offline_access", "address", "phone", "microprofile-jwt" ],
+ "browserSecurityHeaders" : {
+ "contentSecurityPolicyReportOnly" : "",
+ "xContentTypeOptions" : "nosniff",
+ "xRobotsTag" : "none",
+ "xFrameOptions" : "SAMEORIGIN",
+ "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';",
+ "xXSSProtection" : "1; mode=block",
+ "strictTransportSecurity" : "max-age=31536000; includeSubDomains"
+ },
+ "smtpServer" : { },
+ "eventsEnabled" : false,
+ "eventsListeners" : [ "jboss-logging" ],
+ "enabledEventTypes" : [ ],
+ "adminEventsEnabled" : false,
+ "adminEventsDetailsEnabled" : false,
+ "identityProviders" : [ ],
+ "identityProviderMappers" : [ ],
+ "components" : {
+ "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ {
+ "id" : "72a90aea-e732-467d-ade9-34e73c993209",
+ "name" : "Allowed Client Scopes",
+ "providerId" : "allowed-client-templates",
+ "subType" : "authenticated",
+ "subComponents" : { },
+ "config" : {
+ "allow-default-scopes" : [ "true" ]
+ }
+ }, {
+ "id" : "5ed9083b-fdb5-4fc5-97b5-0b31189f8ad2",
+ "name" : "Max Clients Limit",
+ "providerId" : "max-clients",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : {
+ "max-clients" : [ "200" ]
+ }
+ }, {
+ "id" : "4f81b0b9-6a42-4128-b7a1-4a814acf5875",
+ "name" : "Full Scope Disabled",
+ "providerId" : "scope",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : { }
+ }, {
+ "id" : "2c06a7de-50eb-439f-b592-6bbda10d6af3",
+ "name" : "Allowed Protocol Mapper Types",
+ "providerId" : "allowed-protocol-mappers",
+ "subType" : "authenticated",
+ "subComponents" : { },
+ "config" : {
+ "allowed-protocol-mapper-types" : [ "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "oidc-address-mapper", "oidc-usermodel-attribute-mapper" ]
+ }
+ }, {
+ "id" : "693f0625-c453-40c0-b38e-80b7b7deaefa",
+ "name" : "Consent Required",
+ "providerId" : "consent-required",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : { }
+ }, {
+ "id" : "7c971805-14f2-4eb0-b2af-90c2db4c2e41",
+ "name" : "Allowed Client Scopes",
+ "providerId" : "allowed-client-templates",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : {
+ "allow-default-scopes" : [ "true" ]
+ }
+ }, {
+ "id" : "e4376815-05e5-4675-9b11-6e18d5712849",
+ "name" : "Allowed Protocol Mapper Types",
+ "providerId" : "allowed-protocol-mappers",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : {
+ "allowed-protocol-mapper-types" : [ "oidc-sha256-pairwise-sub-mapper", "saml-role-list-mapper", "saml-user-attribute-mapper", "oidc-address-mapper", "oidc-usermodel-property-mapper", "oidc-full-name-mapper", "saml-user-property-mapper", "oidc-usermodel-attribute-mapper" ]
+ }
+ }, {
+ "id" : "bbadf932-a286-4841-be1b-ed845e2131cb",
+ "name" : "Trusted Hosts",
+ "providerId" : "trusted-hosts",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : {
+ "host-sending-registration-request-must-match" : [ "true" ],
+ "client-uris-must-match" : [ "true" ]
+ }
+ } ],
+ "org.keycloak.keys.KeyProvider" : [ {
+ "id" : "307ede55-7647-498c-b1ba-4be80fb609cc",
+ "name" : "rsa-generated",
+ "providerId" : "rsa-generated",
+ "subComponents" : { },
+ "config" : {
+ "privateKey" : [ "MIIEogIBAAKCAQEAx5RCXJqU+e2646hYCduHBANJvpYN3Uv1gq15LjTlIXYqBCfm4SLUX1y1lOKDoOVl5j/flAgdgF4I9P3G4drc36NuaaocQguu3xWOsG9UZheiDD4wJANC7F6FMdWqSiBySA+EXyQ2zkoUBkNxKecqWhqVmaY9IVyxbQhdXsKQH0hBnvd3NQaem0RXuUeadUK5TGI9VqTe96sN7lLdE+T94n5cubqtBbc14kZ6YZsi1Pa+2xe/ZsDlXgMGAqTxgSy5l6cnxzxE+ndAp+pIR83BxfRFijo0LNKxyiZQ0X+QZ4Y3sTGadLCZzr6R/N/1QQnhOTXmTsVyNdmhQMr6A7lBFwIDAQABAoIBAAP7tYdbnnWOhRheF8O6mes+lY40OHqeNXwyMiT18UzFqvkCQt1jcJGmrAkYrD/d1DbQN4ogz1Xsiok5N2ryj033WRDK0F2RFiBlsb9buXeAKT/NTfCqD//fsxDXjtqD40QE60Nq2Z0sZVHqrquDbZj2xt2WL8omq3Pdot9tSqsVIQMbRIfH+I9+9kQ8Ob7t423I06AFiXJg5h3qjLx1jP6qQWsC4ippY6QmUve/d3PWqSd4GQ4sb2KQKvfT1VU4HPvIQdf+OurXaF/lPR+6XDU3RmA1qY61JS0O0ul+jTUGUHRxtgI51IU16+jcKiAzjWZ53HI9jLODP6gzyn+KC2ECgYEA/2SN4sNHM8aL/i7hdcbq+c+UFKK5AyWjewbMWGC2ZCzEzW/zqn2lmQHZK7hDAuAhvnEh6rvxxFKQw2PXb9N9IGIaAEJmGrJYg5QaLspNs5/4a3+GZh8lfZgwaEBetazrIFSOrVFhYb/pRz6m2x7oKNIpVXXUXdNr0DD4mDAwLqUCgYEAyA272k5rlTXj2IX/MvAtAuD2l7R6DfDirolzNdLVEXKLWpZwqdAuLWhDNGvNtmeAQcIuGFUvHhv5ZdnAwOKjbJsVDmr8vUCegCZJPuEGuOXjqZq+a1a84lhSSyWWiiz/yuIVh2Bnu8TD2Xb3igNFa0ipWga9nfZm7usifVumQAsCgYA/z+kfyrkkt6xM83vECNK3XmVajpn5rlLdr4IpZujLuN/nkNxqMgDJbUvM/7pGoqfrxKq70wAClLq1B2JR/57ZE4n5nJ2UeBFjtwKfxE6L3iGdAn0bURb1/avCsKq5bB5Hsrj/l0DkwqXP9liMkXlikbhgMRPB6cybdVD3/bpcPQKBgFxZIqeC3dzSNKymJokwH8cdbBfZwyIeWbXyU1G8UoksVDHsEnQBWt+xKpzPSvXxz14LslWfNRH0HeurWnRv6rre2BiAwMzoQIKtqdAx9nVyAecwPMi2EJl35f00i8qbPTU9qmyEzz35deM0LM7z9Z6xuyOIyw1ZSmjt+Ezf+t3DAoGAB7rT8E7lc036+L1RzKF+T8XwXReHcDkXhKt5V/RQBzRL5GY2mqQQ1rb037KlGXRHAwPkQqmYpMhY9ccRF5UqA05IT/KApvc36m7DAXPaNy1CwZHrr0l3rR6fhpUvtgrt1uyCXvaLJxUAd/5MTw2ffqOsMSxiuRCrpUC+dxCXtG8=" ],
+ "keyUse" : [ "SIG" ],
+ "certificate" : [ "MIIClzCCAX8CBgGAmWyoEzANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDDAR0ZXN0MB4XDTIyMDUwNjEyNDkzNloXDTMyMDUwNjEyNTExNlowDzENMAsGA1UEAwwEdGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMeUQlyalPntuuOoWAnbhwQDSb6WDd1L9YKteS405SF2KgQn5uEi1F9ctZTig6DlZeY/35QIHYBeCPT9xuHa3N+jbmmqHEILrt8VjrBvVGYXogw+MCQDQuxehTHVqkogckgPhF8kNs5KFAZDcSnnKloalZmmPSFcsW0IXV7CkB9IQZ73dzUGnptEV7lHmnVCuUxiPVak3verDe5S3RPk/eJ+XLm6rQW3NeJGemGbItT2vtsXv2bA5V4DBgKk8YEsuZenJ8c8RPp3QKfqSEfNwcX0RYo6NCzSscomUNF/kGeGN7ExmnSwmc6+kfzf9UEJ4Tk15k7FcjXZoUDK+gO5QRcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAp2oy7aEJWJ1/BBUlFArzHqXZ/aYzuRUdyCTQn6+tjRsB9IrPwRI4p9sN4mCl0EUDvureNxCiY9XBHWmEteb5n952XWcSWi6tzAj5BQL4LHIFFzMLHr1+HYpmMwYHFgmR9MhoKFINEEGpOvCRokurEN2uU/tNcBX5HGnEWRc5ZNPRwQcJggnHHWxAmuNKIf73pPAECcffrTJO6cePt++TaU2j2qA6S5A/p/0Za10EtKcNeL1EIvwuFxewBjJQjXEqvmN4VlcVadj+pQ7AwtzujdtCuHvO/9zxRo5xq9KFl/VVMk4fUvwKA+vjcMwjDn2qXZwKmslX6YkV18gbmnSCOg==" ],
+ "priority" : [ "100" ]
+ }
+ }, {
+ "id" : "1ae80491-123b-4d2d-8018-7ceb6971d07d",
+ "name" : "aes-generated",
+ "providerId" : "aes-generated",
+ "subComponents" : { },
+ "config" : {
+ "kid" : [ "e43bf5a9-a6eb-46e6-a529-2174e96536fd" ],
+ "secret" : [ "2cQajcd-396pH2TSx6TC-Q" ],
+ "priority" : [ "100" ]
+ }
+ }, {
+ "id" : "b7b404ce-f1db-4fba-9037-d43bbd5fa584",
+ "name" : "hmac-generated",
+ "providerId" : "hmac-generated",
+ "subComponents" : { },
+ "config" : {
+ "kid" : [ "2a9eb5b7-3df3-4fe8-980b-93808456c392" ],
+ "secret" : [ "ghLjXQyrSvgpx1wi2-YYgGSOUH2-FteA8BN_FujK8wywdQ-LiMd-WDfnw-F6GexWHqNrv95VRjHzvlojRbDluQ" ],
+ "priority" : [ "100" ],
+ "algorithm" : [ "HS256" ]
+ }
+ }, {
+ "id" : "f7ed445f-b2bd-4cbd-9985-eba8b36ed733",
+ "name" : "rsa-enc-generated",
+ "providerId" : "rsa-enc-generated",
+ "subComponents" : { },
+ "config" : {
+ "privateKey" : [ "MIIEowIBAAKCAQEAjn/EV027lKv/NvYuCxCqUrAsVKTHpKLyFZCeJfrMcGn9XDTjMMYVx5/2wguPJFpX+nUzFSCjGuejRWamVFOoHiaXB+mrdPoAZbBNrgdeqwb2+7+G0iqsmU+Lfi/pxsubTTLZIZB1PBfV/4DmWz3vRU+uapiHo5pn+h0mbeOCLltuZmygiKlkzpTLfZxdmSXMqCwZv9J6Zdvrpio88Ca2F1dD4w3bPWvcbLmftAkpByucyHlo0v3jLPbq9LQF7fRD3WqHDGgQjLFJJKvN16tTnVkLWzFE4tumsQirCp8MoAuC3fKa5X5AKjZRarcrml9bmnFId+VGs764FY8THVuqtQIDAQABAoIBAC2FBOw6iYxRcSJWe5jPRwlI+7BCPwAJiTl4S/yn4/yY7vUwc86VyElPgRy1YpFjRq1cGOhL1651hkNaKhHP82lGPIKrkzi3z76sFfRcqFIL1IPQx7mFJkOHFHFHzu7RBZgggRnmsnxyxMpsm6lT3IYQkQ++D74kScis3STHQ0OZOVGkx9Sbznx1+i2rc7QUkWy8b7G8/ByVJsAu2SBLfbQ4wFAhJKtr+uDP6Tt2Cyn4GpzE68B5cA7htJI49uVvbGTBLInH5PXejXKyLfEJjbH2brx9hVStmaaV/sD1hroZ0sjhM54MamctPq2o0H33S2WFZJaUXwDWHzOSyUmY5SECgYEAxTJmhuCYz/P2AZP4DGDNwFHLar1K719m+RxUu0ndIDKeGhBtX3oSQXaKQS+JM+dmbF3M7ub18OgCHF+raPXAE6en1tdh5ZQJbRQEX9dnaXVpjCPFciZMgP0eJ1CpMuKo7qb3IXv7YtcN6pFjMNchz3MyVqbNBFN8ocQWoe4VJu0CgYEAuP3Z45ce6XI+7274yTXMEHqmCZU8krKanmppgIj39iJGbkEBo9QSB32XhG7dU0tWJhj4QtQcMKFCMcqckw9Jetyb68J2vreCVti9CqSrSLL4VFhMzVdoRPflzXB29gdJTe4TxBAiSryVICVblW3giM4UWhzNAuJOC8f5r1xrkekCgYBmKyXJreYeoBSOXr6+kw0nHnnZFLgVa4Vrfc08uBlUTEVz1Z0FQbbhqewZt+pLNRHxBWxfPtSf+2TUlJC3sdPRmySvgCodi2SS2jMmAPF4RzfnPsVWzhcHIZ2U2wq+7YZ/F4ylEZp+bFOue6M7s8q1s8aZ9JP2MNc67OCZB0R4RQKBgQC3YfZIVfuvwbA/3ItFs03KnDrSTx2P8vuxxJ03bRAZ8BpPm6OLi2QgBtFX2CsRMiKBe8lHPkt/rawX/dk/My1NXTo3+TuLjhDoFM05qsmdNMVVn37rJBXaIMCu6ikTdV+moDb56mCEI/PUvRPPyu+FznyAZAKbNEnYBfIvc3ezWQKBgEIw8dPvzmmbGvcb1K56VlyKTcejY0tPk8spRd+BKpi+VXlhV+1xLVmyB6lzveFm+0Da2arFGxFKgi/PfT5mXfheGyX2dxMbK5cMkYg7R+pHBbm/0XXAdQnaGZ4wz0O1R/DC8t0ZDp4wSlb3fVJpQoEKkqMY9bK2H4DvToOvLFck" ],
+ "keyUse" : [ "ENC" ],
+ "certificate" : [ "MIIClzCCAX8CBgGAmWypGDANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDDAR0ZXN0MB4XDTIyMDUwNjEyNDkzNloXDTMyMDUwNjEyNTExNlowDzENMAsGA1UEAwwEdGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI5/xFdNu5Sr/zb2LgsQqlKwLFSkx6Si8hWQniX6zHBp/Vw04zDGFcef9sILjyRaV/p1MxUgoxrno0VmplRTqB4mlwfpq3T6AGWwTa4HXqsG9vu/htIqrJlPi34v6cbLm00y2SGQdTwX1f+A5ls970VPrmqYh6OaZ/odJm3jgi5bbmZsoIipZM6Uy32cXZklzKgsGb/SemXb66YqPPAmthdXQ+MN2z1r3Gy5n7QJKQcrnMh5aNL94yz26vS0Be30Q91qhwxoEIyxSSSrzderU51ZC1sxROLbprEIqwqfDKALgt3ymuV+QCo2UWq3K5pfW5pxSHflRrO+uBWPEx1bqrUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAThu6AxY4bqRbl4RtPH5Xcm033xwLssXmVXh01NuQUfowtkHi77lGUWXBmvwY6UIKC4D4eYrGVYVRTjHUEknmLrxSzUKi4g38kax4pBfwWWstWyVyo89dl7hA5ZlzdZ+SFB4HasGcXdhVFG2dwVvx6lnfxBIWZkgy5GAtIOpK4oIJOIutTiR1yuku4a9zkk6yumsxTKivAs1UMsvQXzcFSUDIrdj0vfdCAB6SvjpYvf8d0wO31bb+t3vWblv29RNV4qbuA/CZkrvWZZXZ+bal0qZd06Z+Hbc4iBgPSHs/HjyAJ8xac3ljg0IWolvZxRkFBR4VSB3pgCUKxf3V4mgbPw==" ],
+ "priority" : [ "100" ],
+ "algorithm" : [ "RSA-OAEP" ]
+ }
+ }, {
+ "id" : "66a592ec-8657-4f53-8870-1e1693ff266c",
+ "name" : "rsa",
+ "providerId" : "rsa",
+ "subComponents" : { },
+ "config" : {
+ "privateKey" : [ "MIIEpAIBAAKCAQEA2dP+vRn+Kj+S/oGd49kq6+CKNAduCC1raLfTH7B3qjmZYm45 yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhKIdcIWadhqDzdtn1hj/22iUwrhH0b d475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2B9q9KFBmo4Ahh/6+d4wM1rH9kxl0 RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF2cr3wQwCfF1qVu4eAVNVfxfy/uEv G3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgGQAvkknWitpRK8KVLypEj5WKej6CF 8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7VwIDAQABAoIBAFsB5FszYepa11o3 4zSPxgv4qyUjuYf3GfoNW0rRGp3nJLtoHAIYa0CcLX9kzsQfmLtxoY46mdppxr8Z 2qUZpBdRVO7ILNfyXhthdQKI2NuyFDhtYK1p8bx6BXe095HMcvm2ohjXzPdTP4Hq HrXAYXjUndUbClbjMJ82AnPF8pM70kBq7g733UqkdfrMuv6/d95Jiyw4cC7dGsI3 Ruz9DGhiAyCBtQ0tUB+6Kqn5DChSB+ccfMJjr6GnCVYmERxEQ5DJCTIX8am8C6KX mAxUwHMTsEGBU6GzhcUgAwUFEK3I9RptdlRFp7F8E/P0LxmPkFdgaBNUhrdnB7Y4 01n1R1kCgYEA/huFJgwVWSBSK/XIouFuQrxZOI9JbBbdmpFT7SBGCdFg26Or9y7j +N5HE7yuoZ9PkBh17zzosZdsJhGocRYvO0LSq8cXvKXKCwn2fTMM7uJ/oQe68sxG cF/fC0M/8LvRESWShH920rrERu0s161RuasdOPre0aXu7ZQzkQ68O6MCgYEA23NO DHKNblBOdFEWsvotLqV8DrIbQ4le7sSgQr56/bdn9GScZk2JU0f+pqzpiGUy9bIt 6uujvt5ar0IvpIQVdjf3dbp6Fy+Dwhd4yTR4dMdDECest7jL++/21x8Y0ywFhBIK yEd+QxpOLXP6qaSKTGxL2rnTXRjl8/g629xQPL0CgYEAkNNOh+jLIgjxzGxA9dRV 62M91qaTyi8eDkJV+wgx4taaxZP7Jt5qwCSvjegz/5m01wOZ88hbNxx+XxQhVJK4 SKZFO/I07Sfwh2oeOi0maeBdrYGiY09ZtiJuFRU3FBV3irZHU4zyRBh+VY5HyITX 12JXPWp+JC7WhkG5QiuLzNECgYEA15OBzICLpx6Es4clAVT6JaSzJcyZM9MyyuOl e2ubbrpJCK/9ZBIvIPzMj/e0wiSH1wzeRrSM+ud7tkcSfk6ytptsIN67KSOoD3b3 VNCStEU7ABe5eBG1cRzeI52MyYWpNYBzzyNMSacBvWz9hMD6ivCn44pAtGfNHclw KKNYvxECgYBOamf25md9Jy6rtQsJVEJWw+8sB4lBlKEEadc5qekR7ZQ0hwj8CnTm WOo856ynI28Sog62iw8F/do/z0B29RuGuxw+prkBkn3lg/VQXEitzqcYvota6osa 8XSfaPiTyQwWpzbFNZzzemlTsIDiF3UqwkHvWaMYPDf4Ng3cokPPxw==" ],
+ "certificate" : [ "MIICmDCCAYACCQC7YJWOo6LVaDANBgkqhkiG9w0BAQsFADAOMQwwCgYDVQQDDANq d3QwHhcNMjIwNTA2MTQzNjQ5WhcNMjIwNjA1MTQzNjQ5WjAOMQwwCgYDVQQDDANq d3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ0/69Gf4qP5L+gZ3j 2Srr4Io0B24ILWtot9MfsHeqOZlibjnIOX5eaAr0I2YdeSGj2q+aF2Sx3MNWx14O WEoh1whZp2GoPN22fWGP/baJTCuEfRt3jvmGUpyyJn6jL+x2AaADO+aZNCZ0yoRe pXYH2r0oUGajgCGH/r53jAzWsf2TGXRG8wAot751qggciOiTyEI7hwpBATD8SsF7 hIXZyvfBDAJ8XWpW7h4BU1V/F/L+4S8bdDvHTTk/dNwr5BxiAnFq/eWJy1KLl3JY uAZAC+SSdaK2lErwpUvKkSPlYp6PoIXyerfS62fXkVCDQmQeirPCIKqp56fwYg+1 4jtXAgMBAAEwDQYJKoZIhvcNAQELBQADggEBACJlWtWnQqepYiFCijVgy/eM5KL0 rFZOZ6HNefoJTrYY1QYZrWxRz3M4u9JpUy4fBvGHxElBElcr3fXLXDytH9EwMJm1 E5x3o3qkQyWdXYGW6ZF58dklcJTdejOxEO373qpywVwbCFGiuIt7s5v4v+r2HOg3 D4elb2bqxmRim04xIkVZufKo+h6a8dBb5JEU3UaxyGDBR0IdyjhyBo1+HhH+RqZs xQhQ7DhlIGWUYZNCu13fb1GNSMiNqspKnMpFdQ4Bfpsb7vOeEK+aqJjCKcYbuGa6 BiwBjbKYyEF5r01Tob50dcVPfIGOqO0lQ3IsV31n9LSoAAtaVqioPK1rvDo=" ],
+ "active" : [ "true" ],
+ "priority" : [ "101" ],
+ "enabled" : [ "true" ],
+ "algorithm" : [ "RS256" ]
+ }
+ } ]
+ },
+ "internationalizationEnabled" : false,
+ "supportedLocales" : [ ],
+ "authenticationFlows" : [ {
+ "id" : "f51ca13f-1a57-4cfb-b7c0-62ecd60555cc",
+ "alias" : "Account verification options",
+ "description" : "Method with which to verity the existing account",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "idp-email-verification",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 20,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Verify Existing Account by Re-authentication",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "be1cda35-73c3-49d9-9898-0d7aaf738550",
+ "alias" : "Authentication Options",
+ "description" : "Authentication options.",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "basic-auth",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "basic-auth-otp",
+ "authenticatorFlow" : false,
+ "requirement" : "DISABLED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "auth-spnego",
+ "authenticatorFlow" : false,
+ "requirement" : "DISABLED",
+ "priority" : 30,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "0692db81-4d34-4ed5-8607-193166c92f81",
+ "alias" : "Browser - Conditional OTP",
+ "description" : "Flow to determine if the OTP is required for the authentication",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "conditional-user-configured",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "auth-otp-form",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "9058f38b-ded0-4805-8cd9-b92f9d638a85",
+ "alias" : "Direct Grant - Conditional OTP",
+ "description" : "Flow to determine if the OTP is required for the authentication",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "conditional-user-configured",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "direct-grant-validate-otp",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "d88c67ef-a320-42d3-9ea7-c4a0f1e91e71",
+ "alias" : "First broker login - Conditional OTP",
+ "description" : "Flow to determine if the OTP is required for the authentication",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "conditional-user-configured",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "auth-otp-form",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "d6b14498-7293-49c3-a114-9d54543eaa69",
+ "alias" : "Handle Existing Account",
+ "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "idp-confirm-link",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Account verification options",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "06f73dfd-78b2-464a-be5a-9b79edd65c25",
+ "alias" : "Reset - Conditional OTP",
+ "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "conditional-user-configured",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "reset-otp",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "a39403d3-1547-42da-aabd-2a04afec3c35",
+ "alias" : "User creation or linking",
+ "description" : "Flow for the existing/non-existing user alternatives",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticatorConfig" : "create unique user config",
+ "authenticator" : "idp-create-user-if-unique",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 20,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Handle Existing Account",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "75dbe9e4-84ee-4c31-b4e0-9be4d381b4a1",
+ "alias" : "Verify Existing Account by Re-authentication",
+ "description" : "Reauthentication of existing account",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "idp-username-password-form",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "CONDITIONAL",
+ "priority" : 20,
+ "autheticatorFlow" : true,
+ "flowAlias" : "First broker login - Conditional OTP",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "ca32d1e5-8c8d-4b30-9b4c-21785023d788",
+ "alias" : "browser",
+ "description" : "browser based authentication",
+ "providerId" : "basic-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "auth-cookie",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "auth-spnego",
+ "authenticatorFlow" : false,
+ "requirement" : "DISABLED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "identity-provider-redirector",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 25,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 30,
+ "autheticatorFlow" : true,
+ "flowAlias" : "forms",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "7f6f9377-1881-42ae-b8e9-2383dec03058",
+ "alias" : "clients",
+ "description" : "Base authentication for clients",
+ "providerId" : "client-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "client-secret",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "client-jwt",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "client-secret-jwt",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 30,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "client-x509",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 40,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "f25f0cb8-ebb5-4ead-8a0e-00efa42af1ee",
+ "alias" : "direct grant",
+ "description" : "OpenID Connect Resource Owner Grant",
+ "providerId" : "basic-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "direct-grant-validate-username",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "direct-grant-validate-password",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "CONDITIONAL",
+ "priority" : 30,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Direct Grant - Conditional OTP",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "8be2646f-aacb-4ccb-ab84-4fb2c221d965",
+ "alias" : "docker auth",
+ "description" : "Used by Docker clients to authenticate against the IDP",
+ "providerId" : "basic-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "docker-http-basic-authenticator",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "f033f929-0126-4a9e-872b-420464c86fc8",
+ "alias" : "first broker login",
+ "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account",
+ "providerId" : "basic-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticatorConfig" : "review profile config",
+ "authenticator" : "idp-review-profile",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : true,
+ "flowAlias" : "User creation or linking",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "622a4d14-0f15-405c-b6ff-3cc4a47a2ac4",
+ "alias" : "forms",
+ "description" : "Username, password, otp and other auth forms.",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "auth-username-password-form",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "CONDITIONAL",
+ "priority" : 20,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Browser - Conditional OTP",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "ffc5b288-f220-42c5-b484-4ef38acfa613",
+ "alias" : "http challenge",
+ "description" : "An authentication flow based on challenge-response HTTP Authentication Schemes",
+ "providerId" : "basic-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "no-cookie-redirect",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Authentication Options",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "2fe5d3e1-9fb8-4310-a425-ebec27791ed3",
+ "alias" : "registration",
+ "description" : "registration flow",
+ "providerId" : "basic-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "registration-page-form",
+ "authenticatorFlow" : true,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : true,
+ "flowAlias" : "registration form",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "50e1a75f-d18b-4f06-99c1-a2bee1ea8f13",
+ "alias" : "registration form",
+ "description" : "registration form",
+ "providerId" : "form-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "registration-user-creation",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "registration-profile-action",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 40,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "registration-password-action",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 50,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "registration-recaptcha-action",
+ "authenticatorFlow" : false,
+ "requirement" : "DISABLED",
+ "priority" : 60,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "2ead0f34-79b1-4500-a00f-147a2d3a80c8",
+ "alias" : "reset credentials",
+ "description" : "Reset credentials for a user if they forgot their password or something",
+ "providerId" : "basic-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "reset-credentials-choose-user",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "reset-credential-email",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "reset-password",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 30,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "CONDITIONAL",
+ "priority" : 40,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Reset - Conditional OTP",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "5584a878-8c18-4a66-b834-4151bc2c3fef",
+ "alias" : "saml ecp",
+ "description" : "SAML ECP Profile Authentication Flow",
+ "providerId" : "basic-flow",
+ "topLevel" : true,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "http-basic-authenticator",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ } ],
+ "authenticatorConfig" : [ {
+ "id" : "4772be2b-26eb-4126-8fb4-8cd58f136a74",
+ "alias" : "create unique user config",
+ "config" : {
+ "require.password.update.after.registration" : "false"
+ }
+ }, {
+ "id" : "370961ed-7742-4751-93e2-f3a9ad585f9e",
+ "alias" : "review profile config",
+ "config" : {
+ "update.profile.on.first.login" : "missing"
+ }
+ } ],
+ "requiredActions" : [ {
+ "alias" : "CONFIGURE_TOTP",
+ "name" : "Configure OTP",
+ "providerId" : "CONFIGURE_TOTP",
+ "enabled" : true,
+ "defaultAction" : false,
+ "priority" : 10,
+ "config" : { }
+ }, {
+ "alias" : "terms_and_conditions",
+ "name" : "Terms and Conditions",
+ "providerId" : "terms_and_conditions",
+ "enabled" : false,
+ "defaultAction" : false,
+ "priority" : 20,
+ "config" : { }
+ }, {
+ "alias" : "UPDATE_PASSWORD",
+ "name" : "Update Password",
+ "providerId" : "UPDATE_PASSWORD",
+ "enabled" : true,
+ "defaultAction" : false,
+ "priority" : 30,
+ "config" : { }
+ }, {
+ "alias" : "UPDATE_PROFILE",
+ "name" : "Update Profile",
+ "providerId" : "UPDATE_PROFILE",
+ "enabled" : true,
+ "defaultAction" : false,
+ "priority" : 40,
+ "config" : { }
+ }, {
+ "alias" : "VERIFY_EMAIL",
+ "name" : "Verify Email",
+ "providerId" : "VERIFY_EMAIL",
+ "enabled" : true,
+ "defaultAction" : false,
+ "priority" : 50,
+ "config" : { }
+ }, {
+ "alias" : "delete_account",
+ "name" : "Delete Account",
+ "providerId" : "delete_account",
+ "enabled" : false,
+ "defaultAction" : false,
+ "priority" : 60,
+ "config" : { }
+ }, {
+ "alias" : "update_user_locale",
+ "name" : "Update User Locale",
+ "providerId" : "update_user_locale",
+ "enabled" : true,
+ "defaultAction" : false,
+ "priority" : 1000,
+ "config" : { }
+ } ],
+ "browserFlow" : "browser",
+ "registrationFlow" : "registration",
+ "directGrantFlow" : "direct grant",
+ "resetCredentialsFlow" : "reset credentials",
+ "clientAuthenticationFlow" : "clients",
+ "dockerAuthenticationFlow" : "docker auth",
+ "attributes" : {
+ "cibaBackchannelTokenDeliveryMode" : "poll",
+ "cibaExpiresIn" : "120",
+ "cibaAuthRequestedUserHint" : "login_hint",
+ "oauth2DeviceCodeLifespan" : "600",
+ "clientOfflineSessionMaxLifespan" : "0",
+ "oauth2DevicePollingInterval" : "5",
+ "clientSessionIdleTimeout" : "0",
+ "parRequestUriLifespan" : "60",
+ "clientSessionMaxLifespan" : "0",
+ "clientOfflineSessionIdleTimeout" : "0",
+ "cibaInterval" : "5",
+ "realmReusableOtpCode" : "false"
+ },
+ "keycloakVersion" : "20.0.3",
+ "userManagedAccessAllowed" : false,
+ "clientProfiles" : {
+ "profiles" : [ ]
+ },
+ "clientPolicies" : {
+ "policies" : [ ]
+ }
+}
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated-localhost.config b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated-localhost.config
deleted file mode 100644
index 34ad6565b8..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated-localhost.config
+++ /dev/null
@@ -1,30 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_oauth2]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 1}, %% in minutes
- {oauth_enabled, true},
- {oauth_initiated_logon_type, idp_initiated},
- {oauth_provider_url, "http://localhost:3000"}
- ]},
- {rabbitmq_auth_backend_oauth2, [
- {resource_server_id, <<"rabbitmq">>},
- {preferred_username_claims, [<<"user_name">>]},
- {key_config, [
- {default_key, <<"legacy-token-key">>},
- {signing_keys,
- #{<<"legacy-token-key">> => {pem, <<"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----">>}
- }
- }]
- }
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated-with-prefix.config b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated-with-prefix.config
deleted file mode 100644
index 58e41944c0..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated-with-prefix.config
+++ /dev/null
@@ -1,31 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_oauth2]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 1}, %% in minutes
- {oauth_enabled, true},
- {oauth_initiated_logon_type, idp_initiated},
- {path_prefix, "/my-prefix/another-prefix"},
- {oauth_provider_url, "http://fakeportal:3000"}
- ]},
- {rabbitmq_auth_backend_oauth2, [
- {resource_server_id, <<"rabbitmq">>},
- {preferred_username_claims, [<<"user_name">>]},
- {key_config, [
- {default_key, <<"legacy-token-key">>},
- {signing_keys,
- #{<<"legacy-token-key">> => {pem, <<"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----">>}
- }
- }]
- }
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated.conf b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated.conf
deleted file mode 100644
index 6868c322f5..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-auth_backends.1 = rabbit_auth_backend_oauth2
-
-management.login_session_timeout = 1
-management.oauth_enabled = true
-management.oauth_initiated_logon_type = idp_initiated
-management.oauth_scopes = openid profile rabbitmq.*
-management.oauth_provider_url = http://fakeportal:3000
-
-auth_oauth2.resource_server_id = rabbitmq
-auth_oauth2.preferred_username_claims.1 = user_name
-auth_oauth2.default_key = legacy-token-key
-auth_oauth2.signing_keys.legacy-token-key = /config/uaa/signing-key.pem
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated.config b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated.config
deleted file mode 100644
index 5de7864d58..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-idp-initiated.config
+++ /dev/null
@@ -1,30 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_oauth2]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 1}, %% in minutes
- {oauth_enabled, true},
- {oauth_initiated_logon_type, idp_initiated},
- {oauth_provider_url, "http://fakeportal:3000"}
- ]},
- {rabbitmq_auth_backend_oauth2, [
- {resource_server_id, <<"rabbitmq">>},
- {preferred_username_claims, [<<"user_name">>]},
- {key_config, [
- {default_key, <<"legacy-token-key">>},
- {signing_keys,
- #{<<"legacy-token-key">> => {pem, <<"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----">>}
- }
- }]
- }
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost-keycloak.config b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost-keycloak.config
deleted file mode 100644
index 1b7f9f7e88..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost-keycloak.config
+++ /dev/null
@@ -1,32 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_oauth2]}
- ]},
- {rabbitmq_management, [
- {oauth_enabled, true},
- {oauth_client_id, "rabbitmq-client-code"},
- %{oauth_initiated_logon_type, idp_initiated},
- %{oauth_client_secret, "X2ZqbZYKHq7WP8vsStr23jx6mtukt14g"},
- %{oauth_provider_url, "http://localhost:8080/realms/test"}
- {oauth_provider_url, "http://localhost:8080/realms/test"}
- ]},
- {rabbitmq_auth_backend_oauth2, [
- {resource_server_id, <<"rabbitmq">>},
- {preferred_username_claims, [<<"user_name">>]},
- {key_config, [
- {default_key, <<"Gnl2ZlbRh3rAr6Wymc988_5cY7T5GuePd5dpJlXDJUk">>},
- {signing_keys,
- #{<<"Gnl2ZlbRh3rAr6Wymc988_5cY7T5GuePd5dpJlXDJUk">> => {pem, <<"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----">>}
- }
- }]
- }
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.conf b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.conf
deleted file mode 100644
index 99bdaeac3a..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-auth_backends.1 = rabbit_auth_backend_oauth2
-
-management.login_session_timeout = 1
-management.enable_uaa = true
-management.oauth_enabled = true
-management.oauth_client_id = rabbit_client_code
-management.oauth_client_secret = rabbit_client_code
-management.oauth_provider_url = http://localhost:8080
-
-auth_oauth2.resource_server_id = rabbitmq
-auth_oauth2.preferred_username_claims.1 = user_name
-auth_oauth2.default_key = legacy-token-key
-auth_oauth2.signing_keys.legacy-token-key = deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/signing-key.pem
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.config b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.config
deleted file mode 100644
index 3c79323f9f..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-localhost.config
+++ /dev/null
@@ -1,32 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_oauth2]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 1}, %% in minutes
- {enable_uaa, true},
- {oauth_enabled, true},
- {oauth_client_id, "rabbit_client_code"},
- {oauth_client_secret, "rabbit_client_code"},
- {oauth_provider_url, "http://localhost:8080"}
- ]},
- {rabbitmq_auth_backend_oauth2, [
- {resource_server_id, <<"rabbitmq">>},
- {preferred_username_claims, [<<"user_name">>]},
- {key_config, [
- {default_key, <<"legacy-token-key">>},
- {signing_keys,
- #{<<"legacy-token-key">> => {pem, <<"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----">>}
- }
- }]
- }
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-keycloak.config b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-keycloak.config
deleted file mode 100644
index 25c94a7fcb..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-keycloak.config
+++ /dev/null
@@ -1,31 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_oauth2]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 1}, %% in minutes
- {oauth_enabled, true},
- {oauth_client_id, "rabbitmq-client-code"},
- %{oauth_client_secret, "X2ZqbZYKHq7WP8vsStr23jx6mtukt14g"},
- {oauth_provider_url, "http://keycloak:8080/realms/test"}
- ]},
- {rabbitmq_auth_backend_oauth2, [
- {resource_server_id, <<"rabbitmq">>},
- {preferred_username_claims, [<<"user_name">>]},
- {key_config, [
- {default_key, <<"Gnl2ZlbRh3rAr6Wymc988_5cY7T5GuePd5dpJlXDJUk">>},
- {signing_keys,
- #{<<"Gnl2ZlbRh3rAr6Wymc988_5cY7T5GuePd5dpJlXDJUk">> => {pem, <<"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----">>}
- }
- }]
- }
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-mgt-prefix.config b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-mgt-prefix.config
deleted file mode 100644
index 646ac7f8f0..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq-with-mgt-prefix.config
+++ /dev/null
@@ -1,33 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_oauth2]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 1}, %% in minutes
- {enable_uaa, true},
- {oauth_enabled, true},
- {path_prefix, "/my-prefix/another-prefix"},
- {oauth_client_id, "rabbit_client_code"},
- {oauth_client_secret, "rabbit_client_code"},
- {oauth_provider_url, "http://uaa:8080"}
- ]},
- {rabbitmq_auth_backend_oauth2, [
- {resource_server_id, <<"rabbitmq">>},
- {preferred_username_claims, [<<"user_name">>]},
- {key_config, [
- {default_key, <<"legacy-token-key">>},
- {signing_keys,
- #{<<"legacy-token-key">> => {pem, <<"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----">>}
- }
- }]
- }
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.conf b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.conf
index ba530003d3..12065e8f58 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.conf
+++ b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.conf
@@ -1,13 +1,14 @@
auth_backends.1 = rabbit_auth_backend_oauth2
management.login_session_timeout = 1
+management.enable_uaa = true
management.oauth_enabled = true
management.oauth_client_id = rabbit_client_code
-management.oauth_client_secret = rabbit_client_code
-management.oauth_scopes = openid profile rabbitmq.*
-management.oauth_provider_url = http://uaa:8080
+management.oauth_scopes = ${OAUTH_SCOPES}
+management.oauth_provider_url = ${OAUTH_PROVIDER_URL}
+#management.cors.allow_origins.1 = *
auth_oauth2.resource_server_id = rabbitmq
auth_oauth2.preferred_username_claims.1 = user_name
-auth_oauth2.default_key = legacy-token-key
-auth_oauth2.signing_keys.legacy-token-key = /config/uaa/signing-key.pem
+auth_oauth2.default_key = ${OAUTH_SIGNING_KEY_ID}
+auth_oauth2.signing_keys.${OAUTH_SIGNING_KEY_ID} = /config/signing-key.pem
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.config b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.config
deleted file mode 100644
index c3d1df964a..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.config
+++ /dev/null
@@ -1,32 +0,0 @@
-[
- {rabbit, [
- {auth_backends, [rabbit_auth_backend_oauth2]}
- ]},
- {rabbitmq_management, [
- {login_session_timeout, 1}, %% in minutes
- {enable_uaa, true},
- {oauth_enabled, true},
- {oauth_client_id, "rabbit_client_code"},
- {oauth_client_secret, "rabbit_client_code"},
- {oauth_provider_url, "http://uaa:8080"}
- ]},
- {rabbitmq_auth_backend_oauth2, [
- {resource_server_id, <<"rabbitmq">>},
- {preferred_username_claims, [<<"user_name">>]},
- {key_config, [
- {default_key, <<"legacy-token-key">>},
- {signing_keys,
- #{<<"legacy-token-key">> => {pem, <<"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----">>}
- }
- }]
- }
- ]}
-].
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.idp-initiated.conf b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.idp-initiated.conf
new file mode 100644
index 0000000000..22bff8abe9
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.idp-initiated.conf
@@ -0,0 +1 @@
+management.oauth_initiated_logon_type = idp_initiated
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.mgt-prefix.conf b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.mgt-prefix.conf
new file mode 100644
index 0000000000..d8ed31ae7c
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.mgt-prefix.conf
@@ -0,0 +1 @@
+management.path_prefix = /my-prefix/another-prefix
diff --git a/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.uaa.conf b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.uaa.conf
new file mode 100644
index 0000000000..19d6209805
--- /dev/null
+++ b/deps/rabbitmq_management/selenium/test/oauth/rabbitmq.uaa.conf
@@ -0,0 +1 @@
+management.oauth_client_secret = ${OAUTH_CLIENT_SECRET}
diff --git a/deps/rabbitmq_management/selenium/test/oauth/test.sh b/deps/rabbitmq_management/selenium/test/oauth/test.sh
deleted file mode 100755
index 1c4d8538f4..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/test.sh
+++ /dev/null
@@ -1,5 +0,0 @@
- curl 'http://localhost:8080/oauth/token' -i -X POST \
- -H 'Content-Type: application/x-www-form-urlencoded' \
- -H 'Accept: application/json' \
- -d 'scope=rabbitmq&client_id=rabbit_client_code&client_secret=rabbit_client_code&grant_type=client_credentials&token_format=jwt&response_type=token'
-
diff --git a/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/log4j2.properties b/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/log4j2.properties
deleted file mode 100644
index 91464f524f..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/log4j2.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-status = error
-dest = err
-name = UaaLog
-
-property.log_pattern=[%d{yyyy-MM-dd'T'HH:mm:ss.nnnnnn}{GMT+0}Z] uaa%X{context} - %pid [%t] .... %5p --- %c{1}: %replace{%m}{(?<=password=|client_secret=)([^&]*)}{<redacted>}%n
-
-appender.uaaDefaultAppender.type = File
-appender.uaaDefaultAppender.name = UaaDefaultAppender
-appender.uaaDefaultAppender.fileName = logs/uaa.log
-appender.uaaDefaultAppender.layout.type = PatternLayout
-appender.uaaDefaultAppender.layout.pattern = ${log_pattern}
-
-appender.uaaAuditAppender.type = File
-appender.uaaAuditAppender.name = UaaAuditAppender
-appender.uaaAuditAppender.fileName = logs/uaa_events.log
-appender.uaaAuditAppender.layout.type = PatternLayout
-appender.uaaAuditAppender.layout.pattern = ${log_pattern}
-
-rootLogger.level = debug
-rootLogger.appenderRef.uaaDefaultAppender.ref = UaaDefaultAppender
-
-logger.UAAAudit.name = UAA.Audit
-logger.UAAAudit.level = debug
-logger.UAAAudit.additivity = true
-logger.UAAAudit.appenderRef.auditEventLog.ref = UaaAuditAppender
-
-logger.cfIdentity.name = org.cloudfoundry.identity
-logger.cfIdentity.level = debug
-logger.cfIdentity.additivity = false
-logger.cfIdentity.appenderRef.uaaDefaultAppender.ref = UaaDefaultAppender
diff --git a/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/signing-key.pem b/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/signing-key.pem
deleted file mode 100644
index a49f2f41e6..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/signing-key.pem
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
-6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
-IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
-B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
-2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
-QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
-VwIDAQAB
------END PUBLIC KEY-----
diff --git a/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/uaa.yml b/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/uaa.yml
deleted file mode 100644
index 5cdee782df..0000000000
--- a/deps/rabbitmq_management/selenium/test/oauth/uaa-localhost/uaa.yml
+++ /dev/null
@@ -1,184 +0,0 @@
-logging:
- config: /uaa/log4j2.properties
-
-issuer:
- uri: http://localhost:8080/
-
-encryption:
- active_key_label: CHANGE-THIS-KEY
- encryption_keys:
- - label: CHANGE-THIS-KEY
- passphrase: CHANGEME
-
-logout:
- redirect:
- parameter:
- disable: false
- whitelist:
- http://localhost:15672/*
-login:
- serviceProviderKey: |
- -----BEGIN RSA PRIVATE KEY-----
- MIICXQIBAAKBgQDHtC5gUXxBKpEqZTLkNvFwNGnNIkggNOwOQVNbpO0WVHIivig5
- L39WqS9u0hnA+O7MCA/KlrAR4bXaeVVhwfUPYBKIpaaTWFQR5cTR1UFZJL/OF9vA
- fpOwznoD66DDCnQVpbCjtDYWX+x6imxn8HCYxhMol6ZnTbSsFW6VZjFMjQIDAQAB
- AoGAVOj2Yvuigi6wJD99AO2fgF64sYCm/BKkX3dFEw0vxTPIh58kiRP554Xt5ges
- 7ZCqL9QpqrChUikO4kJ+nB8Uq2AvaZHbpCEUmbip06IlgdA440o0r0CPo1mgNxGu
- lhiWRN43Lruzfh9qKPhleg2dvyFGQxy5Gk6KW/t8IS4x4r0CQQD/dceBA+Ndj3Xp
- ubHfxqNz4GTOxndc/AXAowPGpge2zpgIc7f50t8OHhG6XhsfJ0wyQEEvodDhZPYX
- kKBnXNHzAkEAyCA76vAwuxqAd3MObhiebniAU3SnPf2u4fdL1EOm92dyFs1JxyyL
- gu/DsjPjx6tRtn4YAalxCzmAMXFSb1qHfwJBAM3qx3z0gGKbUEWtPHcP7BNsrnWK
- vw6By7VC8bk/ffpaP2yYspS66Le9fzbFwoDzMVVUO/dELVZyBnhqSRHoXQcCQQCe
- A2WL8S5o7Vn19rC0GVgu3ZJlUrwiZEVLQdlrticFPXaFrn3Md82ICww3jmURaKHS
- N+l4lnMda79eSp3OMmq9AkA0p79BvYsLshUJJnvbk76pCjR28PK4dV1gSDUEqQMB
- qy45ptdwJLqLJCeNoR0JUcDNIRhOCuOPND7pcMtX6hI/
- -----END RSA PRIVATE KEY-----
- serviceProviderKeyPassword: password
- serviceProviderCertificate: |
- -----BEGIN CERTIFICATE-----
- MIIDSTCCArKgAwIBAgIBADANBgkqhkiG9w0BAQQFADB8MQswCQYDVQQGEwJhdzEO
- MAwGA1UECBMFYXJ1YmExDjAMBgNVBAoTBWFydWJhMQ4wDAYDVQQHEwVhcnViYTEO
- MAwGA1UECxMFYXJ1YmExDjAMBgNVBAMTBWFydWJhMR0wGwYJKoZIhvcNAQkBFg5h
- cnViYUBhcnViYS5hcjAeFw0xNTExMjAyMjI2MjdaFw0xNjExMTkyMjI2MjdaMHwx
- CzAJBgNVBAYTAmF3MQ4wDAYDVQQIEwVhcnViYTEOMAwGA1UEChMFYXJ1YmExDjAM
- BgNVBAcTBWFydWJhMQ4wDAYDVQQLEwVhcnViYTEOMAwGA1UEAxMFYXJ1YmExHTAb
- BgkqhkiG9w0BCQEWDmFydWJhQGFydWJhLmFyMIGfMA0GCSqGSIb3DQEBAQUAA4GN
- ADCBiQKBgQDHtC5gUXxBKpEqZTLkNvFwNGnNIkggNOwOQVNbpO0WVHIivig5L39W
- qS9u0hnA+O7MCA/KlrAR4bXaeVVhwfUPYBKIpaaTWFQR5cTR1UFZJL/OF9vAfpOw
- znoD66DDCnQVpbCjtDYWX+x6imxn8HCYxhMol6ZnTbSsFW6VZjFMjQIDAQABo4Ha
- MIHXMB0GA1UdDgQWBBTx0lDzjH/iOBnOSQaSEWQLx1syGDCBpwYDVR0jBIGfMIGc
- gBTx0lDzjH/iOBnOSQaSEWQLx1syGKGBgKR+MHwxCzAJBgNVBAYTAmF3MQ4wDAYD
- VQQIEwVhcnViYTEOMAwGA1UEChMFYXJ1YmExDjAMBgNVBAcTBWFydWJhMQ4wDAYD
- VQQLEwVhcnViYTEOMAwGA1UEAxMFYXJ1YmExHTAbBgkqhkiG9w0BCQEWDmFydWJh
- QGFydWJhLmFyggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAYvBJ
- 0HOZbbHClXmGUjGs+GS+xC1FO/am2suCSYqNB9dyMXfOWiJ1+TLJk+o/YZt8vuxC
- KdcZYgl4l/L6PxJ982SRhc83ZW2dkAZI4M0/Ud3oePe84k8jm3A7EvH5wi5hvCkK
- RpuRBwn3Ei+jCRouxTbzKPsuCVB+1sNyxMTXzf0=
- -----END CERTIFICATE-----
-#The secret that an external login server will use to authenticate to the uaa using the id `login`
-LOGIN_SECRET: loginsecret
-
-jwt:
- token:
- policy:
- # Will override global validity policies for the default zone only.
-# accessTokenValiditySeconds: 150
- accessTokenValiditySeconds: 10
- keys:
- legacy-token-key:
- signingKey: |
- -----BEGIN RSA PRIVATE KEY-----
- MIIEpAIBAAKCAQEA2dP+vRn+Kj+S/oGd49kq6+CKNAduCC1raLfTH7B3qjmZYm45
- yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhKIdcIWadhqDzdtn1hj/22iUwrhH0b
- d475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2B9q9KFBmo4Ahh/6+d4wM1rH9kxl0
- RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF2cr3wQwCfF1qVu4eAVNVfxfy/uEv
- G3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgGQAvkknWitpRK8KVLypEj5WKej6CF
- 8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7VwIDAQABAoIBAFsB5FszYepa11o3
- 4zSPxgv4qyUjuYf3GfoNW0rRGp3nJLtoHAIYa0CcLX9kzsQfmLtxoY46mdppxr8Z
- 2qUZpBdRVO7ILNfyXhthdQKI2NuyFDhtYK1p8bx6BXe095HMcvm2ohjXzPdTP4Hq
- HrXAYXjUndUbClbjMJ82AnPF8pM70kBq7g733UqkdfrMuv6/d95Jiyw4cC7dGsI3
- Ruz9DGhiAyCBtQ0tUB+6Kqn5DChSB+ccfMJjr6GnCVYmERxEQ5DJCTIX8am8C6KX
- mAxUwHMTsEGBU6GzhcUgAwUFEK3I9RptdlRFp7F8E/P0LxmPkFdgaBNUhrdnB7Y4
- 01n1R1kCgYEA/huFJgwVWSBSK/XIouFuQrxZOI9JbBbdmpFT7SBGCdFg26Or9y7j
- +N5HE7yuoZ9PkBh17zzosZdsJhGocRYvO0LSq8cXvKXKCwn2fTMM7uJ/oQe68sxG
- cF/fC0M/8LvRESWShH920rrERu0s161RuasdOPre0aXu7ZQzkQ68O6MCgYEA23NO
- DHKNblBOdFEWsvotLqV8DrIbQ4le7sSgQr56/bdn9GScZk2JU0f+pqzpiGUy9bIt
- 6uujvt5ar0IvpIQVdjf3dbp6Fy+Dwhd4yTR4dMdDECest7jL++/21x8Y0ywFhBIK
- yEd+QxpOLXP6qaSKTGxL2rnTXRjl8/g629xQPL0CgYEAkNNOh+jLIgjxzGxA9dRV
- 62M91qaTyi8eDkJV+wgx4taaxZP7Jt5qwCSvjegz/5m01wOZ88hbNxx+XxQhVJK4
- SKZFO/I07Sfwh2oeOi0maeBdrYGiY09ZtiJuFRU3FBV3irZHU4zyRBh+VY5HyITX
- 12JXPWp+JC7WhkG5QiuLzNECgYEA15OBzICLpx6Es4clAVT6JaSzJcyZM9MyyuOl
- e2ubbrpJCK/9ZBIvIPzMj/e0wiSH1wzeRrSM+ud7tkcSfk6ytptsIN67KSOoD3b3
- VNCStEU7ABe5eBG1cRzeI52MyYWpNYBzzyNMSacBvWz9hMD6ivCn44pAtGfNHclw
- KKNYvxECgYBOamf25md9Jy6rtQsJVEJWw+8sB4lBlKEEadc5qekR7ZQ0hwj8CnTm
- WOo856ynI28Sog62iw8F/do/z0B29RuGuxw+prkBkn3lg/VQXEitzqcYvota6osa
- 8XSfaPiTyQwWpzbFNZzzemlTsIDiF3UqwkHvWaMYPDf4Ng3cokPPxw==
- -----END RSA PRIVATE KEY-----
-
-scim:
- users:
- - rabbit_admin|rabbit_admin|scim.read,openid,rabbitmq.read:*/*,rabbitmq.write:*/*,rabbitmq.configure:*/*,rabbitmq.tag:administrator
- - rabbitmq_management|rabbitmq_management|scim.read,openid,rabbitmq.read:*/*,rabbitmq.write:*/*,rabbitmq.configure:*/*,rabbitmq.tag:management
- - rabbit_monitor|rabbit_monitor|scim.read,openid,rabbitmq.tag:monitoring
- - rabbit_no_management|rabbit_no_management|scim.read,openid,rabbitmq.read:*/*
- groups:
- 'rabbitmq.read:*/*': Read all
- 'rabbitmq.write:*/*': Write all
- 'rabbitmq.configure:*/*': Configure all
- 'rabbitmq.tag:management': Management
- 'rabbitmq.tag:monitoring': Monitoring
- 'rabbitmq.tag:administrator': Administrator
-
-oauth:
- # Always override clients on startup
- client:
- override: true
-
- # List of OAuth clients
- clients:
- admin:
- id: admin
- secret: adminsecret
- authorized-grant-types: client_credentials
- scope: none
- authorities: uaa.admin,clients.admin,clients.read,clients.write,clients.secret,scim.write,scim.read,uaa.resource
- mgt_api_client:
- id: mgt_api_client
- secret: mgt_api_client
- authorized-grant-types: client_credentials
- authorities: rabbitmq.tag:monitoring
- rabbit_client_code:
- id: rabbit_client_code
- secret: rabbit_client_code
- authorized-grant-types: authorization_code,refresh_token
- scope: rabbitmq.*,openid,profile
- authorities: uaa.resource,rabbitmq.*
- redirect-uri: http://localhost:15672
- #redirect-uri: http://localhost:15672/my-prefix/another-prefix/
- autoapprove: true
- allowpublic: true
- rabbit_idp_user:
- id: rabbit_idp_user
- secret: rabbit_idp_user
- authorized-grant-types: client_credentials
- #scope: openid,profile,rabbitmq.tag:management
- authorities: uaa.resource,openid,profile,rabbitmq.tag:administrator
- #redirect-uri: http://localhost:15672
- redirect-uri: http://localhost:15672/my-prefix/another-prefix/
- autoapprove: true
- allowpublic: true
- mgt_api_client_2:
- id: mgt_api_client_2
- secret: mgt_api_client_2
- authorized-grant-types: client_credentials
- authorities: api://rabbitmq:management
- producer:
- id: producer
- secret: producer_secret
- authorities: rabbitmq.write:%2F/x-*,rabbitmq.write:%2F/q-*,rabbitmq.read:%2F/x-*,rabbitmq.configure:%2F/*
- authorized-grant-types: client_credentials
- consumer:
- id: consumer
- secret: consumer_secret
- authorities: rabbitmq.read:*/*,rabbitmq.configure:*/*,rabbitmq.write:*/x-*,rabbitmq.write:*/q-*
- authorized-grant-types: client_credentials
- jms_producer:
- id: jms_producer
- secret: jms_producer_secret
- authorities: rabbitmq.write:%2F/x-*,rabbitmq.write:%2F/q-*,rabbitmq.read:%2F/x-*,rabbitmq.configure:%2F/*,rabbitmq.configure:*/jms.durable.queues,rabbitmq.write:*/jms.durable.queues,rabbitmq.read:*/jms.durable.queues
- authorized-grant-types: client_credentials
- jms_consumer:
- id: jms_consumer
- secret: jms_consumer_secret
- authorities: rabbitmq.read:*/*,rabbitmq.configure:*/*,rabbitmq.write:*/x-*,rabbitmq.write:*/q-*,rabbitmq.write:*/jms.durable.queues
- authorized-grant-types: client_credentials
- producer_with_roles:
- id: producer_with_roles
- secret: producer_with_roles_secret
- authorities: rabbitmq.*,api://rabbitmq:producer,api://rabbitmq:Administrator
- authorized-grant-types: client_credentials
- consumer_with_roles:
- id: consumer_with_roles
- secret: consumer_with_roles_secret
- authorities: rabbitmq.* api://rabbitmq:Read.All,api://rabbitmq:Configure.All,api://rabbitmq:Write.All
- authorized-grant-types: client_credentials
diff --git a/deps/rabbitmq_management/selenium/test/oauth/uaa/uaa.yml b/deps/rabbitmq_management/selenium/test/oauth/uaa/uaa.yml
index cb298a4a1c..66be2d34ec 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/uaa/uaa.yml
+++ b/deps/rabbitmq_management/selenium/test/oauth/uaa/uaa.yml
@@ -2,7 +2,7 @@ logging:
config: /uaa/log4j2.properties
issuer:
- uri: http://uaa:8080/
+ uri: ${UAA_URL}
encryption:
active_key_label: CHANGE-THIS-KEY
@@ -15,7 +15,7 @@ logout:
parameter:
disable: false
whitelist:
- http://rabbitmq:15672/*
+ ${RABBITMQ_BASE_URL}/*
login:
serviceProviderKey: |
-----BEGIN RSA PRIVATE KEY-----
@@ -132,7 +132,7 @@ oauth:
authorized-grant-types: authorization_code,refresh_token
scope: rabbitmq.*,openid,profile
authorities: uaa.resource,rabbitmq
- redirect-uri: http://rabbitmq:15672
+ redirect-uri: ${RABBITMQ_URL}
autoapprove: true
allowpublic: true
rabbit_idp_user:
@@ -140,8 +140,7 @@ oauth:
secret: rabbit_idp_user
authorized-grant-types: client_credentials
authorities: uaa.resource,rabbitmq.tag:administrator
- redirect-uri: http://rabbitmq:15672
- #redirect-uri: http://localhost:15672/my-prefix/another-prefix/
+ redirect-uri: ${RABBITMQ_URL}
autoapprove: true
allowpublic: true
mgt_api_client_2:
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-uaa-down/landing.js b/deps/rabbitmq_management/selenium/test/oauth/with-idp-down/landing.js
index 30e81a714b..30e81a714b 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-uaa-down/landing.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-idp-down/landing.js
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/happy-login.js b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/happy-login.js
index e5f726f25c..e5f726f25c 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/happy-login.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/happy-login.js
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/landing.js b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/landing.js
index ef102f876d..ef102f876d 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/landing.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/landing.js
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/logout.js b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/logout.js
index a37c40f283..a37c40f283 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/logout.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/logout.js
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/token-expires.js b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/token-expires.js
index 50094027d9..50094027d9 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/token-expires.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/token-expires.js
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/unauthorized.js b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/unauthorized.js
index f26daba016..f26daba016 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated-logon/unauthorized.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-idp-initiated/unauthorized.js
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-uaa/happy-login.js b/deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/happy-login.js
index 78c550c865..78c550c865 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-uaa/happy-login.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/happy-login.js
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-uaa/landing.js b/deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/landing.js
index 56fc316978..6a600a7477 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-uaa/landing.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/landing.js
@@ -17,7 +17,7 @@ describe('A user which accesses any protected URL without a session', function (
})
it('should be presented with a login button to log in', async function () {
- await homePage.isLoaded()
+ await homePage.isLoaded()
const value = await homePage.getLoginButton()
assert.equal(value, 'Click here to log in')
})
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-uaa/logout.js b/deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/logout.js
index cfcdada50b..cfcdada50b 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-uaa/logout.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/logout.js
diff --git a/deps/rabbitmq_management/selenium/test/oauth/with-uaa/token-refresh.js b/deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/token-refresh.js
index 17b2b696d3..17b2b696d3 100644
--- a/deps/rabbitmq_management/selenium/test/oauth/with-uaa/token-refresh.js
+++ b/deps/rabbitmq_management/selenium/test/oauth/with-sp-initiated/token-refresh.js
diff --git a/deps/rabbitmq_management/selenium/test/utils.js b/deps/rabbitmq_management/selenium/test/utils.js
index 6e45104495..b0109f989f 100644
--- a/deps/rabbitmq_management/selenium/test/utils.js
+++ b/deps/rabbitmq_management/selenium/test/utils.js
@@ -2,7 +2,7 @@ const fs = require('fs')
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest
const fsp = fs.promises
const path = require('path')
-const { By, Key, until, Builder } = require('selenium-webdriver')
+const { By, Key, until, Builder, logging } = require('selenium-webdriver')
require('chromedriver')
const uaaUrl = process.env.UAA_URL || 'http://localhost:8080'
@@ -82,6 +82,11 @@ module.exports = {
},
teardown: async (driver, test, captureScreen = null) => {
+ driver.manage().logs().get(logging.Type.BROWSER).then(function(entries) {
+ entries.forEach(function(entry) {
+ console.log('[%s] %s', entry.level.name, entry.message);
+ })
+ })
if (test.currentTest) {
if (test.currentTest.isPassed()) {
driver.executeScript('lambda-status=passed')