Overview In a JWT token it is possible to add an attribute for role claims. If the roles are presented as top-level attribute like
{ "couchdb-roles": [ "my_role_1", "my_role_2" ] } and setting the parameter roles_claim_name in the config file to [jwt_auth] roles_claim_name = couchdb-roles CouchDB was able to read that attributed and take over that roles. This doesn't work, if the claim roles are nested, eg: { "my" :{ "nested": { "couchdb-roles": [ "my_role_1", "my_role_2" ] } } } To allow this and for backwards compatibility, a new config parameter `roles_claim_path` is introduced to allow nested role claims. To allow the example from above, yo can use the following syntax: [jwt_auth] roles_claim_path = my.nested.couchdb-roles It is now possible to specify nested (& unnested "\." prevents interpreting as nested) JSON paths in role_claim_path, like roles_claim_path = foo.bar\.zonk.baz\.buu.baa.baa\.bee.roles which is equivalent to "foo": { "bar.zonk": { "baz.buu": { "baa": { "baa.bee": { "roles": [ "my_nested_role_1", "my_nested_role_2" ] } } } } } After merging the functionality with PR#4041 [3], I wanted to know, if we should deprecated the existing parameter `roles_claim_name` (RCN) in favor of `roles_claim_path` (RCP). RCP has all the functionality of RCN plus it allows nested & unnested JWT JSON role claims. If `roles_claim_path` is defined, then `roles_claim_name` is ignored. In the docs PR#737, I already "marked" RCN as deprecated in the next version (3.3), because RCP acts as successor of RCN. We could also remove the deprecation note and have both options in CouchDB with overlapping functionality. What do you think? Related Issues or Pull Requests: #3758 [1] #3166 [2] [1] https://github.com/apache/couchdb/issues/3758 [2] https://github.com/apache/couchdb/pull/3166 [3] https://github.com/apache/couchdb/pull/4041 [4] https://github.com/apache/couchdb-documentation/pull/737