diff --git a/app/controllers/jwt_controller.rb b/app/controllers/jwt_controller.rb
index faa5967d64eaa62d2ea83e9796ebeca4b0d64696..83409c7e0966edf0d466b308780b6dac7ff8f49b 100644
--- a/app/controllers/jwt_controller.rb
+++ b/app/controllers/jwt_controller.rb
@@ -33,7 +33,7 @@ def authenticate_project_or_user
     @authentication_result = Gitlab::Auth::Result.new(nil, nil, :none, Gitlab::Auth.read_only_authentication_abilities)
 
     authenticate_with_http_basic do |login, password|
-      @authentication_result = Gitlab::Auth.find_for_git_client(login, password, project: nil, ip: request.ip)
+      @authentication_result = Gitlab::Auth.find_for_git_client(login, password, project: nil, request: request)
 
       if @authentication_result.failed?
         log_authentication_failed(login, @authentication_result)
diff --git a/app/controllers/repositories/git_http_client_controller.rb b/app/controllers/repositories/git_http_client_controller.rb
index 71d8ad829f6d090406a5c4c14357dd1ece089c71..e8da6ee986ab0632b6ba32f097ce699ee0ea7354 100644
--- a/app/controllers/repositories/git_http_client_controller.rb
+++ b/app/controllers/repositories/git_http_client_controller.rb
@@ -129,7 +129,7 @@ def repo_type
 
     def handle_basic_authentication(login, password)
       @authentication_result = Gitlab::Auth.find_for_git_client(
-        login, password, project: project, ip: request.ip)
+        login, password, project: project, request: request)
 
       @authentication_result.success?
     end
diff --git a/ee/spec/lib/gitlab/auth_spec.rb b/ee/spec/lib/gitlab/auth_spec.rb
index f856780fd38dbf3d181a985e81321d0e374497d9..f181413597dbbce3a6cdc7915fe3edbd298d3677 100644
--- a/ee/spec/lib/gitlab/auth_spec.rb
+++ b/ee/spec/lib/gitlab/auth_spec.rb
@@ -9,6 +9,8 @@
   let(:gl_auth) { described_class }
 
   describe '.find_for_git_client' do
+    let(:request) { instance_double(ActionDispatch::Request, ip: 'ip') }
+
     context 'when using personal access token as password' do
       shared_examples 'successfully authenticates' do
         it 'successfully authenticates' do
@@ -17,7 +19,7 @@
               personal_access_token.user.username,
               personal_access_token.token,
               project: project,
-              ip: 'ip'
+              request: request
             )
           ).to have_attributes(
             actor: personal_access_token.user,
@@ -35,7 +37,7 @@
               personal_access_token.user.username,
               personal_access_token.token,
               project: project,
-              ip: 'ip'
+              request: request
             )
           ).to have_attributes(auth_failure)
         end
@@ -106,7 +108,7 @@
     end
 
     context 'when using build token as password' do
-      subject { gl_auth.find_for_git_client(username, build.token, project: project, ip: 'ip') }
+      subject { gl_auth.find_for_git_client(username, build.token, project: project, request: request) }
 
       let(:username) { 'gitlab-ci-token' }
 
diff --git a/lib/gitlab/auth.rb b/lib/gitlab/auth.rb
index fc1f7a1583cb6bc8d24f0ad4187b67757e6ddafd..6bfcae037b8ae39ed79bf54faf4dd760b4701704 100644
--- a/lib/gitlab/auth.rb
+++ b/lib/gitlab/auth.rb
@@ -60,10 +60,10 @@ def omniauth_enabled?
         Gitlab.config.omniauth.enabled
       end
 
-      def find_for_git_client(login, password, project:, ip:)
-        raise "Must provide an IP for rate limiting" if ip.nil?
+      def find_for_git_client(login, password, project:, request:)
+        raise "Must provide an IP for rate limiting" if request.ip.nil?
 
-        rate_limiter = Gitlab::Auth::IpRateLimiter.new(ip)
+        rate_limiter = Gitlab::Auth::IpRateLimiter.new(request.ip)
 
         raise IpBlocked if !skip_rate_limit?(login: login) && rate_limiter.banned?
 
@@ -80,7 +80,7 @@ def find_for_git_client(login, password, project:, ip:)
           user_with_password_for_git(login, password) ||
           Gitlab::Auth::Result::EMPTY
 
