Loading...
Searching...
No Matches
HttpServer::PermissiveAuthenticator Class Reference

class providing automatic authentication for all requests More...

Inheritance diagram for HttpServer::PermissiveAuthenticator:
[legend]

## Public Member Functions

*hash< HttpResponseInfo > | authenticateRequest (HttpListenerInterface listener, hash< auto > hdr, reference< hash > cx)
| primary method called to authenticate each request
Public Member Functions inherited from HttpServer::AbstractAuthenticator
| authenticate (string user, string pass='')
| called to authenticate a user for a connection
| 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
*hash< HttpResponseInfo > | authenticateRequest (HttpListenerInterface listener, hash< auto > hdr, reference< hash< auto > > cx)
| primary method called to authenticate each request
hash< HttpResponseInfo > | do401 (string msg='Authentication is required to access this server', *hash< auto > cx)
| returns a 401 repsonse with the given string argument as the message body
hash< auto > | getAuthHeader ()
| returns a hash with one item - `WWW-Authenticate` header set to correct realm
hash< auto > | getAuthHeader (hash< auto > cx)
| returns a hash with one item - `WWW-Authenticate` header set to correct realm
string | getRealm ()
| returns the authentication realm as a string
bool | requiresAuthentication ()
| called to check if the connection requires authentication

## Detailed Description

class providing automatic authentication for all requests

## Member Function Documentation

## authenticateRequest()

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

primary method called to authenticate each request

Parameters

  listener | an HttpListenerInterface object for the listener serving the request for logging purposes
  hdr | a hash of request headers

  cx

  a 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:
    - `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
    - `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
    - `client-cert`: if the server is configured to capture remote client certificates, and the client supplied a certificate, this key will be populated with the SSLCertificate for the client
    - `close:` set to True if the connection should be closed after responding, False if not (as derived from the request header)
    - `headers-raw`: a hash of raw request headers without any case conversions or other processing
    - `request-uri`: gives the request URI in an HTTP request
  - `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 indicating that the request is authenticated