diff --git a/app/models/user.rb b/app/models/user.rb
index 7ae7996aad2e0573ba9f734802cb6111cd6423d9..866fc089b297c58fff6325f9072b721816d2b26b 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1464,11 +1464,6 @@ def allow_password_authentication_for_git?
     Gitlab::CurrentSettings.password_authentication_enabled_for_git?
   end
 
-  # method overriden in EE
-  def password_based_login_forbidden?
-    false
-  end
-
   def can_change_username?
     gitlab_config.username_changing_enabled
   end
diff --git a/config/feature_flags/ops/block_password_auth_for_saml_users.yml b/config/feature_flags/ops/block_password_auth_for_saml_users.yml
deleted file mode 100644
index ffc04d14a19fbab5e71d3166b341a32e354e0d72..0000000000000000000000000000000000000000
--- a/config/feature_flags/ops/block_password_auth_for_saml_users.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: block_password_auth_for_saml_users
-introduced_by_url:
-rollout_issue_url:
-milestone: '13.11'
-type: ops
-group: group::authentication
-default_enabled: false
diff --git a/ee/app/controllers/concerns/ee/membership_actions.rb b/ee/app/controllers/concerns/ee/membership_actions.rb
index a0b889dbe5ee7ff0d1ded47cde81dfb8ddc47eea..1ceea4182b9a160d5b8149f3698deee54bff9ebb 100644
--- a/ee/app/controllers/concerns/ee/membership_actions.rb
+++ b/ee/app/controllers/concerns/ee/membership_actions.rb
@@ -4,15 +4,6 @@ module EE
   module MembershipActions
     extend ::Gitlab::Utils::Override
 
-    override :leave
-    def leave
-      super
-
-      if current_user.authorized_by_provisioning_group?(membershipable)
-        sign_out current_user
-      end
-    end
-
     private
 
     def update_params
diff --git a/ee/app/controllers/groups/sso_controller.rb b/ee/app/controllers/groups/sso_controller.rb
index f2b2ddeeb4922124ec1e715e3663a27e5339cf9f..3d6195dd64797448c7e92ddde7dac9256bcbdf6a 100644
--- a/ee/app/controllers/groups/sso_controller.rb
+++ b/ee/app/controllers/groups/sso_controller.rb
@@ -36,11 +36,7 @@ def unlink
 
     GroupSaml::Identity::DestroyService.new(linked_identity).execute
 
-    if current_user.authorized_by_provisioning_group?(unauthenticated_group)
-      sign_out current_user
-    else
-      redirect_to profile_account_path
-    end
+    redirect_to profile_account_path
   end
 
   private
diff --git a/ee/app/models/ee/user.rb b/ee/app/models/ee/user.rb
index 930bcf6e3f8d790789deb00b2f1ec54642ee4e1f..d68b94f118fcfbc0a860690682d7cefee8fbb57f 100644
--- a/ee/app/models/ee/user.rb
+++ b/ee/app/models/ee/user.rb
@@ -521,7 +521,6 @@ def ldap_sync_time
     override :allow_password_authentication_for_web?
     def allow_password_authentication_for_web?(*)
       return false if group_managed_account?
-      return false if user_authorized_by_provisioning_group?
       return false if password_authentication_disabled_by_enterprise_group?
 
       super
@@ -530,7 +529,6 @@ def allow_password_authentication_for_web?(*)
     override :allow_password_authentication_for_git?
     def allow_password_authentication_for_git?(*)
       return false if group_managed_account?
-      return false if user_authorized_by_provisioning_group?
       return false if password_authentication_disabled_by_enterprise_group?
 
       super
@@ -543,19 +541,6 @@ def password_authentication_disabled_by_enterprise_group?
       enterprise_group.saml_provider.enabled? && enterprise_group.saml_provider.disable_password_authentication_for_enterprise_users?
     end
 