-        rate_limit!(rate_limiter, success: result.success?, login: login)
+        rate_limit!(rate_limiter, success: result.success?, login: login, request: request)
         look_to_limit_user(result.actor)
 
         return result if result.success? || authenticate_using_internal_or_ldap_password?
@@ -142,7 +142,7 @@ def find_with_user_password(login, password, increment_failed_attempts: false)
 
       private
 
-      def rate_limit!(rate_limiter, success:, login:)
+      def rate_limit!(rate_limiter, success:, login:, request:)
         return if skip_rate_limit?(login: login)
 
         if success
@@ -155,8 +155,18 @@ def rate_limit!(rate_limiter, success:, login:)
           # request from this IP if needed.
           # This returns true when the failures are over the threshold and the IP
           # is banned.
-          Gitlab::AppLogger.info "IP #{rate_limiter.ip} failed to login " \
-              "as #{login} but has been temporarily banned from Git auth"
+
+          message = "Rack_Attack: Git auth failures has exceeded the threshold." \
+            "IP has been temporarily banned from Git auth."
+
+          Gitlab::AuthLogger.error(
+            message: message,
+            env: :blocklist,
+            remote_ip: request.ip,
+            request_method: request.request_method,
+            path: request.fullpath,
+            login: login
+          )
         end
       end
 
diff --git a/lib/gitlab/middleware/go.rb b/lib/gitlab/middleware/go.rb
index d2336ec4bb262003a0007df4d86a2315b4fd692e..5a0612be88ede49b4b8c9b840c0ab2045c5a287d 100644
--- a/lib/gitlab/middleware/go.rb
+++ b/lib/gitlab/middleware/go.rb
@@ -141,7 +141,7 @@ def authentication_result(request, project)
         return empty_result unless has_basic_credentials?(request)
 
         login, password = user_name_and_password(request)
-        auth_result = Gitlab::Auth.find_for_git_client(login, password, project: project, ip: request.ip)
+        auth_result = Gitlab::Auth.find_for_git_client(login, password, project: project, request: request)
         return empty_result unless auth_result.success?
 
         return empty_result unless auth_result.can?(:access_git)
diff --git a/spec/lib/gitlab/auth_spec.rb b/spec/lib/gitlab/auth_spec.rb
index f5b9555916c7edf3d398050857865f56a57af5f3..020089b38800dea7d2d2d124c8bdb0b03ed1c431 100644
--- a/spec/lib/gitlab/auth_spec.rb
+++ b/spec/lib/gitlab/auth_spec.rb
@@ -8,6 +8,8 @@
   let(:auth_failure) { { actor: nil, project: nil, type: nil, authentication_abilities: nil } }
   let(:gl_auth) { described_class }
 
+  let(:request) { instance_double(ActionDispatch::Request, ip: 'ip') }
+
   describe 'constants' do
     it 'API_SCOPES contains all scopes for API access' do
       expect(subject::API_SCOPES).to match_array %i[api read_user read_api create_runner k8s_proxy]
@@ -202,7 +204,7 @@
       end
 
       context 'when IP is already banned' do
-        subject { gl_auth.find_for_git_client('username-does-not-matter', 'password-does-not-matter', project: nil, ip: 'ip') }
+        subject { gl_auth.find_for_git_client('username-does-not-matter', 'password-does-not-matter', project: nil, request: request) }
 
         before do
           expect_next_instance_of(Gitlab::Auth::IpRateLimiter) do |rate_limiter|
@@ -223,7 +225,7 @@
             expect(rate_limiter).not_to receive(:reset!)
           end
 
-          gl_auth.find_for_git_client('gitlab-ci-token', build.token, project: build.project, ip: 'ip')
+          gl_auth.find_for_git_client('gitlab-ci-token', build.token, project: build.project, request: request)
         end
 
         it 'skips rate limiting for failed auth' do
@@ -231,7 +233,7 @@
             expect(rate_limiter).not_to receive(:register_fail!)
           end
 
-          gl_auth.find_for_git_client('gitlab-ci-token', 'wrong_token', project: build.project, ip: 'ip')
+          gl_auth.find_for_git_client('gitlab-ci-token', 'wrong_token', project: build.project, request: request)
         end
       end
 
@@ -243,7 +245,7 @@
             expect(rate_limiter).to receive(:reset!)
           end
 
-          gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip')
+          gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request)
         end
 
         it 'rate limits a user by unique IPs' do
