public class AuthenticatorList extends java.lang.Object implements ServletAuthenticator
<authenticator type="com.caucho.server.security.AuthenticatorList">
<init>
<authenticator resin:type="com.caucho.server.security.XmlAuthenticator">
<user>admin:NIHlOSafJN2H7emQCkOQ2w==:user,admin</user>
</authenticator>
<authenticator resin:type='com.caucho.server.security.JdbcAuthenticator'>
<data-source>jdbc/users</data-source>
<password-query>
SELECT password FROM LOGIN WHERE username=?
</password-query>
<cookie-auth-query>
SELECT username FROM LOGIN WHERE cookie=?
</cookie-auth-query>
<cookie-auth-update>
UPDATE LOGIN SET cookie=? WHERE username=?
</cookie-auth-update>
<role-query>
SELECT role FROM LOGIN WHERE username=?
</role-query>
</authenticator>
</init>
</authenticator>
<login-config auth-method='basic'/>
<security-constraint url-pattern='/users/*' role-name='user'/>
<security-constraint url-pattern='/admin/*' role-name='admin'/>
Constructor and Description |
---|
AuthenticatorList() |
Modifier and Type | Method and Description |
---|---|
void |
addAuthenticator(ServletAuthenticator authenticator)
Sets the path to the XML file.
|
java.security.Principal |
getUserPrincipal(HttpServletRequest request,
HttpServletResponse response,
ServletContext application)
Gets the authenticated user for the current request.
|
void |
init()
Initialize the authenticator.
|
boolean |
isUserInRole(HttpServletRequest request,
HttpServletResponse response,
ServletContext application,
java.security.Principal user,
java.lang.String role)
Returns true if the user plays the named role.
|
java.security.Principal |
login(HttpServletRequest request,
HttpServletResponse response,
ServletContext application,
java.lang.String user,
java.lang.String password)
Logs a user in with a user name and a password.
|
java.security.Principal |
loginDigest(HttpServletRequest request,
HttpServletResponse response,
ServletContext app,
java.lang.String user,
java.lang.String realm,
java.lang.String nonce,
java.lang.String uri,
java.lang.String qop,
java.lang.String nc,
java.lang.String cnonce,
byte[] clientDigset)
Validates the user when using HTTP Digest authentication.
|
void |
logout(ServletContext application,
HttpSession timeoutSession,
java.lang.String sessionId,
java.security.Principal user)
Logs the user out from the given request.
|
public void addAuthenticator(ServletAuthenticator authenticator)
@PostConstruct public void init() throws ServletException
ServletAuthenticator
init()
is called after all
the bean parameter have been set.init
in interface ServletAuthenticator
ServletException
public java.security.Principal login(HttpServletRequest request, HttpServletResponse response, ServletContext application, java.lang.String user, java.lang.String password) throws ServletException
ServletAuthenticator
The implementation may only use the response to set cookies and headers. It may not write output or set the response status. If the application needs to send a custom error reponse, it must implement a custom AbstractLogin instead.
login
in interface ServletAuthenticator
request
- servlet requestresponse
- servlet response, in case any cookie need sending.application
- servlet applicationuser
- the user name.password
- the users input password.ServletException
public java.security.Principal getUserPrincipal(HttpServletRequest request, HttpServletResponse response, ServletContext application) throws ServletException
ServletAuthenticator
getUserPrincipal is called in response to an application's call to HttpServletRequest.getUserPrincipal.
The implementation may only use the response to set cookies and headers. It may not write output.
getUserPrincipal
in interface ServletAuthenticator
request
- the request trying to authenticate.response
- the response for setting headers and cookies.application
- the servlet contextServletException
public java.security.Principal loginDigest(HttpServletRequest request, HttpServletResponse response, ServletContext app, java.lang.String user, java.lang.String realm, java.lang.String nonce, java.lang.String uri, java.lang.String qop, java.lang.String nc, java.lang.String cnonce, byte[] clientDigset) throws ServletException
ServletAuthenticator
The HTTP Digest authentication uses the following algorithm
to calculate the digest. The digest is then compared to
the client digest.
A1 = MD5(username + ':' + realm + ':' + password)
A2 = MD5(method + ':' + uri)
digest = MD5(A1 + ':' + nonce + A2)
loginDigest
in interface ServletAuthenticator
request
- the request trying to authenticate.response
- the response for setting headers and cookies.app
- the servlet contextuser
- the usernamerealm
- the authentication realmnonce
- the nonce passed to the client during the challengeuri
- te protected uricnonce
- the client nonceServletException
public boolean isUserInRole(HttpServletRequest request, HttpServletResponse response, ServletContext application, java.security.Principal user, java.lang.String role) throws ServletException
ServletAuthenticator
This method is called in response to the HttpServletResponse.isUserInRole call and for security-constraints that check the use role.
isUserInRole
in interface ServletAuthenticator
request
- the request testing the role.application
- the owning applicationuser
- the user's Principal.role
- role name.ServletException
public void logout(ServletContext application, HttpSession timeoutSession, java.lang.String sessionId, java.security.Principal user) throws ServletException
ServletAuthenticator
Called via the session.logout() method.
logout
in interface ServletAuthenticator
timeoutSession
- for timeout, the session timing out. null if force logoutServletException