Qorus Integration Engine®  4.0.3_git
OMQ::DefaultQorusRBACBasicAuthenticator Class Reference

class for authenticating with standard Qorus RBAC authentication that returns a header that asks for basic authentication when authentication fails More...

Inheritance diagram for OMQ::DefaultQorusRBACBasicAuthenticator:
OMQ::DefaultQorusRBACAuthenticator OMQ::DefaultQorusRBACAuthenticator HttpServer::AbstractAuthenticator

Public Member Methods

*hash< HttpResponseInfo > authenticateRequest (HttpListenerInterface listener, hash< auto > hdr, reference< hash > cx)
 primary method called to authenticate each request More...
 
private hash< auto > getAuthHeader ()
 can be overridden to return a header with 401 Unauthorized responses More...
 

Additional Inherited Members

- Private:Internal Member Methods inherited from OMQ::DefaultQorusRBACAuthenticator
bool requiresAuthentication ()
 called to check if the connection requires authentication More...
 
string getRealm ()
 returns the authentication realm as a string More...
 
*hash< HttpResponseInfo > authenticateRequest (HttpListenerInterface listener, hash< auto > hdr, reference< hash > cx)
 primary method called to authenticate each request More...
 
 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...
 
private hash< auto > getAuthHeader ()
 can be overridden to return a header with 401 Unauthorized responses More...
 

Detailed Description

class for authenticating with standard Qorus RBAC authentication that returns a header that asks for basic authentication when authentication fails

The difference between this class and OMQ::DefaultQorusRBACAuthenticator is only in the response to authentication failures; this class returns a header that tells a browser that basic authentication is required, so the requesting browser will display a dialog box with the username and password.

Qorus supports token-based authentication as well as pluggable user-defined authentication as well, so HTTP basic authentication is not the only authentication mechanism supported.

See also

Member Function Documentation

◆ authenticateRequest()

*hash<HttpResponseInfo> OMQ::DefaultQorusRBACBasicAuthenticator::authenticateRequest ( HttpListenerInterface  listener,
hash< auto >  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:
  • header-info: a hash of information about the request header with the following keys:
    • request-uri: gives the request URI in an HTTP request
    • body-content-type: this is the "Content-Type" header without any charset declaration
    • charset: if there is a charset declaration in the "Content-Type" header, the value is returned in this key
    • close: set to True if the connection should be closed after responding, False if not (as derived from the request header)
    • accept-charset: this key will be set to an appropriate value from any "Accept-Charset" header; if any of "*", "utf8", or "utf-8" are present, then this will be set to "utf8", otherwise it will be set to the first requested character encoding in the list
    • accept-encoding: a hash where keys are values from any "Accept-Encoding" header and the values are True
  • 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

Authentication is performed according to Qorus system configuration.

Note
the WWW-Authenticate header is returned for 401 responses using the getAuthHeader() method
See also

◆ getAuthHeader()

private hash<auto> OMQ::DefaultQorusRBACBasicAuthenticator::getAuthHeader ( )

can be overridden to return a header with 401 Unauthorized responses

Returns
a hash that gives the WWW-Authenticate header requesting basic authentication with the realm as returned by the getRealm() method

The documentation for this class was generated from the following files: