@@ -57,6 +57,7 @@ The guide is accompanied by [a public GitHub repository](https://github.com/rabb
57
57
* [ Using a custom scope field] ( #using-custom-scope-field )
58
58
* [ Using multiple asymmetrical signing keys] ( #using-multiple-asymmetrical-signing-keys )
59
59
* [ Using scope aliases] ( #using-scope-aliases )
60
+ * [ Using variable expansion in scopes] ( #using-var-expansion )
60
61
* [ Preferred username claims] ( #preferred-username-claims )
61
62
* [ Using Rich Authorization Requests tokens] ( #use-rar-tokens )
62
63
@@ -699,6 +700,24 @@ make stop-perftest-producer PRODUCER=producer_with_roles
699
700
make stop-perftest-consumer CONSUMER=consumer_with_roles
700
701
```
701
702
703
+ ### Using variable expansion in scopes {#using-var-expansion}
704
+
705
+ There are times when it is convenient to define a scope which uses a variable
706
+ in either the vhost part of the scope, or in the resource and/or in the routing
707
+ key part. The variable name can be ` vhost ` , whose value matches the vhost you
708
+ are accessing, or any single value claim in the token such as ` user_name ` .
709
+
710
+ To demonstrate this feature, follow these steps:
711
+
712
+ 1 . Follow the steps explained to demonstrate [ Keycloak] ( ./oauth2-examples-keycloak )
713
+ Oauth provider.
714
+ 2 . Keycloak is configured to issue tokens with the scope ` rabbitmq.configure:*/q-{user_name} `
715
+ 3 . Log in with the username ` rabbit_admin `
716
+ 4 . Try to create a queue with the name ` test ` . It should fail with an authorization error
717
+ 5 . Try to create a queue with the name ` q-rabbit_admin ` . It should allow you.
718
+
719
+ There is no configuration required in RabbitMQ. But at least it requires RabbitMQ 4.1.1.
720
+
702
721
### Preferred username claims {#preferred-username-claims}
703
722
704
723
RabbitMQ needs to figure out the username associated to the token so that it can display it in the Management UI.
0 commit comments