@@ -252,7 +254,7 @@
           end
           expect(Gitlab::Auth::UniqueIpsLimiter).to receive(:limit_user!).twice.and_call_original
 
-          gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip')
+          gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request)
         end
 
         it 'registers failure for failed auth' do
@@ -260,13 +262,36 @@
             expect(rate_limiter).to receive(:register_fail!)
           end
 
-          gl_auth.find_for_git_client(user.username, 'wrong_password', project: nil, ip: 'ip')
+          gl_auth.find_for_git_client(user.username, 'wrong_password', project: nil, request: request)
+        end
+
+        context 'when failure goes over threshold' do
+          let(:request) { instance_double(ActionDispatch::Request, fullpath: '/some/project.git/info/refs', request_method: 'GET', ip: 'ip') }
+
+          before do
+            expect_next_instance_of(Gitlab::Auth::IpRateLimiter) do |rate_limiter|
+              expect(rate_limiter).to receive(:register_fail!).and_return(true)
+            end
+          end
+
+          it 'logs a message' do
+            expect(Gitlab::AuthLogger).to receive(:error).with(
+              message: include('IP has been temporarily banned from Git auth'),
+              env: :blocklist,
+              remote_ip: request.ip,
+              request_method: request.request_method,
+              path: request.fullpath,
+              login: user.username
+            )
+
+            gl_auth.find_for_git_client(user.username, 'wrong_password', project: nil, request: request)
+          end
         end
       end
     end
 
     context 'build token' do
-      subject { gl_auth.find_for_git_client(username, build.token, project: project, ip: 'ip') }
+      subject { gl_auth.find_for_git_client(username, build.token, project: project, request: request) }
 
       let(:username) { 'gitlab-ci-token' }
 
@@ -344,20 +369,20 @@
       project.create_drone_ci_integration(active: true)
       project.drone_ci_integration.update!(token: 'token', drone_url: generate(:url))
 
-      expect(gl_auth.find_for_git_client('drone-ci-token', 'token', project: project, ip: 'ip')).to have_attributes(actor: nil, project: project, type: :ci, authentication_abilities: described_class.build_authentication_abilities)
+      expect(gl_auth.find_for_git_client('drone-ci-token', 'token', project: project, request: request)).to have_attributes(actor: nil, project: project, type: :ci, authentication_abilities: described_class.build_authentication_abilities)
     end
 
     it 'recognizes master passwords' do
       user = create(:user)
 
-      expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip')).to have_attributes(actor: user, project: nil, type: :gitlab_or_ldap, authentication_abilities: described_class.full_authentication_abilities)
+      expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request)).to have_attributes(actor: user, project: nil, type: :gitlab_or_ldap, authentication_abilities: described_class.full_authentication_abilities)
     end
 
     include_examples 'user login operation with unique ip limit' do
       let(:user) { create(:user) }
 
       def operation
-        expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip')).to have_attributes(actor: user, project: nil, type: :gitlab_or_ldap, authentication_abilities: described_class.full_authentication_abilities)
+        expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request)).to have_attributes(actor: user, project: nil, type: :gitlab_or_ldap, authentication_abilities: described_class.full_authentication_abilities)
       end
     end
 
@@ -366,14 +391,14 @@ def operation
         user = create(:user)
         token = Gitlab::LfsToken.new(user).token
 
-        expect(gl_auth.find_for_git_client(user.username, token, project: nil, ip: 'ip')).to have_attributes(actor: user, project: nil, type: :lfs_token, authentication_abilities: described_class.read_write_project_authentication_abilities)
+        expect(gl_auth.find_for_git_client(user.username, token, project: nil, request: request)).to have_attributes(actor: user, project: nil, type: :lfs_token, authentication_abilities: described_class.read_write_project_authentication_abilities)
       end
 
       it 'recognizes deploy key lfs tokens' do
         key = create(:deploy_key)
         token = Gitlab::LfsToken.new(key).token
 
-        expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: nil, ip: 'ip')).to have_attributes(actor: key, project: nil, type: :lfs_deploy_token, authentication_abilities: described_class.read_only_authentication_abilities)
+        expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: nil, request: request)).to have_attributes(actor: key, project: nil, type: :lfs_deploy_token, authentication_abilities: described_class.read_only_authentication_abilities)
       end
 
       it 'does not try password auth before oauth' do
@@ -382,7 +407,7 @@ def operation
 
         expect(gl_auth).not_to receive(:find_with_user_password)
 
