Class: Rack::Auth::Digest::MD5
- Inherits:
-
AbstractHandler
- Object
- AbstractHandler
- Rack::Auth::Digest::MD5
- Defined in:
- lib/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.
Instance Attribute Summary collapse
-
#opaque ⇒ Object
Returns the value of attribute opaque.
-
#passwords_hashed ⇒ Object
writeonly
Sets the attribute passwords_hashed.
Attributes inherited from AbstractHandler
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, realm = nil, opaque = nil, &authenticator) ⇒ MD5
constructor
A new instance of MD5.
- #passwords_hashed? ⇒ Boolean
Constructor Details
#initialize(app, realm = nil, opaque = nil, &authenticator) ⇒ MD5
Returns a new instance of MD5.
26 27 28 29 30 31 32 33 |
# File 'lib/rack/auth/digest/md5.rb', line 26 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
#opaque ⇒ Object
Returns the value of attribute opaque.
22 23 24 |
# File 'lib/rack/auth/digest/md5.rb', line 22 def opaque @opaque end |
#passwords_hashed=(value) ⇒ Object (writeonly)
Sets the attribute passwords_hashed
24 25 26 |
# File 'lib/rack/auth/digest/md5.rb', line 24 def passwords_hashed=(value) @passwords_hashed = value end |
Instance Method Details
#call(env) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rack/auth/digest/md5.rb', line 39 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 |
#passwords_hashed? ⇒ Boolean
35 36 37 |
# File 'lib/rack/auth/digest/md5.rb', line 35 def passwords_hashed? !!@passwords_hashed end |