Add LDAP_TLS_NO_VERIFY option, don't require LDAP_ENABLED outside .env (#6845)
Fix #6816, fix #6790
This commit is contained in:
		
							parent
							
								
									a4d7afa3d9
								
							
						
					
					
						commit
						59b3b38b0e
					
				
					 2 changed files with 43 additions and 36 deletions
				
			
		| 
						 | 
					@ -55,6 +55,8 @@ module Devise
 | 
				
			||||||
  @@ldap_bind_dn = nil
 | 
					  @@ldap_bind_dn = nil
 | 
				
			||||||
  mattr_accessor :ldap_password
 | 
					  mattr_accessor :ldap_password
 | 
				
			||||||
  @@ldap_password = nil
 | 
					  @@ldap_password = nil
 | 
				
			||||||
 | 
					  mattr_accessor :ldap_tls_no_verify
 | 
				
			||||||
 | 
					  @@ldap_tls_no_verify = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  class Strategies::PamAuthenticatable
 | 
					  class Strategies::PamAuthenticatable
 | 
				
			||||||
    def valid?
 | 
					    def valid?
 | 
				
			||||||
| 
						 | 
					@ -357,5 +359,6 @@ Devise.setup do |config|
 | 
				
			||||||
    config.ldap_bind_dn        = ENV.fetch('LDAP_BIND_DN')
 | 
					    config.ldap_bind_dn        = ENV.fetch('LDAP_BIND_DN')
 | 
				
			||||||
    config.ldap_password       = ENV.fetch('LDAP_PASSWORD')
 | 
					    config.ldap_password       = ENV.fetch('LDAP_PASSWORD')
 | 
				
			||||||
    config.ldap_uid            = ENV.fetch('LDAP_UID', 'cn')
 | 
					    config.ldap_uid            = ENV.fetch('LDAP_UID', 'cn')
 | 
				
			||||||
 | 
					    config.ldap_tls_no_verify  = ENV['LDAP_TLS_NO_VERIFY'] == 'true'
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +1,9 @@
 | 
				
			||||||
# frozen_string_literal: true
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ENV['LDAP_ENABLED'] == 'true'
 | 
					require 'net/ldap'
 | 
				
			||||||
  require 'net/ldap'
 | 
					require 'devise/strategies/authenticatable'
 | 
				
			||||||
  require 'devise/strategies/authenticatable'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  module Devise
 | 
					module Devise
 | 
				
			||||||
  module Strategies
 | 
					  module Strategies
 | 
				
			||||||
    class LdapAuthenticatable < Authenticatable
 | 
					    class LdapAuthenticatable < Authenticatable
 | 
				
			||||||
      def authenticate!
 | 
					      def authenticate!
 | 
				
			||||||
| 
						 | 
					@ -15,7 +14,7 @@ if ENV['LDAP_ENABLED'] == 'true'
 | 
				
			||||||
            base: Devise.ldap_base,
 | 
					            base: Devise.ldap_base,
 | 
				
			||||||
            encryption: {
 | 
					            encryption: {
 | 
				
			||||||
              method: Devise.ldap_method,
 | 
					              method: Devise.ldap_method,
 | 
				
			||||||
                tls_options: OpenSSL::SSL::SSLContext::DEFAULT_PARAMS,
 | 
					              tls_options: tls_options,
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            auth: {
 | 
					            auth: {
 | 
				
			||||||
              method: :simple,
 | 
					              method: :simple,
 | 
				
			||||||
| 
						 | 
					@ -41,9 +40,14 @@ if ENV['LDAP_ENABLED'] == 'true'
 | 
				
			||||||
      def password
 | 
					      def password
 | 
				
			||||||
        params[:user][:password]
 | 
					        params[:user][:password]
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
      end
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
 | 
					      def tls_options
 | 
				
			||||||
 | 
					        OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.tap do |options|
 | 
				
			||||||
 | 
					          options[:verify_mode] = OpenSSL::SSL::VERIFY_NONE if Devise.ldap_tls_no_verify
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue