Skip to content

Commit 45950bb

Browse files
Baptiste DA ROITbaptistedaroit
Baptiste DA ROIT
authored andcommitted
Add Azure AD use case
1 parent 7b0ba1d commit 45950bb

File tree

10 files changed

+370
-4
lines changed

10 files changed

+370
-4
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
./uaa-4.24.0/
33
conf/asymmetric_key/uaa.yml
44
conf/symmetric_key/uaa.yml
5+
conf/azure/*
6+
!conf/azure/rabbitmq.config
57
plugin
68
rabbitmq-auth-backend-oauth2-*
79
master-*.zip

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ start-uaa: ## Start uaa (remember to run make build-uaa if you have not done )
2929
start-keycloak: ## Start keycloak
3030
@./bin/keycloak/deploy
3131

32+
start-azure: ## Start nginx for azure https
33+
@./bin/azure/deploy ${SERVER_NAME}
34+
3235
build-uaa: ## Build uaa image
3336
@(cd uaa-latest; make build-uaa; cd ..)
3437

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ If you want to understand the details of how to configure RabbitMQ with Oauth2 g
2828
- Use different OAuth 2.0 servers
2929
- [KeyCloak](use-cases/keycloak.md)
3030
- [https://auth0.com/](use-cases/oauth0.md)
31+
- [Azure Active Directory](use-cases/azure.md)
3132

3233
- [Understand the environment](#understand-the-environment)
3334
- [RabbitMQ server](#rabbitmq-server)
86.7 KB
Loading

assets/azure-ad-jwks-uri.png

54.7 KB
Loading
120 KB
Loading

bin/azure/deploy

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env bash
2+
3+
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4+
5+
ROOT=$SCRIPT/../..
6+
7+
echo "Generate SSL Certificate and Key for localhost"
8+
echo "--------------------------------"
9+
echo "Generate root key"
10+
echo "--------------------------------"
11+
openssl genrsa 2048 > ${ROOT}/conf/azure/rabbitmq-ca.key
12+
echo ""
13+
echo "--------------------------------"
14+
echo "Create and self-sign root certificate"
15+
echo "--------------------------------"
16+
openssl req -new -x509 -nodes -days 365 \
17+
-key ${ROOT}/conf/azure/rabbitmq-https.key \
18+
-out ${ROOT}/conf/azure/rabbitmq-https.crt \
19+
-subj "/C=US/ST=California/L=San Francisco/O=RabbitMQ/OU=OAuth 2.0 Tutorial/CN=RootCA"
20+
echo ""
21+
echo "--------------------------------"
22+
echo "Create Certificate Signing Request and associated private key for localhost"
23+
echo "--------------------------------"
24+
openssl req -newkey rsa:2048 -nodes \
25+
-keyout ${ROOT}/conf/azure/rabbitmq.key \
26+
-out ${ROOT}/conf/azure/rabbitmq.csr \
27+
-subj "/C=US/ST=California/L=San Francisco/O=RabbitMQ/OU=OAuth 2.0 Tutorial/CN=localhost"
28+
echo ""
29+
echo "--------------------------------"
30+
echo "Create certificate for localhost"
31+
echo "--------------------------------"
32+
openssl x509 -req -days 365 \
33+
-in ${ROOT}/conf/azure/rabbitmq.csr \
34+
-out ${ROOT}/conf/azure/rabbitmq.crt \
35+
-CA ${ROOT}/conf/azure/rabbitmq-ca.crt \
36+
-CAkey ${ROOT}/conf/azure/rabbitmq-ca.key \
37+
echo "--------------------------------"
38+
echo "Configure SSL cert/key ownership"
39+
echo "--------------------------------"
40+
chown 999:999 ${ROOT}/conf/azure/*

bin/deploy-rabbit

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,18 @@ CONFIG=${CONFIG:-rabbitmq.config}
77
IMAGE_TAG=${IMAGE_TAG:-3.10.0-rc.6-management}
88
IMAGE=${IMAGE:-rabbitmq}
99

10+
if [ "${MODE}" == "azure" ]; then
11+
EXTRA_PORTS="-p 15671:15671"
12+
EXTRA_MOUNTS="-v $SCRIPT/../conf/${MODE}/rabbitmq-ca.crt:/etc/rabbitmq/rabbitmq-ca.crt \
13+
-v $SCRIPT/../conf/${MODE}/rabbitmq.key:/etc/rabbitmq/rabbitmq.key \
14+
-v $SCRIPT/../conf/${MODE}/rabbitmq.crt:/etc/rabbitmq/rabbitmq.crt"
15+
fi
16+
1017
docker network inspect rabbitmq_net >/dev/null 2>&1 || docker network create rabbitmq_net
1118
docker rm -f rabbitmq 2>/dev/null || echo "rabbitmq was not running"
1219
echo "running RabbitMQ with mode $MODE"
1320
docker run -d --name rabbitmq --net rabbitmq_net \
14-
-p 15672:15672 -p 5672:5672 \
15-
-v $SCRIPT/../conf/${MODE}/${CONFIG}:/etc/rabbitmq/rabbitmq.config:ro \
16-
-v $SCRIPT/../conf/enabled_plugins:/etc/rabbitmq/enabled_plugins \
17-
-v $SCRIPT/../conf:/conf ${IMAGE}:${IMAGE_TAG}
21+
-p 15672:15672 -p 5672:5672 ${EXTRA_PORTS}\
22+
-v ${SCRIPT}/../conf/${MODE}/${CONFIG}:/etc/rabbitmq/rabbitmq.config:ro \
23+
-v ${SCRIPT}/../conf/enabled_plugins:/etc/rabbitmq/enabled_plugins \
24+
-v ${SCRIPT}/../conf:/conf ${EXTRA_MOUNTS} ${IMAGE}:${IMAGE_TAG}

conf/azure/rabbitmq.config

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[
2+
{rabbit, [
3+
{auth_backends, [rabbit_auth_backend_oauth2, rabbit_auth_backend_internal]}
4+
]},
5+
{rabbitmq_management, [
6+
{listener, [{port, 15671},
7+
{ssl, true},
8+
{ssl_opts, [{cacertfile, "/etc/rabbitmq/rabbitmq-ca.crt"},
9+
{certfile, "/etc/rabbitmq/rabbitmq.crt"},
10+
{keyfile, "/etc/rabbitmq/rabbitmq.key"},
11+
12+
%% don't do peer verification to HTTPS clients
13+
{verify, verify_none},
14+
{fail_if_no_peer_cert, false},
15+
16+
{client_renegotiation, false},
17+
{secure_renegotiate, true},
18+
{honor_ecc_order, true},
19+
{honor_cipher_order, true}
20+
]}
21+
]},
22+
{oauth_enable, true},
23+
{oauth_client_id, "PUT YOUR AZURE AD APPLICATION ID"},
24+
{oauth_client_secret, "PUT YOUR AZURE AD APPLICATION SECRET"},
25+
{oauth_provider_url, "https://login.microsoftonline.com/AZURE_AD_TENANT_ID"}
26+
]},
27+
{rabbitmq_auth_backend_oauth2, [
28+
{resource_server_id, <<"PUT YOUR AZURE AD APPLICATION ID">>},
29+
{extra_scopes_source, <<"roles">>},
30+
{key_config, [
31+
{jwks_url, <<"PUT YOUR AZURE AD JWKS URI VALUE">>}
32+
]}
33+
]}
34+
].

0 commit comments

Comments
 (0)