-    override :password_based_login_forbidden?
-    def password_based_login_forbidden?
-      user_authorized_by_provisioning_group? || super
-    end
-
-    def user_authorized_by_provisioning_group?
-      user_detail.provisioned_by_group? && ::Feature.enabled?(:block_password_auth_for_saml_users, user_detail.provisioned_by_group, type: :ops)
-    end
-
-    def authorized_by_provisioning_group?(group)
-      user_authorized_by_provisioning_group? && provisioned_by_group == group
-    end
-
     def enterprise_user_of_group?(group)
       enterprise_group_id == group.id
     end
diff --git a/ee/app/models/ee/user_detail.rb b/ee/app/models/ee/user_detail.rb
index 9c9fcafd80af06c9cbfe0e007e8cba9fa0cae21a..7778ce08031be2f31382ba51d29ae9ab4a0e5cc1 100644
--- a/ee/app/models/ee/user_detail.rb
+++ b/ee/app/models/ee/user_detail.rb
@@ -16,9 +16,5 @@ module UserDetail
         prefix: true
       )
     end
-
-    def provisioned_by_group?
-      !!provisioned_by_group
-    end
   end
 end
diff --git a/ee/spec/controllers/ee/sessions_controller_spec.rb b/ee/spec/controllers/ee/sessions_controller_spec.rb
index a445eb899f0562f9def46f14e82c8d87094e17e2..f2c9b2660ab6bc88999f4b7617177d99d1bace75 100644
--- a/ee/spec/controllers/ee/sessions_controller_spec.rb
+++ b/ee/spec/controllers/ee/sessions_controller_spec.rb
@@ -137,18 +137,6 @@ def authenticate_2fa(otp_user_id: user.id, **user_params)
       end
     end
 
-    context 'when user is not allowed to log in using password' do
-      let_it_be(:user) { create(:user, provisioned_by_group: build(:group)) }
-
-      it 'does not authenticate the user' do
-        post(:create, params: { user: { login: user.username, password: user.password } })
-
-        expect(response).to have_gitlab_http_status(:ok)
-        expect(@request.env['warden']).not_to be_authenticated
-        expect(flash[:alert]).to include(I18n.t('devise.failure.invalid'))
-      end
-    end
-
     context 'when password authentication disabled by enterprise group' do
       let_it_be(:enterprise_group) { create(:group) }
       let_it_be(:saml_provider) do
diff --git a/ee/spec/controllers/groups/sso_controller_spec.rb b/ee/spec/controllers/groups/sso_controller_spec.rb
index 278a7c8eeb688104a0905824e06b7fd2b8151076..65647c76ad944035f756bd8746bc4b0dcccfd500 100644
--- a/ee/spec/controllers/groups/sso_controller_spec.rb
+++ b/ee/spec/controllers/groups/sso_controller_spec.rb
@@ -34,41 +34,12 @@
       expect(assigns[:group_name]).to eq 'our-group'
     end
 
-    context 'unlinking user' do
-      before do
-        create(:group_saml_identity, saml_provider: saml_provider, user: user)
-        user.update!(provisioned_by_group: saml_provider.group)
-      end
-
-      it 'allows account unlinking' do
-        expect do
-          delete :unlink, params: { group_id: group }
-        end.to change { Identity.count }.by(-1)
-      end
-
-      context 'with block_password_auth_for_saml_users feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
+    it 'allows account unlinking' do
+      create(:group_saml_identity, saml_provider: saml_provider, user: user)
 
-        it 'does not sign out user provisioned by this group' do
-          delete :unlink, params: { group_id: group }
-
-          expect(response).to redirect_to(profile_account_path)
-        end
-      end
-
-      context 'with block_password_auth_for_saml_users feature flag switched on' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: true)
-        end
-
-        it 'signs out user provisioned by this group' do
-          delete :unlink, params: { group_id: group }
-
-          expect(subject.current_user).to eq(nil)
-        end
-      end
+      expect do
+        delete :unlink, params: { group_id: group }
+      end.to change { Identity.count }.by(-1)
     end
 
     context 'when SAML is disabled for the group' do