-        gl_auth.find_for_git_client(user.username, token, project: nil, ip: 'ip')
+        gl_auth.find_for_git_client(user.username, token, project: nil, request: request)
       end
 
       it 'grants deploy key write permissions' do
@@ -390,14 +415,14 @@ def operation
         create(:deploy_keys_project, :write_access, deploy_key: key, project: project)
         token = Gitlab::LfsToken.new(key).token
 
-        expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: project, ip: 'ip')).to have_attributes(actor: key, project: nil, type: :lfs_deploy_token, authentication_abilities: described_class.read_write_authentication_abilities)
+        expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: project, request: request)).to have_attributes(actor: key, project: nil, type: :lfs_deploy_token, authentication_abilities: described_class.read_write_authentication_abilities)
       end
 
       it 'does not grant deploy key write permissions' do
         key = create(:deploy_key)
         token = Gitlab::LfsToken.new(key).token
 
-        expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: project, ip: 'ip')).to have_attributes(actor: key, project: nil, type: :lfs_deploy_token, authentication_abilities: described_class.read_only_authentication_abilities)
+        expect(gl_auth.find_for_git_client("lfs+deploy-key-#{key.id}", token, project: project, request: request)).to have_attributes(actor: key, project: nil, type: :lfs_deploy_token, authentication_abilities: described_class.read_only_authentication_abilities)
       end
     end
 
@@ -409,7 +434,7 @@ def operation
         it 'fails' do
           access_token = Doorkeeper::AccessToken.create!(application_id: application.id, resource_owner_id: user.id, scopes: 'api')
 
-          expect(gl_auth.find_for_git_client("oauth2", access_token.token, project: nil, ip: 'ip'))
+          expect(gl_auth.find_for_git_client("oauth2", access_token.token, project: nil, request: request))
             .to have_attributes(auth_failure)
         end
       end
@@ -436,7 +461,7 @@ def operation
           it 'authenticates with correct abilities' do
             access_token = Doorkeeper::AccessToken.create!(application_id: application.id, resource_owner_id: user.id, scopes: scopes)
 
-            expect(gl_auth.find_for_git_client("oauth2", access_token.token, project: nil, ip: 'ip'))
+            expect(gl_auth.find_for_git_client("oauth2", access_token.token, project: nil, request: request))
               .to have_attributes(actor: user, project: nil, type: :oauth, authentication_abilities: abilities)
           end
         end
@@ -447,7 +472,7 @@ def operation
 
         expect(gl_auth).not_to receive(:find_with_user_password)
 
-        gl_auth.find_for_git_client("oauth2", access_token.token, project: nil, ip: 'ip')
+        gl_auth.find_for_git_client("oauth2", access_token.token, project: nil, request: request)
       end
 
       context 'blocked user' do
@@ -513,7 +538,7 @@ def operation
 
         impersonation_token = create(:personal_access_token, :impersonation, scopes: ['api'])
 
-        expect(gl_auth.find_for_git_client('', impersonation_token.token, project: nil, ip: 'ip'))
+        expect(gl_auth.find_for_git_client('', impersonation_token.token, project: nil, request: request))
           .to have_attributes(auth_failure)
       end
 
@@ -536,7 +561,7 @@ def operation
         end
 
         it 'fails if user is blocked' do
-          expect(gl_auth.find_for_git_client('', personal_access_token.token, project: nil, ip: 'ip'))
+          expect(gl_auth.find_for_git_client('', personal_access_token.token, project: nil, request: request))
             .to have_attributes(auth_failure)
         end
       end
@@ -544,19 +569,19 @@ def operation
       context 'when using a resource access token' do
         shared_examples 'with a valid access token' do
           it 'successfully authenticates the project bot' do
