Qore HttpServerUtil Module Reference  0.3.12
HttpServer::AbstractAuthenticator Class Reference

abstract base class for external authentication More...

Inheritance diagram for HttpServer::AbstractAuthenticator:

Public Member Functions

 authenticate (string user, string pass="")
 called to authenticate a user for a connection More...
 
 authenticateByIP (string ip, reference< string > user)
 called when the connection requires authentication, but no authentication credentials were supplied, to try to authenticate the connection based on the source IP address More...
 
*hash< HttpResponseInfoauthenticateRequest (HttpListenerInterface listener, hash hdr, reference< hash > cx)
 primary method called to authenticate each request More...
 
string getRealm ()
 returns the authentication realm as a string More...
 
bool requiresAuthentication ()
 called to check if the connection requires authentication More...
 

Private Member Functions

hash< HttpResponseInfodo401 (string msg="Authentication is required to access this server")
 returns a 401 repsonse with the given string argument as the message body
 

Detailed Description

abstract base class for external authentication

This class should be inherited by a class providing real authentication

Member Function Documentation

◆ authenticate()

HttpServer::AbstractAuthenticator::authenticate ( string  user,
string  pass = "" 
)

called to authenticate a user for a connection

This method will only be called if requiresAuthentication() returns True

Parameters
userthe username to authenticate
passthe password for the user
Exceptions
AUTHENTICATION-ERRORsubclasses should throw this exception if the user cannot be authenticated (must be overridden in child classes; this parent method will never throw any exceptions; all connections are accepted by default)

◆ authenticateByIP()

HttpServer::AbstractAuthenticator::authenticateByIP ( string  ip,
reference< string user 
)

called when the connection requires authentication, but no authentication credentials were supplied, to try to authenticate the connection based on the source IP address

This method will only be called if requiresAuthentication() returns True and no authentication credentials are supplied with the request

Parameters
ipthe IP address of the source connection
usera reference to a string that will be populated with the username to use if the request can be authenticated based on the source IP address (this method returns the string "admin")
Exceptions
AUTHENTICATION-ERRORsubclasses should throw this exception if the user cannot be authenticated (however this base class method as implemented here will never throw any exceptions

◆ authenticateRequest()

*hash<HttpResponseInfo> HttpServer::AbstractAuthenticator::authenticateRequest ( HttpListenerInterface  listener,
hash  hdr,
reference< hash cx 
)

primary method called to authenticate each request

Parameters
listeneran HttpListenerInterface object for the listener serving the request for logging purposes
hdra hash of request headers
cxa reference to the call context hash; set the "user" key to the user name if a user was identified and authorized; this hash will have the following keys:
  • socket: the bind address used to bind the listener ("socket-info" provides more detailed information)
  • socket-info: a hash of socket information for the listening socket (as returned by Qore::Socket::getSocketInfo())
  • peer-info: a hash of socket information for the remote socket (as returned by Qore::Socket::getPeerInfo())
  • url: a hash of broken-down URL information (as returned from Qore::parse_url())
  • id: the unique HTTP connection ID
  • ssl: True if the request was encrypted with HTTPS, False if not
  • listener-id: the HTTP server listener ID (see HttpServer::getListenerInfo())
  • user: the current RBAC username (if any)
  • root_path: the root URL path matched if the request was matched by a URL prefix
Returns
returns NOTHING if there were no errors, otherwise returns a hash with the following keys to indicate an authentication or authorization error:
  • "code": the HTTP response code
  • "body": the error message body
  • "hdr": an optional hash of headers for the error response

◆ getRealm()

string HttpServer::AbstractAuthenticator::getRealm ( )

returns the authentication realm as a string

Returns
the authentication realm as a string (default: "Default Authentication Realm")

◆ requiresAuthentication()

bool HttpServer::AbstractAuthenticator::requiresAuthentication ( )

called to check if the connection requires authentication

Returns
True if authentication is enabled, False if not (False is the default value returned)