diff --git a/changelogs/unreleased/dm-oauth-config-for.yml b/changelogs/unreleased/dm-oauth-config-for.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8fbbd45bb57f2bda25852ff68774f84e295b22ca
--- /dev/null
+++ b/changelogs/unreleased/dm-oauth-config-for.yml
@@ -0,0 +1,4 @@
+---
+title: Return nil when looking up config for unknown LDAP provider
+merge_request:
+author:
diff --git a/lib/gitlab/o_auth/provider.rb b/lib/gitlab/o_auth/provider.rb
index 9ad7a38d505919e971da85a2bbf58ebbcd1dedbc..ac9d66c836d9e1dcd124cc05afb2b60b818f4c7b 100644
--- a/lib/gitlab/o_auth/provider.rb
+++ b/lib/gitlab/o_auth/provider.rb
@@ -22,7 +22,11 @@ module Gitlab
       def self.config_for(name)
         name = name.to_s
         if ldap_provider?(name)
-          Gitlab::LDAP::Config.new(name).options
+          if Gitlab::LDAP::Config.valid_provider?(name)
+            Gitlab::LDAP::Config.new(name).options
+          else
+            nil
+          end
         else
           Gitlab.config.omniauth.providers.find { |provider| provider.name == name }
         end
diff --git a/spec/lib/gitlab/o_auth/provider_spec.rb b/spec/lib/gitlab/o_auth/provider_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1e2a1f8c0393ef144f9501c898bdd8d10033726f
--- /dev/null
+++ b/spec/lib/gitlab/o_auth/provider_spec.rb
@@ -0,0 +1,42 @@
+require 'spec_helper'
+
+describe Gitlab::OAuth::Provider, lib: true do
+  describe '#config_for' do
+    context 'for an LDAP provider' do
+      context 'when the provider exists' do
+        it 'returns the config' do
+          expect(described_class.config_for('ldapmain')).to be_a(Hash)
+        end
+      end
+
+      context 'when the provider does not exist' do
+        it 'returns nil' do
+          expect(described_class.config_for('ldapfoo')).to be_nil
+        end
+      end
+    end
+
+    context 'for an OmniAuth provider' do
+      before do
+        provider = OpenStruct.new(
+          name: 'google',
+          app_id: 'asd123',
+          app_secret: 'asd123'
+        )
+        allow(Gitlab.config.omniauth).to receive(:providers).and_return([provider])
+      end
+
+      context 'when the provider exists' do
+        it 'returns the config' do
+          expect(described_class.config_for('google')).to be_a(OpenStruct)
+        end
+      end
+
+      context 'when the provider does not exist' do
+        it 'returns nil' do
+          expect(described_class.config_for('foo')).to be_nil
+        end
+      end
+    end
+  end
+end