This ServerAuthContext class manages AuthModules that may be used to validate client requests. A caller typically uses this class in the following manner:
- Retrieve an instance of this class via AuthConfig.getServerAuthContext.
- Receive initial client request and pass it to validateRequest.
Configured plug-in modules validate credentials present in request (for example, decrypt and verify a signature). If credentials valid and sufficient, return. Otherwise throw an AuthException. - Authentication complete.
Perform authorization check on authenticated identity and, if successful, dispatch to requested service application. - Service application finished.
- Invoke secureResponse.
Configured modules secure response (sign and encrypt it, for example). - Send final response to client.
- The disposeSubject method may be invoked it necessary to clean up any authentication state in the Subject.
An instance may reuse module instances it previous created. As a result a single module instance may be used to process different requests from different clients. It is the module implementation's responsibility to properly store and restore any state necessary to associate new requests with previous responses. A module that does not need to do so may remain completely stateless.
Instances of this class have custom logic to determine what modules to invoke, and in what order. In addition, this custom logic may control whether subsequent modules are invoked based on the success or failure of previously invoked modules.
The caller is responsible for passing in a state Map that can be used by underlying modules to save state across a sequence of calls from validateRequest
to secureResponse
to disposeSubject
. The same Map instance must be passed to all methods in the call sequence. Furthermore, each call sequence should be passed its own unique shared state Map instance.
@version %I%, %G%
@see AuthConfig
@see SOAPAuthParam