Skip to content

Fix sign-in when user has multiple group saml identities

What does this MR do?

Fixes #330791 (closed)

If a GitLab.com user has multiple group saml identities, a problem can occur when looking up the identity. Depending on the order the database returns the records the wrong identity may be chosen. This can lead to attempted creation of a duplicate record, and ultimate error signing in.

The issue arose from the code at https://gitlab.com/gitlab-org/gitlab/-/blob/72974327541cb17486fb57d9c4ab4a4e906f4c2f/lib/gitlab/auth/o_auth/user.rb#L109, which isn't able to handle multiple records matching that naive lookup. This works fine for all other providers, because a user can only have one identity for each provider. Whereas, group saml provider name is duplicated for all of GitLab.com, at the defining attribute is the saml_provider instead.

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Drew Blessing

Merge request reports