-            expect(gl_auth.find_for_git_client(project_bot_user.username, access_token.token, project: project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client(project_bot_user.username, access_token.token, project: project, request: request))
               .to have_attributes(actor: project_bot_user, project: nil, type: :personal_access_token, authentication_abilities: described_class.full_authentication_abilities)
           end
 
           it 'successfully authenticates the project bot with a nil project' do
-            expect(gl_auth.find_for_git_client(project_bot_user.username, access_token.token, project: nil, ip: 'ip'))
+            expect(gl_auth.find_for_git_client(project_bot_user.username, access_token.token, project: nil, request: request))
               .to have_attributes(actor: project_bot_user, project: nil, type: :personal_access_token, authentication_abilities: described_class.full_authentication_abilities)
           end
         end
 
         shared_examples 'with an invalid access token' do
           it 'fails for a non-member' do
-            expect(gl_auth.find_for_git_client(project_bot_user.username, access_token.token, project: project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client(project_bot_user.username, access_token.token, project: project, request: request))
               .to have_attributes(auth_failure)
           end
 
@@ -566,7 +591,7 @@ def operation
             end
 
             it 'fails for a blocked project bot' do
-              expect(gl_auth.find_for_git_client(project_bot_user.username, access_token.token, project: project, ip: 'ip'))
+              expect(gl_auth.find_for_git_client(project_bot_user.username, access_token.token, project: project, request: request))
                 .to have_attributes(auth_failure)
             end
           end
@@ -637,7 +662,7 @@ def operation
       it 'updates last_used_at column if token is valid' do
         personal_access_token = create(:personal_access_token, scopes: ['write_repository'])
 
-        expect { gl_auth.find_for_git_client('', personal_access_token.token, project: nil, ip: 'ip') }.to change { personal_access_token.reload.last_used_at }
+        expect { gl_auth.find_for_git_client('', personal_access_token.token, project: nil, request: request) }.to change { personal_access_token.reload.last_used_at }
       end
     end
 
@@ -649,7 +674,7 @@ def operation
           username: 'normal_user'
         )
 
-        expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip'))
+        expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request))
           .to have_attributes(auth_failure)
       end
 
@@ -665,14 +690,14 @@ def operation
         it 'fails if grace period expired' do
           stub_application_setting(two_factor_grace_period: 0)
 
-          expect { gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip') }
+          expect { gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request) }
             .to raise_error(Gitlab::Auth::MissingPersonalAccessTokenError)
         end
 
         it 'goes through if grace period is not expired yet' do
           stub_application_setting(two_factor_grace_period: 72)
 
-          expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request))
             .to have_attributes(actor: user, project: nil, type: :gitlab_or_ldap, authentication_abilities: described_class.full_authentication_abilities)
         end
       end
@@ -683,7 +708,7 @@ def operation
         end
 
         it 'fails' do
-          expect { gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip') }
+          expect { gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request) }
             .to raise_error(Gitlab::Auth::MissingPersonalAccessTokenError)
         end
       end
@@ -694,7 +719,7 @@ def operation
           username: 'normal_user'
         )
 
-        expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip'))
+        expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request))
           .to have_attributes(actor: user, project: nil, type: :gitlab_or_ldap, authentication_abilities: described_class.full_authentication_abilities)
       end
 
@@ -704,7 +729,7 @@ def operation
           username: 'oauth2'
         )
 
-        expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, ip: 'ip'))
+        expect(gl_auth.find_for_git_client(user.username, user.password, project: nil, request: request))
           .to have_attributes(actor: user, project: nil, type: :gitlab_or_ldap, authentication_abilities: described_class.full_authentication_abilities)
       end
     end
@@ -712,34 +737,34 @@ def operation
     it 'returns double nil for invalid credentials' do
       login = 'foo'
 
-      expect(gl_auth.find_for_git_client(login, 'bar', project: nil, ip: 'ip')).to have_attributes(auth_failure)
+      expect(gl_auth.find_for_git_client(login, 'bar', project: nil, request: request)).to have_attributes(auth_failure)
     end
 
     it 'throws an error suggesting user create a PAT when internal auth is disabled' do
       allow_any_instance_of(ApplicationSetting).to receive(:password_authentication_enabled_for_git?) { false }
 
-      expect { gl_auth.find_for_git_client('foo', 'bar', project: nil, ip: 'ip') }.to raise_error(Gitlab::Auth::MissingPersonalAccessTokenError)
+      expect { gl_auth.find_for_git_client('foo', 'bar', project: nil, request: request) }.to raise_error(Gitlab::Auth::MissingPersonalAccessTokenError)
     end
 
     context 'while using deploy tokens' do
       shared_examples 'registry token scope' do
         it 'fails when login is not valid' do