diff --git a/ee/spec/features/groups/members/leave_group_spec.rb b/ee/spec/features/groups/members/leave_group_spec.rb
deleted file mode 100644
index 7dc39da3ae4f17d7806a93d971b763e701e21fb6..0000000000000000000000000000000000000000
--- a/ee/spec/features/groups/members/leave_group_spec.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Groups > Members > Leave group', feature_category: :groups_and_projects do
-  include Features::MembersHelpers
-  include Spec::Support::Helpers::ModalHelpers
-
-  let_it_be(:other_user) { create(:user) }
-  let_it_be(:group) { create(:group) }
-
-  let(:user) { create(:user) }
-  let(:more_actions_dropdown) do
-    find('[data-testid="groups-projects-more-actions-dropdown"] .gl-new-dropdown-custom-toggle')
-  end
-
-  before do
-    user.update!(provisioned_by_group: group)
-    sign_in(user)
-  end
-
-  context 'with block_password_auth_for_saml_users feature flag switched on' do
-    it 'guest provisioned by this group leaves the group and is signed off', :js do
-      group.add_guest(user)
-      group.add_owner(other_user)
-
-      visit group_path(group)
-      more_actions_dropdown.click
-      click_link 'Leave group'
-      accept_gl_confirm(button_text: 'Leave group')
-
-      expect(page).to have_current_path(new_user_session_path, ignore_query: true)
-      expect(group).not_to have_user(user)
-    end
-
-    it 'guest leaves the group by url param and is signed off', :js do
-      group.add_guest(user)
-      group.add_owner(other_user)
-
-      visit group_path(group, leave: 1)
-      accept_gl_confirm(button_text: 'Leave group')
-      wait_for_all_requests
-
-      expect(page).to have_current_path(new_user_session_path, ignore_query: true)
-      expect(group).not_to have_user(user)
-    end
-  end
-
-  context 'with block_password_auth_for_saml_users feature flag switched off' do
-    before do
-      stub_feature_flags(block_password_auth_for_saml_users: false)
-    end
-
-    it 'guest leaves the group by url param', :js do
-      group.add_guest(user)
-      group.add_owner(other_user)
-
-      visit group_path(group, leave: 1)
-      accept_gl_confirm(button_text: 'Leave group')
-      wait_for_all_requests
-
-      expect(page).to have_current_path(dashboard_groups_path, ignore_query: true)
-      expect(group).not_to have_user(user)
-    end
-
-    it 'guest leaves the group as last member', :js do
-      group.add_guest(user)
-
-      visit group_path(group)
-      more_actions_dropdown.click
-      click_link 'Leave group'
-      accept_gl_confirm(button_text: 'Leave group')
-
-      expect(page).to have_current_path(dashboard_groups_path, ignore_query: true)
-      expect(group).not_to have_user(user)
-    end
-  end
-end
diff --git a/ee/spec/models/ee/user_detail_spec.rb b/ee/spec/models/ee/user_detail_spec.rb
index 618068c807492999743e1d74f314990986fa9f23..9f3a203120cc16a24bcdece48b0a325cd95a516a 100644
--- a/ee/spec/models/ee/user_detail_spec.rb
+++ b/ee/spec/models/ee/user_detail_spec.rb
@@ -32,22 +32,6 @@
     end
   end
 
-  describe '#provisioned_by_group?' do
-    let(:user) { create(:user, provisioned_by_group: build(:group)) }
-
-    subject { user.user_detail.provisioned_by_group? }
-
-    it 'returns true when user is provisioned by group' do
-      expect(subject).to eq(true)
-    end
-
-    it 'returns true when user is provisioned by group' do
-      user.user_detail.update!(provisioned_by_group: nil)
-
-      expect(subject).to eq(false)
-    end
-  end
-
   context 'with loose foreign key on user_details.provisioned_by_group_id' do
     it_behaves_like 'cleanup by a loose foreign key' do
       let_it_be(:parent) { create(:group) }
