Improve JWT format with namespaces grouping #500
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is about reducing the size of the JWT (
access_token
) generated by the/login
endpoint, which is then used to authenticate in other endpoints. This would heavily reduce the risk of reaching thehttp.client.max-content-length
limit in the future when the namespaces number increases, and have better performance in the logging process.Example of the current JWT roleBindings format:
"roleBindings": [ { "namespace": "namespace1", "verbs": [ "GET", "POST", "PUT", "DELETE" ], "resourceTypes": [ "schemas", "schemas/config", "topics", "topics/delete-records" ] }, { "namespace": "namespace2", "verbs": [ "GET", "POST", "PUT", "DELETE" ], "resourceTypes": [ "schemas", "schemas/config", "topics", "topics/delete-records" ] }, { "namespace": "namespace3", "verbs": [ "GET", "POST", "PUT", "DELETE" ], "resourceTypes": [ "schemas", "schemas/config", "topics", "topics/delete-records" ] } ]
This PR changes the format of the JWT so the namespaces are grouped if they have the same
verbs
andresourceTypes
fields.The previous example becomes:
"roleBindings": [ { "namespaces": [ "namespace1", "namespace2", "namespace3" ], "verbs": [ "GET", "POST", "PUT", "DELETE" ], "resourceTypes": [ "schemas", "schemas/config", "topics", "topics/delete-records" ] } ]
The string
namespace
field is replaced by a list of stringnamespaces
field.This PR is linked with this kafkactl PR.