diff --git a/README b/README new file mode 100644 index 0000000000000000000000000000000000000000..6c0d768971e1013394133643621dda8986830e60 --- /dev/null +++ b/README @@ -0,0 +1,93 @@ +Shibboleth auth request module for nginx +======================================== + +This module allows authorization based on the result of a subrequest to Shibboleth. +Once a subrequest returns 2xx status - access is allowed; on 401 or 403 - +access is disabled with an appropriate status. + +For 401 statuses, the WWW-Authenticate header from the subrequest response +will be passed to client. + +All other subrequest response statuses are considered to be an error, unless +the `shib_authorizer=on` flag is supplied, in which case the module will +return the subrequest's response status and headers. This mostly follows +the FastCGI Authorizer specification, with the exception of the processing +of the request and response bodies. Further information follows below. + +The module works at access phase and therefore may be combined nicely with other +access modules (access, auth_basic) via satisfy directive. + + +Configuration directives +======================== + + shib_request <uri>|off [flags] + + Context: http, server, location + Default: off + + Switches Shibboleth auth request module on and sets uri which will be + asked for authorization. + + Flags may be configured to modify the behaviour of the module as + follows: + + * shib_authorizer=on - Configures the auth request module to explicitly + return the status, headers, and content of the response resulting + from the sub-request to the configured uri. + + This option allows a uri to conform to the FastCGI Authorizer + specification; see http://www.fastcgi.com/drupal/node/22#S6.3. + The one (potentially significant) caveat is that due to the way + Nginx operates at present with regards to subrequests (what + an Authorizer effectively requires), the request body will *not* be + forwarded to the authorizer, and similarly, the response body from + the authorizer will *not* be returned to the client. + + Configured URIs are not restricted to using a FastCGI backend + to generate a response, however. This may be useful during + testing or otherwise, as you can use Nginx's built in ``return`` + and ``rewrite`` directives to produce a suitable response. + + shib_request_set <variable> <value> + + Context: http, server, location + Default: none + + Set request variable to the given value after auth request completion. + Value may contain variables from auth request, e.g. $upstream_http_*. + + +Usage +===== + + # FastCGI authorizer for Shibboleth Auth Request module + location = /shibauthorizer { + internal; + include fastcgi_params; + fastcgi_pass unix:/opt/shibboleth/shibauthorizer.sock; + } + + + # A secured location. All incoming requests query the Shibboleth FastCGI authorizer. + # Watch out for performance issues and spoofing. + location /secure { + more_clear_input_headers 'Variable-*' 'Shib-*' 'Remote-User' 'REMOTE_USER' 'Auth-Type' 'AUTH_TYPE'; + + # Add your attributes here. They get introduced as headers + # by the FastCGI authorizer so we must prevent spoofing. + more_clear_input_headers 'displayName' 'mail' 'persistent-id'; + + shib_request /shibauthorizer shib_authorizer=on; + proxy_pass http://localhost:8080; + } + + +Misc +==== + +To compile nginx with this module, use "--add-module <path>" option +to nginx configure. + +For further information on why this is a dedicated module, see +http://forum.nginx.org/read.php?2,238523,238523#msg-238523