diff --git a/ee/spec/models/ee/user_spec.rb b/ee/spec/models/ee/user_spec.rb
index f56992bcbb0f4915d0cbe8facc1bc3653266fa26..4de5a0568c2c880c025143dff4042aa809fc15ab 100644
--- a/ee/spec/models/ee/user_spec.rb
+++ b/ee/spec/models/ee/user_spec.rb
@@ -1574,26 +1574,6 @@
       end
     end
 
-    context 'when user is provisioned by group' do
-      before do
-        user.user_detail.provisioned_by_group = build(:group)
-      end
-
-      it 'is false' do
-        expect(user.allow_password_authentication_for_web?).to eq false
-      end
-
-      context 'with feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is true' do
-          expect(user.allow_password_authentication_for_web?).to eq true
-        end
-      end
-    end
-
     context 'when password authentication disabled by enterprise group' do
       let_it_be(:enterprise_group) { create(:group) }
       let_it_be(:saml_provider) { create(:saml_provider, group: enterprise_group, enabled: true, disable_password_authentication_for_enterprise_users: true) }
@@ -1617,26 +1597,6 @@
       end
     end
 
-    context 'when user is provisioned by group' do
-      before do
-        user.user_detail.provisioned_by_group = build(:group)
-      end
-
-      it 'is false' do
-        expect(user.allow_password_authentication_for_git?).to eq false
-      end
-
-      context 'with feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is true' do
-          expect(user.allow_password_authentication_for_git?).to eq true
-        end
-      end
-    end
-
     context 'when password authentication disabled by enterprise group' do
       let_it_be(:enterprise_group) { create(:group) }
       let_it_be(:saml_provider) { create(:saml_provider, group: enterprise_group, enabled: true, disable_password_authentication_for_enterprise_users: true) }
@@ -1704,110 +1664,6 @@
     end
   end
 
-  describe '#user_authorized_by_provisioning_group?' do
-    context 'when user is provisioned by group' do
-      let(:group) { build(:group) }
-
-      before do
-        user.user_detail.provisioned_by_group = group
-      end
-
-      it 'is true' do
-        expect(user.user_authorized_by_provisioning_group?).to eq true
-      end
-
-      context 'with feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is false' do
-          expect(user.user_authorized_by_provisioning_group?).to eq false
-        end
-      end
-
-      context 'with feature flag switched on for particular groups' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is false when provisioned by group without feature flag' do
-          stub_feature_flags(block_password_auth_for_saml_users: create(:group))
-
-          expect(user.user_authorized_by_provisioning_group?).to eq false
-        end
-
-        it 'is true when provisioned by group with feature flag' do
-          stub_feature_flags(block_password_auth_for_saml_users: group)
-
-          expect(user.user_authorized_by_provisioning_group?).to eq true
-        end
-      end
-    end
-
-    context 'when user is not provisioned by group' do
-      it 'is false' do
-        expect(user.user_authorized_by_provisioning_group?).to eq false
-      end
-
-      context 'with feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is false' do
-          expect(user.user_authorized_by_provisioning_group?).to eq false
-        end
-      end
-    end
-  end
-
-  describe '#authorized_by_provisioning_group?' do
-    let_it_be(:group) { create(:group) }
-
-    context 'when user is provisioned by group' do
-      before do
-        user.user_detail.provisioned_by_group = group
-      end
-
-      it 'is true' do
-        expect(user.authorized_by_provisioning_group?(group)).to eq true
-      end
-
-      context 'when other group is provided' do
-        it 'is false' do
-          expect(user.authorized_by_provisioning_group?(create(:group))).to eq false
-        end
-      end
-
-      context 'with feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is false' do
-          expect(user.authorized_by_provisioning_group?(group)).to eq false
-        end
-      end
-    end
-
-    context 'when user is not provisioned by group' do
-      it 'is false' do
-        expect(user.authorized_by_provisioning_group?(group)).to eq false
-      end
-
-      context 'with feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is false' do
-          expect(user.authorized_by_provisioning_group?(group)).to eq false
-        end
-      end
-    end
-  end
-
   describe '#password_authentication_disabled_by_enterprise_group?' do
     subject(:password_authentication_disabled_by_enterprise_group?) { user.password_authentication_disabled_by_enterprise_group? }
 
