Audit failed login from OAuth provider
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
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry -
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
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