rack-auth-kerberos 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,10 @@
1
+ = 0.2.4 - 22-Apr-2010
2
+ * Krb5Auth::Krb5 object creation has been moved from the constructor into the
3
+ call method in order to guarantee a new object is used every time. This solves
4
+ a potential issue where krb5-auth would segfault if it tried to use an object
5
+ that had already been closed.
6
+ * Some minor documentation updates.
7
+
1
8
  = 0.2.3 - 14-Jan-2010
2
9
  * Resetting log with each call now, instead of initialize
3
10
 
@@ -1,14 +1,15 @@
1
1
  require 'krb5_auth'
2
2
 
3
+ # The Rack module serves as a namespace only.
3
4
  module Rack
5
+
6
+ # The Auth module serves as a namespace only.
4
7
  module Auth
8
+
9
+ # The Kerberos class encapsulates kerberos authentication handling.
5
10
  class Kerberos
6
11
  # The version of the rack-auth-kerberos library.
7
- VERSION = '0.2.3'
8
-
9
- def log(msg)
10
- @log << "\n #{msg}"
11
- end
12
+ VERSION = '0.2.4'
12
13
 
13
14
  # Creates a new Rack::Kerberos object. The +user_field+ and +password_field+
14
15
  # are the params looked for in the call method. The defaults are 'username'
@@ -22,16 +23,11 @@ module Rack
22
23
  # supply a username with or without a realm and it will Just Work (TM).
23
24
  #
24
25
  def initialize(app, user_field = 'username', password_field = 'password', realm = nil)
26
+ @kerberos = nil
25
27
  @app = app
26
28
  @user_field = user_field
27
29
  @password_field = password_field
28
- @kerberos = Krb5Auth::Krb5.new
29
-
30
- if realm
31
- @realm = realm
32
- else
33
- @realm = @kerberos.get_default_realm
34
- end
30
+ @realm = realm
35
31
  end
36
32
 
37
33
  # The call method we've defined first checks to see if the AUTH_USER
@@ -56,6 +52,9 @@ module Rack
56
52
  # AUTH_DATETIME => Time.now.utc
57
53
  #
58
54
  def call(env)
55
+ @kerberos = Krb5Auth::Krb5.new
56
+ @realm ||= @kerberos.get_default_realm
57
+
59
58
  @log = "Entering Rack::Auth::Kerberos"
60
59
  request = Rack::Request.new(env)
61
60
 
@@ -63,6 +62,7 @@ module Rack
63
62
  password = request.params[@password_field]
64
63
 
65
64
  log "Kerberos user: #{user}, password length: #{password.nil? ? 'nil' : password.size}"
65
+
66
66
  # Only authenticate user if both the username and password fields are present
67
67
  unless user && password
68
68
  return @app.call(env)
@@ -113,6 +113,12 @@ module Rack
113
113
  env['AUTH_LOG'] = @log
114
114
  @app.call(env)
115
115
  end
116
+
117
+ # Append a +msg+ to a @log string that can be used for logging & debugging.
118
+ #
119
+ def log(msg)
120
+ @log << "\n #{msg}"
121
+ end
116
122
  end
117
123
  end
118
124
  end
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = 'rack-auth-kerberos'
5
- gem.version = '0.2.3'
5
+ gem.version = '0.2.4'
6
6
  gem.authors = ["Daniel Berger", "Charlie O'Keefe", "Marty Haught"]
7
7
  gem.email = 'dberger@globe.gov'
8
8
  gem.homepage = 'http://www.github.com/rack-kerberos'
@@ -13,7 +13,7 @@ class TC_Rack_Auth_Kerberos < Test::Unit::TestCase
13
13
  end
14
14
 
15
15
  def test_version
16
- assert_equal('0.2.3', Rack::Auth::Kerberos::VERSION)
16
+ assert_equal('0.2.4', Rack::Auth::Kerberos::VERSION)
17
17
  end
18
18
 
19
19
  def teardown
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-auth-kerberos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Berger
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2010-01-15 00:00:00 -07:00
14
+ date: 2010-04-22 00:00:00 -06:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency