Skip to content

Commit 66cb5a0

Browse files
Support two modes of configuring
scope_aliases using cuttlefish
1 parent 02b770c commit 66cb5a0

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
@@ -32,12 +32,20 @@ extract_value({_Name,V}) -> V.
3232
translate_scope_aliases(Conf) ->
3333
Settings = cuttlefish_variable:filter_by_prefix(
3434
?AUTH_OAUTH2_SCOPE_ALIASES, Conf),
35-
extract_scope_aliases_as_a_list_of_alias_scope_props(Settings).
35+
maps:merge(extract_scope_alias_as_map(Settings),
36+
extract_scope_aliases_as_list_of_alias_scope_props(Settings)).
3637

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

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

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
@@ -197,6 +197,25 @@
197197
]}
198198
],[]
199199
},
200+
{scope_aliases_1,
201+
"auth_oauth2.resource_server_id = new_resource_server_id
202+
auth_oauth2.scope_aliases.admin = rabbitmq.tag:administrator
203+
auth_oauth2.scope_aliases.developer = rabbitmq.tag:management rabbitmq.read:*/*",
204+
[
205+
{rabbitmq_auth_backend_oauth2, [
206+
{resource_server_id,<<"new_resource_server_id">>},
207+
{scope_aliases, #{
208+
<<"admin">> => [
209+
<<"rabbitmq.tag:administrator">>
210+
],
211+
<<"developer">> => [
212+
<<"rabbitmq.tag:management">>,
213+
<<"rabbitmq.read:*/*">>
214+
]
215+
}}
216+
]}
217+
], []
218+
},
200219
{scope_aliases_2,
201220
"auth_oauth2.resource_server_id = new_resource_server_id
202221
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
@@ -39,8 +39,8 @@ all() ->
3939
test_resource_servers_attributes,
4040
test_invalid_oauth_providers_endpoint_params,
4141
test_without_oauth_providers_with_endpoint_params,
42-
test_scope_aliases
43-
42+
test_scope_aliases_configured_as_list_of_properties,
43+
test_scope_aliases_configured_as_map
4444
].
4545

4646

@@ -282,7 +282,7 @@ test_oauth_providers_signing_keys(Conf) ->
282282
<<"2">> := {pem, <<"I'm not a certificate">>}
283283
} = SigningKeys.
284284

285-
test_scope_aliases(_) ->
285+
test_scope_aliases_configured_as_list_of_properties(_) ->
286286
CuttlefishConf = [
287287
{["auth_oauth2","scope_aliases","1","alias"],
288288
"admin"},
@@ -298,6 +298,18 @@ test_scope_aliases(_) ->
298298
<<"developer">> := [<<"rabbitmq.tag:management">>, <<"rabbitmq.read:*/*">>]
299299
} = translate_scope_aliases(CuttlefishConf).
300300

301+
test_scope_aliases_configured_as_map(_) ->
302+
CuttlefishConf = [
303+
{["auth_oauth2","scope_aliases","admin"],
304+
"rabbitmq.tag:administrator"},
305+
{["auth_oauth2","scope_aliases","developer"],
306+
"rabbitmq.tag:management rabbitmq.read:*/*"}
307+
],
308+
#{
309+
<<"admin">> := [<<"rabbitmq.tag:administrator">>],
310+
<<"developer">> := [<<"rabbitmq.tag:management">>, <<"rabbitmq.read:*/*">>]
311+
} = rabbit_oauth2_schema:translate_scope_aliases(CuttlefishConf).
312+
301313

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

0 commit comments

Comments
 (0)