Class: WEBrick::HTTPAuth::BasicAuth (Ruby 2.3.7)
Description: Class : WEBrick::HTTPAuth::BasicAuth - Ruby 2.3.7

- Home
- Core 2.3.7
- Std-lib 2.3.7
- Downloads

Support for the Ruby 2.3 series has ended. See here for reference.

### Home Classes Methods

### In Files

- webrick/httpauth/basicauth.rb

### Parent

Object

### Methods

- ::make_passwd
- ::new
- #authenticate
- #challenge

### Included Modules

- WEBrick::HTTPAuth::Authenticator

### Class/Module Index

Quicksearch

- Dir
- Errno
- Errno::ECONNABORTED
- Errno::ECONNRESET
- Errno::EPROTO
- File
- Object
- WEBrick
- WEBrick::AccessLog
- WEBrick::AccessLog::AccessLogError
- WEBrick::BasicLog
- WEBrick::CGI
- WEBrick::Config
- WEBrick::Config::OpenSSL
- WEBrick::Cookie
- WEBrick::Daemon
- WEBrick::GenericServer
- WEBrick::HTMLUtils
- WEBrick::HTTPAuth
- WEBrick::HTTPAuth::Authenticator
- WEBrick::HTTPAuth::BasicAuth
- WEBrick::HTTPAuth::DigestAuth
- WEBrick::HTTPAuth::Htdigest
- WEBrick::HTTPAuth::Htgroup
- WEBrick::HTTPAuth::Htpasswd
- WEBrick::HTTPAuth::ProxyAuthenticator
- WEBrick::HTTPAuth::ProxyBasicAuth
- WEBrick::HTTPAuth::ProxyDigestAuth
- WEBrick::HTTPAuth::UserDB
- WEBrick::HTTPProxyServer
- WEBrick::HTTPRequest
- WEBrick::HTTPResponse
- WEBrick::HTTPResponse::InvalidHeader
- WEBrick::HTTPServer
- WEBrick::HTTPServerError
- WEBrick::HTTPServlet
- WEBrick::HTTPServlet::AbstractServlet
- WEBrick::HTTPServlet::CGIHandler
- WEBrick::HTTPServlet::DefaultFileHandler
- WEBrick::HTTPServlet::ERBHandler
- WEBrick::HTTPServlet::FileHandler
- WEBrick::HTTPServlet::HTTPServletError
- WEBrick::HTTPServlet::ProcHandler
- WEBrick::HTTPStatus
- WEBrick::HTTPStatus::ClientError
- WEBrick::HTTPStatus::EOFError
- WEBrick::HTTPStatus::Error
- WEBrick::HTTPStatus::Info
- WEBrick::HTTPStatus::Redirect
- WEBrick::HTTPStatus::ServerError
- WEBrick::HTTPStatus::Status
- WEBrick::HTTPStatus::Success
- WEBrick::HTTPUtils
- WEBrick::HTTPUtils::FormData
- WEBrick::HTTPVersion
- WEBrick::Log
- WEBrick::ServerError
- WEBrick::SimpleServer
- WEBrick::Utils
- WEBrick::Utils::TimeoutHandler
- WEBrick::Utils::TimeoutHandler::Thread

No matching classes.

# WEBrick::HTTPAuth::BasicAuth

Basic Authentication for WEBrick

Use this class to add basic authentication to a WEBrick servlet.

Here is an example of how to set up a BasicAuth:

    config = { :Realm => 'BasicAuth example realm' }

    htpasswd = WEBrick::HTTPAuth::Htpasswd.new 'my_password_file'
    htpasswd.set_passwd config[:Realm], 'username', 'password'
    htpasswd.flush

    config[:UserDB] = htpasswd

    basic_auth = WEBrick::HTTPAuth::BasicAuth.new config

### Attributes

logger[R]
realm[R]
userdb[R]

### Public Class Methods

make_passwd(realm, user, pass) click to toggle source

Used by UserDB to create a basic password entry

                   # File webrick/httpauth/basicauth.rb, line 42
    def self.make_passwd(realm, user, pass)
      pass ||= ""
      pass.crypt(Utils::random_string(2))
    end

new(config, default=Config::BasicAuth) click to toggle source

Creates a new BasicAuth instance.

See WEBrick::Config::BasicAuth for default configuration entries

You must supply the following configuration entries:

:Realm

  The name of the realm being protected.

:UserDB

  A database of usernames and passwords. A WEBrick::HTTPAuth::Htpasswd instance should be used.

                   # File webrick/httpauth/basicauth.rb, line 60
    def initialize(config, default=Config::BasicAuth)
      check_init(config)
      @config = default.dup.update(config)
    end

### Public Instance Methods

authenticate(req, res) click to toggle source

Authenticates a `req` and returns a 401 Unauthorized using `res` if the authentication was not correct.

                   # File webrick/httpauth/basicauth.rb, line 69
    def authenticate(req, res)
      unless basic_credentials = check_scheme(req)
        challenge(req, res)
      end
      userid, password = basic_credentials.unpack("m*")[0].split(":", 2)
      password ||= ""
      if userid.empty?
        error("user id was not given.")
        challenge(req, res)
      end
      unless encpass = @userdb.get_passwd(@realm, userid, @reload_db)
        error("%s: the user is not allowed.", userid)
        challenge(req, res)
      end
      if password.crypt(encpass) != encpass
        error("%s: password unmatch.", userid)
        challenge(req, res)
      end
      info("%s: authentication succeeded.", userid)
      req.user = userid
    end

challenge(req, res) click to toggle source

Returns a challenge response which asks for authentication information

                   # File webrick/httpauth/basicauth.rb, line 94
    def challenge(req, res)
      res[@response_field] = "#{@auth_scheme} realm=\"#{@realm}\""
      raise @auth_exception
    end