Class: Rack::Auth::Digest::MD5
- Inherits:
-
AbstractHandler
- Object
- AbstractHandler
- Rack::Auth::Digest::MD5
- Defined in:
- rack/rack/auth/digest/md5.rb
Overview
Rack::Auth::Digest::MD5 implements the MD5 algorithm version of HTTP Digest Authentication, as per RFC 2617.
Initialize with the [Rack] application that you want protecting, and a block that looks up a plaintext password for a given username.
opaque
needs to be set to a constant base64/hexadecimal
string.
Constant Summary
Instance Attribute Summary (collapse)
-
- (void) opaque
Returns the value of attribute opaque.
-
- (void) passwords_hashed
writeonly
Sets the attribute passwords_hashed.
-
- (void) realm
inherited
from AbstractHandler
Returns the value of attribute realm.
Instance Method Summary (collapse)
- - (void) call(env)
-
- (MD5) initialize(app, realm = nil, opaque = nil, &authenticator)
constructor
A new instance of MD5.
- - (Boolean) passwords_hashed?
Constructor Details
- (MD5) initialize(app, realm = nil, opaque = nil, &authenticator)
Returns a new instance of MD5
24 25 26 27 28 29 30 31 |
# File 'rack/rack/auth/digest/md5.rb', line 24 def initialize(app, realm=nil, opaque=nil, &authenticator) @passwords_hashed = nil if opaque.nil? and realm.respond_to? :values_at realm, opaque, @passwords_hashed = realm.values_at :realm, :opaque, :passwords_hashed end super(app, realm, &authenticator) @opaque = opaque end |
Instance Attribute Details
- (void) opaque
Returns the value of attribute opaque
20 21 22 |
# File 'rack/rack/auth/digest/md5.rb', line 20 def opaque @opaque end |
- (void) passwords_hashed=(value) (writeonly)
Sets the attribute passwords_hashed
22 23 24 |
# File 'rack/rack/auth/digest/md5.rb', line 22 def passwords_hashed=(value) @passwords_hashed = value end |
- (void) realm Originally defined in class AbstractHandler
Returns the value of attribute realm
Instance Method Details
- (void) call(env)
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'rack/rack/auth/digest/md5.rb', line 37 def call(env) auth = Request.new(env) unless auth.provided? return end if !auth.digest? || !auth.correct_uri? || !valid_qop?(auth) return bad_request end if valid?(auth) if auth.nonce.stale? return (challenge(:stale => true)) else env['REMOTE_USER'] = auth.username return @app.call(env) end end end |
- (Boolean) passwords_hashed?
33 34 35 |
# File 'rack/rack/auth/digest/md5.rb', line 33 def passwords_hashed? !!@passwords_hashed end |