Class: Rack::Auth::Digest::MD5
- Inherits:
-
AbstractHandler
- Object
- AbstractHandler
- Rack::Auth::Digest::MD5
- Defined in:
- lib/rack/auth/digest.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.
150 151 152 153 154 155 156 157 |
# File 'lib/rack/auth/digest.rb', line 150 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.
146 147 148 |
# File 'lib/rack/auth/digest.rb', line 146 def opaque @opaque end |
#passwords_hashed=(value) ⇒ Object (writeonly)
Sets the attribute passwords_hashed
148 149 150 |
# File 'lib/rack/auth/digest.rb', line 148 def passwords_hashed=(value) @passwords_hashed = value end |
Instance Method Details
#call(env) ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'lib/rack/auth/digest.rb', line 163 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
159 160 161 |
# File 'lib/rack/auth/digest.rb', line 159 def passwords_hashed? !!@passwords_hashed end |