@@ -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,27 @@ 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 that uses a variable in either:
706
+
707
+ * The vhost part of the scope
708
+ * The resource and/or in the routing key part
709
+
710
+ The variable name can be ` vhost ` , whose value matches the vhost you are accessing, or any single
711
+ value claim in the token, such as ` user_name ` .
712
+
713
+ To demonstrate this feature:
714
+
715
+ 1 . Start Keycloak Oauth provider and RabbitMQ by following the steps in
716
+ [ Keycloak] ( ./oauth2-examples-keycloak ) . Keycloak is already configured to issue tokens with the
717
+ scope ` rabbitmq.configure:*/q-{user_name} ` .
718
+ 2 . Log in to the management UI at ` http://localhost:15672 ` with the user name ` rabbit_admin ` .
719
+ 3 . Try to create a queue with the name ` test ` . Expect the effort to fail with an authorization error.
720
+ 4 . Create a queue with the name ` q-rabbit_admin ` . Expect to be allowed to do this.
721
+
722
+ There is no configuration required in RabbitMQ, but RabbitMQ 4.1.1 is required.
723
+
702
724
### Preferred username claims {#preferred-username-claims}
703
725
704
726
RabbitMQ needs to figure out the username associated to the token so that it can display it in the Management UI.
0 commit comments