Skip to content

Commit 6764374

Browse files
authored
Implement AMQP 1.0: support JWT (OAuth 2) (#109)
- Closes: #85 - Add `rabbitmq_auth_backend_oauth2` configuration to CI ubuntu single node and CI cluster. - Update the RabbitMQ docker images to `4.1.0-beta.4` - Add TLS tests for different virtual hosts - Add an Example for OAuth2 --------- Signed-off-by: Gabriele Santomaggio <[email protected]>
1 parent 58fd328 commit 6764374

33 files changed

+560
-93
lines changed

.ci/ubuntu/cluster/gha-setup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ function run_docker_compose
1919
docker compose --file "$script_dir/docker-compose.yml" $@
2020
}
2121

22-
readonly rabbitmq_image="${RABBITMQ_IMAGE:-pivotalrabbitmq/rabbitmq:main}"
22+
readonly rabbitmq_image="${RABBITMQ_IMAGE:-rabbitmq:4.1.0-beta.4-management-alpine}"
2323

2424
if [[ ! -v GITHUB_ACTIONS ]]
2525
then

.ci/ubuntu/cluster/rmq/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ARG RABBITMQ_DOCKER_TAG=pivotalrabbitmq/rabbitmq:main
1+
ARG RABBITMQ_DOCKER_TAG=rabbitmq:4.1.0-beta.4-management-alpine
22

33
FROM ${RABBITMQ_DOCKER_TAG}
44

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
11
[
2-
{kernel, [{net_ticktime, 15}]}
3-
].
2+
{kernel, [{net_ticktime, 15}]},
3+
{rabbitmq_auth_backend_oauth2, [{key_config,
4+
[{signing_keys,
5+
#{<<"token-key">> =>
6+
{map,
7+
#{<<"alg">> => <<"HS256">>,
8+
<<"k">> => <<"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGH">>,
9+
<<"kid">> => <<"token-key">>,
10+
<<"kty">> => <<"oct">>,
11+
<<"use">> => <<"sig">>,
12+
<<"value">> => <<"token-key">>}}}}]},
13+
{resource_server_id,<<"rabbitmq">>}]}
14+
].
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[rabbitmq_auth_mechanism_ssl,rabbitmq_management,rabbitmq_top].
1+
[rabbitmq_auth_mechanism_ssl,rabbitmq_management,rabbitmq_stream,rabbitmq_stream_management,rabbitmq_top,rabbitmq_auth_backend_oauth2].

.ci/ubuntu/cluster/rmq/rabbitmq.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,7 @@ cluster_formation.peer_discovery_backend = classic_config
2828
cluster_formation.classic_config.nodes.0 = [email protected]
2929
cluster_formation.classic_config.nodes.1 = [email protected]
3030
cluster_formation.classic_config.nodes.2 = [email protected]
31+
32+
33+
auth_backends.1 = internal
34+
auth_backends.2 = rabbit_auth_backend_oauth2

.ci/ubuntu/one-node/advanced.config

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[
2+
{rabbitmq_auth_backend_oauth2, [{key_config,
3+
[{signing_keys,
4+
#{<<"token-key">> =>
5+
{map,
6+
#{<<"alg">> => <<"HS256">>,
7+
<<"k">> => <<"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGH">>,
8+
<<"kid">> => <<"token-key">>,
9+
<<"kty">> => <<"oct">>,
10+
<<"use">> => <<"sig">>,
11+
<<"value">> => <<"token-key">>}}}}]},
12+
{resource_server_id,<<"rabbitmq">>}]}
13+
].

.ci/ubuntu/one-node/enabled_plugins

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[rabbitmq_auth_mechanism_ssl,rabbitmq_management,rabbitmq_stream,rabbitmq_stream_management,rabbitmq_top].
1+
[rabbitmq_auth_mechanism_ssl,rabbitmq_management,rabbitmq_stream,rabbitmq_stream_management,rabbitmq_top,rabbitmq_auth_backend_oauth2].

.ci/ubuntu/one-node/gha-setup.sh

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,9 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
88
readonly script_dir
99
echo "[INFO] script_dir: '$script_dir'"
1010

11-
if [[ $3 == 'arm' ]]
12-
then
13-
readonly rabbitmq_image="${RABBITMQ_IMAGE:-pivotalrabbitmq/rabbitmq-arm64:main}"
14-
else
15-
readonly rabbitmq_image="${RABBITMQ_IMAGE:-pivotalrabbitmq/rabbitmq:main}"
16-
fi
11+
12+
readonly rabbitmq_image="${RABBITMQ_IMAGE:-rabbitmq:4.1.0-beta.4-management-alpine}"
13+
1714

1815

1916
readonly docker_name_prefix='rabbitmq-amqp-dotnet-client'
@@ -92,6 +89,7 @@ function start_rabbitmq
9289
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/one-node/enabled_plugins:/etc/rabbitmq/enabled_plugins" \
9390
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/one-node/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro" \
9491
--volume "$GITHUB_WORKSPACE/.ci/certs:/etc/rabbitmq/certs:ro" \
92+
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/one-node/advanced.config:/etc/rabbitmq/advanced.config:ro" \
9593
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/log:/var/log/rabbitmq" \
9694
"$rabbitmq_image"
9795
}

.ci/ubuntu/one-node/rabbitmq.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,6 @@ ssl_options.fail_if_no_peer_cert = false
2424
auth_mechanisms.1 = PLAIN
2525
auth_mechanisms.2 = ANONYMOUS
2626
auth_mechanisms.3 = EXTERNAL
27+
28+
auth_backends.1 = internal
29+
auth_backends.2 = rabbit_auth_backend_oauth2

.ci/windows/advanced.config

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[
2+
{rabbitmq_auth_backend_oauth2, [{key_config,
3+
[{signing_keys,
4+
#{<<"token-key">> =>
5+
{map,
6+
#{<<"alg">> => <<"HS256">>,
7+
<<"k">> => <<"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGH">>,
8+
<<"kid">> => <<"token-key">>,
9+
<<"kty">> => <<"oct">>,
10+
<<"use">> => <<"sig">>,
11+
<<"value">> => <<"token-key">>}}}}]},
12+
{resource_server_id,<<"rabbitmq">>}]}
13+
].

0 commit comments

Comments
 (0)