Add user_identities to JWTs used by CI/CD jobs
# Problem statement As an instance administrator, I want to ensure that shared GitLab runners are only used by users who have permission to execute on them. # Proposed solution Add a `user_identities` field to JWT V2 payloads when the GitLab instance is configured to do so. The `user_identities` field will contain the first 5 identities stored for the user. In FOSS, each user identity in the payload will have the structure: ```json { "extern_uid": "1", "provider": "gitlab" } ``` In EE, each user identity will additionally have a `secondary_extern_uid` field: ```json { "extern_uid": "1", "provider": "gitlab", "secondary_extern_uid": "1A" } ``` The presence of the `user_identities` field in the JWT V2 payload will be determined by a toggle at the instance level. The toggle will default to `false`, meaning the `user_identities` field will not be present by default. The toggle value will be update-able via an API endpoint which instance administrators have permission to use. ## Implementation table | Title | MR Link | Done? | | ------ | ------ | ----- | | Add toggle for enabling `user_identities` to database/models | https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108477 |:white_check_mark: | | Add `user_identities` field to `JwtV2` | !117541 |:white_check_mark:| | Add API for changing the toggle | !117874 |:white_check_mark:| | Document the new field | !118231 |:white_check_mark: |
issue