@@ -1915,44 +1771,6 @@
     end
   end
 
-  describe '#password_based_login_forbidden?' do
-    context 'when user is provisioned by group' do
-      before do
-        user.user_detail.provisioned_by_group = build(:group)
-      end
-
-      it 'is true' do
-        expect(user.password_based_login_forbidden?).to eq true
-      end
-
-      context 'with feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is false' do
-          expect(user.password_based_login_forbidden?).to eq false
-        end
-      end
-    end
-
-    context 'when user is not provisioned by group' do
-      it 'is false' do
-        expect(user.password_based_login_forbidden?).to eq false
-      end
-
-      context 'with feature flag switched off' do
-        before do
-          stub_feature_flags(block_password_auth_for_saml_users: false)
-        end
-
-        it 'is false' do
-          expect(user.password_based_login_forbidden?).to eq false
-        end
-      end
-    end
-  end
-
   describe '#using_license_seat?' do
     let(:user) { create(:user) }
 
diff --git a/ee/spec/requests/git_http_spec.rb b/ee/spec/requests/git_http_spec.rb
index c17973bba6e6b9aa4e4a8c57ce5fc25dea883ace..907b7127d14b21ddad6922c00c2677cae3fcad30 100644
--- a/ee/spec/requests/git_http_spec.rb
+++ b/ee/spec/requests/git_http_spec.rb
@@ -155,104 +155,6 @@
     it_behaves_like 'pulls are allowed'
   end
 
-  describe 'when user cannot use password-based login' do
-    let_it_be(:group) { create(:group) }
-    let_it_be(:project) { create(:project, :repository, :private, group: group) }
-    let_it_be(:user) { create(:user, provisioned_by_group: group) }
-
-    let(:env) { { user: user.username, password: user.password } }
-    let(:path) { "#{project.full_path}.git" }
-
-    before do
-      project.add_developer(user)
-    end
-
-    context 'with feature flag switched off' do
-      before do
-        stub_feature_flags(block_password_auth_for_saml_users: false)
-      end
-
-      it_behaves_like 'pulls are allowed'
-      it_behaves_like 'pushes are allowed'
-    end
-
-    context 'with feature flag switched on' do
-      it 'responds with status 401 Unauthorized for pull action' do
-        download(path, **env) do |response|
-          expect(response).to have_gitlab_http_status(:unauthorized)
-        end
-      end
-
-      it 'responds with status 401 Unauthorized for push action' do
-        upload(path, **env) do |response|
-          expect(response).to have_gitlab_http_status(:unauthorized)
-        end
-      end
-
-      context 'when username and personal access token are provided' do
-        let(:user) { create(:user, provisioned_by_group: group) }
-        let(:access_token) { create(:personal_access_token, user: user) }
-        let(:env) { { user: user.username, password: access_token.token } }
-
-        it_behaves_like 'pulls are allowed'
-        it_behaves_like 'pushes are allowed'
-      end
-
-      context 'when user has 2FA enabled' do
-        let(:user) { create(:user, :two_factor, provisioned_by_group: group) }
-        let(:access_token) { create(:personal_access_token, user: user) }
-
-        context 'when username and personal access token are provided' do
-          let(:env) { { user: user.username, password: access_token.token } }
-
-          it_behaves_like 'pulls are allowed'
-          it_behaves_like 'pushes are allowed'
-
-          it 'rejects the push attempt for read_repository scope' do
-            read_access_token = create(:personal_access_token, user: user, scopes: [:read_repository])
-
-            upload(path, user: user.username, password: read_access_token.token) do |response|
-              expect(response).to have_gitlab_http_status(:forbidden)
-              expect(response.body).to include('You are not allowed to upload code')
-            end
-          end
-
-          it 'accepts the push attempt for write_repository scope' do
-            write_access_token = create(:personal_access_token, user: user, scopes: [:write_repository])
-
-            upload(path, user: user.username, password: write_access_token.token) do |response|
-              expect(response).to have_gitlab_http_status(:ok)
-            end
-          end
-
-          it 'accepts the pull attempt for read_repository scope' do
-            read_access_token = create(:personal_access_token, user: user, scopes: [:read_repository])
-
-            download(path, user: user.username, password: read_access_token.token) do |response|
-              expect(response).to have_gitlab_http_status(:ok)
-            end
-          end
-
-          it 'accepts the pull attempt for api scope' do
-            read_access_token = create(:personal_access_token, user: user, scopes: [:api])
-
-            download(path, user: user.username, password: read_access_token.token) do |response|
-              expect(response).to have_gitlab_http_status(:ok)
-            end
-          end
-
-          it 'accepts the push attempt for api scope' do
-            write_access_token = create(:personal_access_token, user: user, scopes: [:api])
-
-            upload(path, user: user.username, password: write_access_token.token) do |response|
-              expect(response).to have_gitlab_http_status(:ok)
-            end
-          end
-        end
-      end
-    end
-  end
-
   context 'when password authentication disabled by enterprise group' do
     let_it_be(:enterprise_group) { create(:group) }
     let_it_be(:saml_provider) { create(:saml_provider, group: enterprise_group, enabled: true, disable_password_authentication_for_enterprise_users: true) }