-          expect(gl_auth.find_for_git_client('random_login', deploy_token.token, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client('random_login', deploy_token.token, project: project, request: request))
             .to have_attributes(auth_failure)
         end
 
         it 'fails when token is not valid' do
-          expect(gl_auth.find_for_git_client(login, '123123', project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(login, '123123', project: project, request: request))
             .to have_attributes(auth_failure)
         end
 
         it 'fails if token is nil' do
-          expect(gl_auth.find_for_git_client(login, nil, project: nil, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(login, nil, project: nil, request: request))
             .to have_attributes(auth_failure)
         end
 
         it 'fails if token is not related to project' do
-          expect(gl_auth.find_for_git_client(login, 'abcdef', project: nil, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(login, 'abcdef', project: nil, request: request))
             .to have_attributes(auth_failure)
         end
 
@@ -747,7 +772,7 @@ def operation
           deploy_token.revoke!
 
           expect(deploy_token.revoked?).to be_truthy
-          expect(gl_auth.find_for_git_client('deploy-token', deploy_token.token, project: nil, ip: 'ip'))
+          expect(gl_auth.find_for_git_client('deploy-token', deploy_token.token, project: nil, request: request))
             .to have_attributes(auth_failure)
         end
       end
@@ -759,7 +784,7 @@ def operation
           end
 
           it 'fails when login and token are valid' do
-            expect(gl_auth.find_for_git_client(login, deploy_token.token, project: nil, ip: 'ip'))
+            expect(gl_auth.find_for_git_client(login, deploy_token.token, project: nil, request: request))
               .to have_attributes(auth_failure)
           end
         end
@@ -768,7 +793,7 @@ def operation
           let(:project) { create(:project, :repository_disabled) }
 
           it 'fails when login and token are valid' do
-            expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, request: request))
               .to have_attributes(auth_failure)
           end
         end
@@ -782,14 +807,14 @@ def operation
         it 'succeeds for the token' do
           auth_success = { actor: deploy_token, project: project, type: :deploy_token, authentication_abilities: [:download_code] }
 
-          expect(gl_auth.find_for_git_client(username, deploy_token.token, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(username, deploy_token.token, project: project, request: request))
             .to have_attributes(auth_success)
         end
 
         it 'succeeds for the user' do
           auth_success = { actor: user, project: nil, type: :gitlab_or_ldap, authentication_abilities: described_class.full_authentication_abilities }
 
-          expect(gl_auth.find_for_git_client(username, user.password, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(username, user.password, project: project, request: request))
             .to have_attributes(auth_success)
         end
       end
@@ -801,12 +826,12 @@ def operation
           let(:auth_success) { { actor: read_repository, project: project, type: :deploy_token, authentication_abilities: [:download_code] } }
 
           it 'succeeds for the right token' do
-            expect(gl_auth.find_for_git_client('deployer', read_repository.token, project: project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client('deployer', read_repository.token, project: project, request: request))
               .to have_attributes(auth_success)
           end
 
           it 'fails for the wrong token' do
-            expect(gl_auth.find_for_git_client('deployer', read_registry.token, project: project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client('deployer', read_registry.token, project: project, request: request))
               .not_to have_attributes(auth_success)
           end
         end
@@ -819,12 +844,12 @@ def operation
           let(:auth_success) { { actor: read_repository, project: other_project, type: :deploy_token, authentication_abilities: [:download_code] } }
 
           it 'succeeds for the right token' do
-            expect(gl_auth.find_for_git_client('deployer', read_repository.token, project: other_project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client('deployer', read_repository.token, project: other_project, request: request))
               .to have_attributes(auth_success)
           end
 
           it 'fails for the wrong token' do
-            expect(gl_auth.find_for_git_client('deployer', read_registry.token, project: other_project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client('deployer', read_registry.token, project: other_project, request: request))
               .not_to have_attributes(auth_success)
           end
         end
@@ -837,7 +862,7 @@ def operation
         it 'succeeds when login and token are valid' do
           auth_success = { actor: deploy_token, project: project, type: :deploy_token, authentication_abilities: [:download_code] }
 
-          expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, request: request))
             .to have_attributes(auth_success)
         end
 
@@ -845,34 +870,34 @@ def operation
           deploy_token = create(:deploy_token, username: 'deployer', read_registry: false, projects: [project])
           auth_success = { actor: deploy_token, project: project, type: :deploy_token, authentication_abilities: [:download_code] }
 
-          expect(gl_auth.find_for_git_client('deployer', deploy_token.token, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client('deployer', deploy_token.token, project: project, request: request))
             .to have_attributes(auth_success)
         end
 
         it 'does not attempt to rate limit unique IPs for a deploy token' do
           expect(Gitlab::Auth::UniqueIpsLimiter).not_to receive(:limit_user!)
 
-          gl_auth.find_for_git_client(login, deploy_token.token, project: project, ip: 'ip')
+          gl_auth.find_for_git_client(login, deploy_token.token, project: project, request: request)
         end
 
         it 'fails when login is not valid' do
-          expect(gl_auth.find_for_git_client('random_login', deploy_token.token, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client('random_login', deploy_token.token, project: project, request: request))
             .to have_attributes(auth_failure)
         end
 
         it 'fails when token is not valid' do
-          expect(gl_auth.find_for_git_client(login, '123123', project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(login, '123123', project: project, request: request))
             .to have_attributes(auth_failure)
         end
 
         it 'fails if token is nil' do
-          expect(gl_auth.find_for_git_client(login, nil, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(login, nil, project: project, request: request))
             .to have_attributes(auth_failure)
         end
 
         it 'fails if token is not related to project' do
           another_deploy_token = create(:deploy_token)
-          expect(gl_auth.find_for_git_client(another_deploy_token.username, another_deploy_token.token, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(another_deploy_token.username, another_deploy_token.token, project: project, request: request))
             .to have_attributes(auth_failure)
         end
 
@@ -880,7 +905,7 @@ def operation
           deploy_token.revoke!
 
           expect(deploy_token.revoked?).to be_truthy
-          expect(gl_auth.find_for_git_client('deploy-token', deploy_token.token, project: project, ip: 'ip'))
+          expect(gl_auth.find_for_git_client('deploy-token', deploy_token.token, project: project, request: request))
             .to have_attributes(auth_failure)
         end
       end
@@ -890,7 +915,7 @@ def operation
         let(:deploy_token) { create(:deploy_token, :group, read_repository: true, groups: [project_with_group.group]) }
         let(:login) { deploy_token.username }
 
-        subject { gl_auth.find_for_git_client(login, deploy_token.token, project: project_with_group, ip: 'ip') }
+        subject { gl_auth.find_for_git_client(login, deploy_token.token, project: project_with_group, request: request) }
 
         it 'succeeds when login and a group deploy token are valid' do
           auth_success = { actor: deploy_token, project: project_with_group, type: :deploy_token, authentication_abilities: [:download_code, :read_container_image] }
@@ -901,7 +926,7 @@ def operation
         it 'fails if token is not related to group' do
           another_deploy_token = create(:deploy_token, :group, read_repository: true)
 
-          expect(gl_auth.find_for_git_client(another_deploy_token.username, another_deploy_token.token, project: project_with_group, ip: 'ip'))
+          expect(gl_auth.find_for_git_client(another_deploy_token.username, another_deploy_token.token, project: project_with_group, request: request))
             .to have_attributes(auth_failure)
         end
       end
@@ -918,7 +943,7 @@ def operation
           it 'succeeds when login and a project token are valid' do
             auth_success = { actor: deploy_token, project: project, type: :deploy_token, authentication_abilities: [:read_container_image] }
 
-            expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, request: request))
               .to have_attributes(auth_success)
           end
 
@@ -940,7 +965,7 @@ def operation
           it 'succeeds when login and a project token are valid' do
             auth_success = { actor: deploy_token, project: project, type: :deploy_token, authentication_abilities: [:create_container_image] }
 
-            expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, ip: 'ip'))
+            expect(gl_auth.find_for_git_client(login, deploy_token.token, project: project, request: request))
               .to have_attributes(auth_success)
           end
 
@@ -953,7 +978,7 @@ def operation
   end
 
   describe '#build_access_token_check' do
-    subject { gl_auth.find_for_git_client('gitlab-ci-token', build.token, project: build.project, ip: '1.2.3.4') }
+    subject { gl_auth.find_for_git_client('gitlab-ci-token', build.token, project: build.project, request: request) }
 
     let_it_be(:user) { create(:user) }
 
@@ -1143,7 +1168,7 @@ def operation
   private
 
   def expect_results_with_abilities(personal_access_token, abilities, success = true)
-    expect(gl_auth.find_for_git_client('', personal_access_token&.token, project: nil, ip: 'ip'))
+    expect(gl_auth.find_for_git_client('', personal_access_token&.token, project: nil, request: request))
       .to have_attributes(actor: personal_access_token&.user, project: nil, type: personal_access_token.nil? ? nil : :personal_access_token, authentication_abilities: abilities)
   end
 end