Skip to content

Audit failed login from OAuth provider

Tan Le requested to merge 9470-audit-failed-ldap-logins into master

What does this MR do?

AFAIK, we are having two layers of authentication. Once the user is successfully authenticated with an OAuth proiver (e.g. LDAP provider), GitLab will check whether the synced identity is blocked before allowing access to our application. I have created a quick diagram below to illustrate the flow. This MR ensures we cover the one highlighted in orange.

graph LR
  A[User login via LDAP] --> B{LDAP authenticated?}
  B -->|Successful| C{GitLab authenticated?}
  B -->|Failed| D[- Increment failed login<br>- Audit log]
  C -->|Successful| E[Logged in]
  C -->|Failed| F[Audit log]

  classDef orange fill:#f96
  class D orange

From my testing, the current audit log instrumentation (i.e. log_failed_login) does not correctly intercept the LDAP failed authentication. It is too late and rather used to capture the GitLab failed authentication step.

Relates to #9470 (closed)

Screenshots

The following failed login will create an audit entry

Screen_Shot_2020-07-29_at_10.54.11_pm

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • 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 Andrew Kelly

Merge request reports