diff --git a/lib/gitlab/auth/database/authentication.rb b/lib/gitlab/auth/database/authentication.rb
index bf35a9abe41dd198335b695871f7cb96db3d2ea4..c0dc2b0875fd2712bfb951eb2b9e1a0727973ddc 100644
--- a/lib/gitlab/auth/database/authentication.rb
+++ b/lib/gitlab/auth/database/authentication.rb
@@ -9,7 +9,6 @@ module Database
       class Authentication < Gitlab::Auth::OAuth::Authentication
         def login(login, password)
           return false unless Gitlab::CurrentSettings.password_authentication_enabled_for_git?
-          return false if user.password_based_login_forbidden?
 
           return user if user&.valid_password?(password)
         end
diff --git a/lib/gitlab/auth/o_auth/user.rb b/lib/gitlab/auth/o_auth/user.rb
index 8a376d1b0a413bf64c9e1834d1d058ae8ce434bc..283ba4fa8a200edf91f49b08efacadc167e6fbc5 100644
--- a/lib/gitlab/auth/o_auth/user.rb
+++ b/lib/gitlab/auth/o_auth/user.rb
@@ -134,8 +134,6 @@ def add_or_update_user_identities
             log.info "Correct LDAP account has been found. identity to user: #{gl_user.username}."
             gl_user.identities.build(provider: ldap_person.provider, extern_uid: ldap_person.dn)
           end
-
-          identity
         end
 
         def find_or_build_ldap_user
diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml
index 71cd9f5605411ea44c294cd26568129ff4da1b47..7aa52f7914eb855de047092ce05acc6db9f1984d 100644
--- a/spec/support/rspec_order_todo.yml
+++ b/spec/support/rspec_order_todo.yml
@@ -91,7 +91,6 @@
 - './ee/spec/features/groups/iterations/user_views_iteration_cadence_spec.rb'
 - './ee/spec/features/groups/iterations/user_views_iteration_spec.rb'
 - './ee/spec/features/groups/ldap_group_links_spec.rb'
-- './ee/spec/features/groups/members/leave_group_spec.rb'
 - './ee/spec/features/groups/members/list_members_spec.rb'
 - './ee/spec/features/groups/members/manage_groups_spec.rb'
 - './ee/spec/features/groups/members/manage_members_spec.rb'