Skip to content

Commit dfc8f31

Browse files
Support two modes of configuring
scope_aliases using cuttlefish
1 parent 7f1952c commit dfc8f31

File tree

4 files changed

+49
-5
lines changed

4 files changed

+49
-5
lines changed

deps/rabbitmq_auth_backend_oauth2/priv/schema/rabbitmq_auth_backend_oauth2.schema

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@
7373
list_to_binary(cuttlefish:conf_get("auth_oauth2.additional_scopes_key", Conf))
7474
end}.
7575

76+
{mapping,
77+
"auth_oauth2.scope_aliases.$alias",
78+
"rabbitmq_auth_backend_oauth2.scope_aliases",
79+
[{datatype, string}]}.
80+
7681
{mapping,
7782
"auth_oauth2.scope_aliases.$index.alias",
7883
"rabbitmq_auth_backend_oauth2.scope_aliases",

deps/rabbitmq_auth_backend_oauth2/src/rabbit_oauth2_schema.erl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,20 @@ extract_value({_Name,V}) -> V.
3131
translate_scope_aliases(Conf) ->
3232
Settings = cuttlefish_variable:filter_by_prefix(
3333
?AUTH_OAUTH2_SCOPE_ALIASES, Conf),
34-
extract_scope_aliases_as_a_list_of_alias_scope_props(Settings).
34+
maps:merge(extract_scope_alias_as_map(Settings),
35+
extract_scope_aliases_as_list_of_alias_scope_props(Settings)).
3536

3637
convert_space_separated_string_to_list_of_binaries(String) ->
3738
[ list_to_binary(V) || V <- string:tokens(String, " ")].
3839

39-
extract_scope_aliases_as_a_list_of_alias_scope_props(Settings) ->
40+
extract_scope_alias_as_map(Settings) ->
41+
maps:from_list([{
42+
list_to_binary(Alias),
43+
convert_space_separated_string_to_list_of_binaries(Scope)
44+
}
45+
|| {[?AUTH_OAUTH2, ?SCOPE_ALIASES, Alias], Scope} <- Settings ]).
46+
47+
extract_scope_aliases_as_list_of_alias_scope_props(Settings) ->
4048
KeyFun = fun extract_key_as_binary/1,
4149
ValueFun = fun extract_value/1,
4250

deps/rabbitmq_auth_backend_oauth2/test/config_schema_SUITE_data/rabbitmq_auth_backend_oauth2.snippets

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,25 @@
185185
]}
186186
],[]
187187
},
188+
{scope_aliases_1,
189+
"auth_oauth2.resource_server_id = new_resource_server_id
190+
auth_oauth2.scope_aliases.admin = rabbitmq.tag:administrator
191+
auth_oauth2.scope_aliases.developer = rabbitmq.tag:management rabbitmq.read:*/*",
192+
[
193+
{rabbitmq_auth_backend_oauth2, [
194+
{resource_server_id,<<"new_resource_server_id">>},
195+
{scope_aliases, #{
196+
<<"admin">> => [
197+
<<"rabbitmq.tag:administrator">>
198+
],
199+
<<"developer">> => [
200+
<<"rabbitmq.tag:management">>,
201+
<<"rabbitmq.read:*/*">>
202+
]
203+
}}
204+
]}
205+
], []
206+
},
188207
{scope_aliases_2,
189208
"auth_oauth2.resource_server_id = new_resource_server_id
190209
auth_oauth2.scope_aliases.1.alias = admin

deps/rabbitmq_auth_backend_oauth2/test/rabbit_oauth2_schema_SUITE.erl

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ all() ->
2828
test_with_one_resource_server,
2929
test_with_many_resource_servers,
3030
test_resource_servers_attributes,
31-
test_scope_aliases
32-
31+
test_scope_aliases_configured_as_list_of_properties,
32+
test_scope_aliases_configured_as_map
3333
].
3434

3535

@@ -221,7 +221,7 @@ test_oauth_providers_signing_keys(Conf) ->
221221
<<"2">> := {pem, <<"I'm not a certificate">>}
222222
} = SigningKeys.
223223

224-
test_scope_aliases(_) ->
224+
test_scope_aliases_configured_as_list_of_properties(_) ->
225225
CuttlefishConf = [
226226
{["auth_oauth2","scope_aliases","1","alias"],
227227
"admin"},
@@ -237,6 +237,18 @@ test_scope_aliases(_) ->
237237
<<"developer">> := [<<"rabbitmq.tag:management">>, <<"rabbitmq.read:*/*">>]
238238
} = rabbit_oauth2_schema:translate_scope_aliases(CuttlefishConf).
239239

240+
test_scope_aliases_configured_as_map(_) ->
241+
CuttlefishConf = [
242+
{["auth_oauth2","scope_aliases","admin"],
243+
"rabbitmq.tag:administrator"},
244+
{["auth_oauth2","scope_aliases","developer"],
245+
"rabbitmq.tag:management rabbitmq.read:*/*"}
246+
],
247+
#{
248+
<<"admin">> := [<<"rabbitmq.tag:administrator">>],
249+
<<"developer">> := [<<"rabbitmq.tag:management">>, <<"rabbitmq.read:*/*">>]
250+
} = rabbit_oauth2_schema:translate_scope_aliases(CuttlefishConf).
251+
240252

241253
cert_filename(Conf) ->
242254
string:concat(?config(data_dir, Conf), "certs/cert.pem").

0 commit comments

Comments
 (0)