dotnet / dotnet/aspnetcore

Create arrays of claims using user-jwts

Open
#62,471 0 comments 1 reaction 0 assignees View on GitHub
area-commandlinetools feature-userjwts
Dominant language
C#
Stars
38.4k
Forks
10.9k
Avg merge
2d 6h
Merged PRs (30d)
290

Description

## Summary

Support creating custom claims as an array type using the `user-jwts` tool.

## Motivation and goals

- It is a common use case for JWTs to contain custom claims that are an array type. For example:
```
{
"fooIds": [
"427ba6fa-7e92-49ff-b180-944cf0c9e4b8",
"708f0c8b-c982-47ce-8cfb-c31bc5bc7d73"
]
}
```
- While the `user-jwts` tool supports creating roles as an array, it does not currently support creating custom claims as an array.
- By adding this capability to the `user-jwts` tool, it will make it a convenient option for testing applications that do expect custom claims with array types.

## In scope

Support for creating custom claims as an array.

## Examples

```
dotnet user-jwts create --claim companies=company1 --claim companies=company2
```
This could result in a token with the claim:
```
{
"companies": ["company1", "company2"]
}
```

By specifying each entry in the array as another `--claim` flag, it would function similar to how the `--role` flag currently works. If there is only one instance of the key, it would be a single value, and if there are multiple instances of the key, it would become an array.

### Multiple Keys
```
dotnet user-jwts create --claim companies=company1 --claim companies=company2
```
Becomes:
```
{
"companies": ["company1", "company2"]
}
```

### Single Key
```
dotnet user-jwts create --claim company=company1
```
Becomes:
```
{
"company": "company1"
}
```

### Mixed Keys
```
dotnet user-jwts create --claim companies=company1 --claim companies=company2 --claim department=engineering
```
Becomes:
```
{
"companies": ["company1", "company2"],
"department": "engineering"
}
```

## Existing Issues

[#59671](https://github.com/dotnet/aspnetcore/issues/59671)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.