...
Warning |
---|
icon | false |
---|
title | Logon Controller |
---|
|
Controller which examines the request and applies some logic. |
Logon controller applies an
Tip |
---|
icon | false |
---|
title | AuthenticationRequestBinder |
---|
|
Translates from an HttpServletRequest to an AuthenticationRequest. Code Block |
---|
/**
* Interface for components that know how to extract from HttpServletRequest
* whatever it is that constitutes actual arguments of the request for authentication.
*/
public interface AuthenticationRequestBinder {
/**
* Parse an HttpServletRequest and extract from it whatever it is that is necessary as input to the AuthenticationHandler
* which will examine the request for authentication represented by the HttpServletRequest. Return an Object
* encapsulating that extracted information. Specific implementations will return specific objects which in turn specific
* AuthenticationHandler implementations will expect and consume.
* @returns an object representing the relevant information for the authentication request
* @throws RuntimeException - indicates failure
*/
Object authenticationRequestFromHttpServletRequest(HttpServletRequest httpServletRequest);
}
|
|
Implementation notes
:
Note |
---|
icon | false |
---|
title | AuthenticationRequest, marker interfaces, and POJOs |
---|
|
I use the term AuthenticationRequest here in the interest of ubiquitous language and calling things what they are. I continue to prefer at an implementation level that we let these be just plain old Objects and not require that they implement a marker interface because doing so will allow a particular AuthenticationRequestBinder and AuthenticationHandler pair to agree to use any arbitrary Object one has lying around that meets the need and not have to wrap it with a CAS-specific AuthenticationHandler interface that adds no methods. My own preference. -~awp9 |
Note |
---|
icon | false |
---|
title | Multiple AuthenticationRequestBinders |
---|
|
In fact one might have several different kinds of AuthenticationRequest for which there are mapped AuthenticationHandlers. I would want to implement this as a special AuthenticationRequestBinder implementation which knows how to delegate to other AuthenticationRequestBinders, rather than introduce an AuthenticationRequestBinderManager. Again, my own preference. -~awp9 |