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+
].

.ci/windows/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/windows/gha-setup.ps1

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ New-Variable -Name ca_certificate_file -Option Constant -Value `
2020
New-Variable -Name enabled_plugins_file -Option Constant -Value `
2121
(Resolve-Path -LiteralPath (Join-Path -Path $ci_windows_dir -ChildPath 'enabled_plugins'))
2222

23+
New-Variable -Name advanced_config_file -Option Constant -Value `
24+
(Resolve-Path -LiteralPath (Join-Path -Path $ci_windows_dir -ChildPath 'advanced.config'))
25+
26+
27+
2328
Write-Host "[INFO] importing CA cert from '$ca_certificate_file'"
2429
Import-Certificate -Verbose -CertStoreLocation Cert:\LocalMachine\Root -FilePath $ca_certificate_file
2530

@@ -145,6 +150,7 @@ $rabbitmq_appdata_dir = Join-Path -Path $env:AppData -ChildPath 'RabbitMQ'
145150
New-Item -Path $rabbitmq_appdata_dir -ItemType Directory
146151
$rabbitmq_conf_file = Join-Path -Path $rabbitmq_appdata_dir -ChildPath 'rabbitmq.conf'
147152
$rabbitmq_enabled_plugins_file = Join-Path -Path $rabbitmq_appdata_dir -ChildPath 'enabled_plugins'
153+
$rabbitmq_advanced_config_file = Join-Path -Path $rabbitmq_appdata_dir -ChildPath 'advanced.config'
148154

149155
Write-Host "[INFO] Creating RabbitMQ configuration file in '$rabbitmq_appdata_dir'"
150156
Get-Content $rabbitmq_conf_in_file | %{ $_ -replace '@@CERTS_DIR@@', $certs_dir } | %{ $_ -replace '\\', '/' } | Set-Content -LiteralPath $rabbitmq_conf_file
@@ -153,6 +159,10 @@ Get-Content $rabbitmq_conf_file
153159
Write-Host "[INFO] Copying '$enabled_plugins_file' to '$rabbitmq_enabled_plugins_file'"
154160
Copy-Item -Verbose -Force -LiteralPath $enabled_plugins_file -Destination $rabbitmq_enabled_plugins_file
155161

162+
Write-Host "[INFO] Copying '$advanced_config_file' to '$rabbitmq_advanced_config_file'"
163+
Copy-Item -Verbose -Force -LiteralPath $advanced_config_file -Destination $rabbitmq_advanced_config_file
164+
165+
156166
Write-Host '[INFO] Creating Erlang cookie files...'
157167

158168
function Set-ErlangCookie

.ci/windows/versions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"erlang": "27.2",
3-
"rabbitmq": "4.0.5"
3+
"rabbitmq": "4.1.0-beta.4"
44
}

Directory.Packages.props

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<!-- Tests -->
1414
<PackageVersion Include="Microsoft.Extensions.Diagnostics" Version="9.0.0" />
1515
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Testing" Version="9.0.0" />
16+
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.6.1" />
1617
<PackageVersion Include="System.Text.Json" Version="9.0.0" />
1718
<PackageVersion Include="xunit" Version="2.9.2" />
1819
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
@@ -39,4 +40,4 @@
3940
<GlobalPackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
4041
<GlobalPackageReference Include="MinVer" Version="6.0.0" />
4142
</ItemGroup>
42-
</Project>
43+
</Project>

0 commit comments

Comments
 (0)