Defect #8978 » ldap_timeout_v2-redmine2.0.3.patch
| config/locales/en.yml (working copy) | ||
|---|---|---|
| 142 | 142 | |
| 143 | 143 |
notice_account_updated: Account was successfully updated. |
| 144 | 144 |
notice_account_invalid_creditentials: Invalid user or password |
| 145 |
notice_account_authentication_timeout: Connection to authentication server timed out |
|
| 145 | 146 |
notice_account_password_updated: Password was successfully updated. |
| 146 | 147 |
notice_account_wrong_password: Wrong password |
| 147 | 148 |
notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. |
| ... | ... | |
| 323 | 324 |
field_repository_is_default: Main repository |
| 324 | 325 |
field_multiple: Multiple values |
| 325 | 326 |
field_ldap_filter: LDAP filter |
| 327 |
field_ldap_timeout: "Timeout (in seconds)" |
|
| 326 | 328 | |
| 327 | 329 |
setting_app_title: Application title |
| 328 | 330 |
setting_app_subtitle: Application subtitle |
| app/models/auth_source_ldap.rb (working copy) | ||
|---|---|---|
| 18 | 18 |
require 'iconv' |
| 19 | 19 |
require 'net/ldap' |
| 20 | 20 |
require 'net/ldap/dn' |
| 21 |
require 'timeout' |
|
| 21 | 22 | |
| 22 | 23 |
class AuthSourceLdap < AuthSource |
| 23 | 24 |
validates_presence_of :host, :port, :attr_login |
| ... | ... | |
| 25 | 26 |
validates_length_of :account, :account_password, :base_dn, :filter, :maximum => 255, :allow_blank => true |
| 26 | 27 |
validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true |
| 27 | 28 |
validates_numericality_of :port, :only_integer => true |
| 29 |
validates_numericality_of :timeout, :only_integer => true, :allow_blank => true |
|
| 28 | 30 |
validate :validate_filter |
| 29 | 31 | |
| 30 | 32 |
before_validation :strip_ldap_attributes |
| ... | ... | |
| 44 | 46 | |
| 45 | 47 |
def authenticate(login, password) |
| 46 | 48 |
return nil if login.blank? || password.blank? |
| 47 |
attrs = get_user_dn(login, password) |
|
| 48 | 49 | |
| 50 |
begin |
|
| 51 |
self.timeout = 20 if self.timeout.nil? |
|
| 52 |
logger.error "LDAP Authentication timeout is set to '#{self.timeout}'"
|
|
| 53 |
Timeout::timeout(self.timeout) do |
|
| 54 |
attrs = get_user_dn(login, password) |
|
| 55 |
end |
|
| 56 |
rescue Timeout::Error => e |
|
| 57 |
raise Timeout::Error.new(e.message) |
|
| 58 |
end |
|
| 59 | ||
| 49 | 60 |
if attrs && attrs[:dn] && authenticate_dn(attrs[:dn], password) |
| 50 | 61 |
logger.debug "Authentication successful for '#{login}'" if logger && logger.debug?
|
| 51 | 62 |
return attrs.except(:dn) |
| app/controllers/account_controller.rb (working copy) | ||
|---|---|---|
| 150 | 150 |
# Valid user |
| 151 | 151 |
successful_authentication(user) |
| 152 | 152 |
end |
| 153 |
rescue Timeout::Error => e |
|
| 154 |
auth_source_timeout |
|
| 153 | 155 |
end |
| 154 | 156 | |
| 155 | 157 |
def open_id_authenticate(openid_url) |
| ... | ... | |
| 229 | 231 |
flash.now[:error] = l(:notice_account_invalid_creditentials) |
| 230 | 232 |
end |
| 231 | 233 | |
| 234 |
def auth_source_timeout |
|
| 235 |
logger.warn "Failed to authenticate user '#{params[:username]}' at #{Time.now.utc} because the authentication source connection timed out"
|
|
| 236 |
flash.now[:error] = l(:notice_account_authentication_timeout) |
|
| 237 |
end |
|
| 238 | ||
| 232 | 239 |
# Register a user for email activation. |
| 233 | 240 |
# |
| 234 | 241 |
# Pass a block for behavior when a user fails to save |
| app/views/auth_sources/_form_auth_source_ldap.html.erb (working copy) | ||
|---|---|---|
| 26 | 26 |
<p><label for="auth_source_custom_filter"><%=l(:field_ldap_filter)%></label> |
| 27 | 27 |
<%= text_field 'auth_source', 'filter', :size => 60 %></p> |
| 28 | 28 | |
| 29 |
<p><label for="auth_source_timeout"><%=l(:field_ldap_timeout)%></label> |
|
| 30 |
<%= text_field 'auth_source', 'timeout', :size => 4 %></p> |
|
| 31 | ||
| 29 | 32 |
<p><label for="auth_source_onthefly_register"><%=l(:field_onthefly)%></label> |
| 30 | 33 |
<%= check_box 'auth_source', 'onthefly_register' %></p> |
| 31 | 34 |
</div> |
- « Previous
- 1
- 2
- Next »