public class AuthenticationTokenManager extends AbstractLogEnabled implements Component, Serviceable, Initializable
| Modifier and Type | Class and Description |
|---|---|
static class |
AuthenticationTokenManager.Token
An Ametys authentication token
|
| Modifier and Type | Field and Description |
|---|---|
private CurrentUserProvider |
_currentUserProvider |
private String |
_datasourceId |
private ServiceManager |
_manager |
static String |
ROLE
The avalon role
|
static String |
TOKEN_SEPARATOR
The separator in token
|
static String |
USER_TOKEN_TYPE
The user token type
|
| Constructor and Description |
|---|
AuthenticationTokenManager() |
| Modifier and Type | Method and Description |
|---|---|
private void |
_deleteOldTokens(Connection connection)
Generates the sql statement that deletes the entries of the users token
database that are old
|
private void |
_deleteUserToken(Connection connection,
String id)
Deletes the database entry that has this token
|
private CurrentUserProvider |
_getCurrentUserProvider() |
private PreparedStatement |
_getSelectUserTokenStatement(Connection connection,
String login,
String populationId,
String type)
Generates the statement that selects the users having the specified login
in the Users_Token table
|
private void |
_updateUserToken(Connection connection,
String id)
Update the last update date in the database
|
private UserIdentity |
_validateToken(String encodedToken,
boolean forceRemove) |
void |
deleteAuthenticationToken(List<String> ids)
Delete one or multiples authentication token
|
void |
deleteTokenById(String tokenId)
Destroy the given token
|
void |
deleteTokenByValue(String token)
Destroy the given token
|
String |
generateAuthenticationToken(Map<String,Object> parameters)
Generate a new authentication token
|
String |
generateToken(long duration,
String type,
String comment)
Generates a new token for the current user
|
String |
generateToken(UserIdentity user,
long duration,
String type,
String comment)
Generates a new token
|
List<AuthenticationTokenManager.Token> |
getTokens(String type)
Get the existing tokens for the connected user
|
List<AuthenticationTokenManager.Token> |
getTokens(UserIdentity user,
String type)
Get the existing tokens for this user
|
void |
initialize() |
void |
service(ServiceManager manager) |
UserIdentity |
validateToken(String token)
Check if a token is valid and return the s
|
getLogger, setLoggerpublic static final String TOKEN_SEPARATOR
public static final String USER_TOKEN_TYPE
private ServiceManager _manager
private CurrentUserProvider _currentUserProvider
private String _datasourceId
public AuthenticationTokenManager()
public void service(ServiceManager manager) throws ServiceException
service in interface ServiceableServiceExceptionpublic void initialize() throws Exception
initialize in interface InitializableExceptionprivate CurrentUserProvider _getCurrentUserProvider() throws RuntimeException
RuntimeExceptionpublic List<AuthenticationTokenManager.Token> getTokens(String type) throws RuntimeException
type - The type of tokens to return. null to return all.RuntimeException - If there is no user connected or if there is a
database errorpublic List<AuthenticationTokenManager.Token> getTokens(UserIdentity user, String type) throws RuntimeException
type - The type of tokens to return. null to return all.user - The user. Cannot be nullRuntimeException - If the user is null or if there is a database
errorpublic String generateToken(long duration, String type, String comment) throws RuntimeException
duration - The time the token is valid in seconds. 0 means for ever
and moreover the ticket will be reusable.type - The type of token. Mandatory but can be anything you want
between 1 to 32 characters. Such as "Cookie".comment - An optional token comment to remember the reason of its
creationRuntimeException - If the user is not authenticated, or if there is
a database errorpublic String generateToken(UserIdentity user, long duration, String type, String comment) throws RuntimeException
user - The user that will be authenticated with the tokenduration - The time the token is valid in seconds. 0 means for ever
and moreover the ticket will be reusabletype - The type of token. Mandatory but can be anything you want
between 1 to 32 characters. Such as "Cookie".comment - An optional token comment to remember the reason of its
creationRuntimeException - If the user is null or if there is a database
error or if duration is negativeprivate UserIdentity _validateToken(String encodedToken, boolean forceRemove)
public UserIdentity validateToken(String token)
token - The token to validatepublic void deleteTokenByValue(String token)
token - The token to removepublic void deleteTokenById(String tokenId)
tokenId - The token identifier to removeprivate void _deleteOldTokens(Connection connection) throws SQLException
connection - the database's sessionSQLException - if a sql exception occursprivate PreparedStatement _getSelectUserTokenStatement(Connection connection, String login, String populationId, String type) throws SQLException
connection - the database's sessionlogin - The login of the userpopulationId - The populationId of the usertype - The type to filter or null to get allSQLException - if a sql exception occursprivate void _deleteUserToken(Connection connection, String id) throws SQLException
connection - the database's sessionid - the token idSQLException - if an error occurredprivate void _updateUserToken(Connection connection, String id) throws SQLException
connection - the database's sessionid - the token idSQLException - if an error occurredpublic String generateAuthenticationToken(Map<String,Object> parameters)
parameters - a map of the following parameters for the
authentication token : descriptionpublic void deleteAuthenticationToken(List<String> ids)
ids - a list of authentication token ids