Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
HTTPAuth provides both basic and digest authentication.
To enable authentication for requests in WEBrick you will need a user database and an authenticator. To start, here’s an Htpasswd database for use with a DigestAuth authenticator:
config = { :Realm => 'DigestAuth example realm' } htpasswd = WEBrick::HTTPAuth::Htpasswd.new 'my_password_file' htpasswd.auth_type = WEBrick::HTTPAuth::DigestAuth htpasswd.set_passwd config[:Realm], 'username', 'password' htpasswd.flush
The :Realm
is used to provide different access to different
groups across several resources on a server. Typically you’ll need only
one realm for a server.
This database can be used to create an authenticator:
config[:UserDB] = htpasswd digest_auth = WEBrick::HTTPAuth::DigestAuth.new config
To authenticate a request call authenticate with a request and response object in a servlet:
def do_GET req, res @authenticator.authenticate req, res end
For digest authentication the authenticator must not be created every request, it must be passed in as an option via WEBrick::HTTPServer#mount.
Simple wrapper for providing basic authentication for a request. When
called with a request req
, response res
,
authentication realm
and block
the block will be
called with a username
and password
. If the
block returns true the request is allowed to continue, otherwise an
HTTPStatus::Unauthorized error is raised.
# File webrick/httpauth.rb, line 78 def basic_auth(req, res, realm, &block) # :yield: username, password _basic_auth(req, res, realm, "Authorization", "WWW-Authenticate", HTTPStatus::Unauthorized, block) end
Simple wrapper for providing basic authentication for a proxied request.
When called with a request req
, response res
,
authentication realm
and block
the block will be
called with a username
and password
. If the block
returns true the request is allowed to continue, otherwise an
HTTPStatus::ProxyAuthenticationRequired error is raised.
# File webrick/httpauth.rb, line 90 def proxy_basic_auth(req, res, realm, &block) # :yield: username, password _basic_auth(req, res, realm, "Proxy-Authorization", "Proxy-Authenticate", HTTPStatus::ProxyAuthenticationRequired, block) end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.