com.atlassian.crowd.manager.authentication
Interface TokenAuthenticationManager

All Known Implementing Classes:
AliasingAwareTokenAuthenticationManager, TokenAuthenticationManagerImpl

public interface TokenAuthenticationManager


Method Summary
 Token authenticateApplication(ApplicationAuthenticationContext authenticationContext)
          Authenticates an application and generates an authentication token.
 Token authenticateUser(UserAuthenticationContext authenticateContext)
          Authenticates a user and and generates an authentication token.
 Token authenticateUserWithoutValidatingPassword(UserAuthenticationContext authenticateContext)
          Feigns the authentication process for a user and creates a token for the authentication without validating the password.
 java.util.List<Application> findAuthorisedApplications(User user, java.lang.String applicationName)
          Returns a list of applications a user is authorised to authenticate with.
 User findUserByToken(java.lang.String key, java.lang.String applicationName)
          Will find a user via the passed in token key.
 void invalidateToken(java.lang.String token)
          Attempts to invalidate a Token based on the passed in Token key (random hash).
 void removeExpiredTokens()
          Removes all tokens that have exceeded their expiry time.
 java.util.List<Token> searchTokens(EntityQuery<Token> query)
          Returns a list of users matching the given query.
 Token validateApplicationToken(java.lang.String tokenKey, ValidationFactor[] validationFactors)
          Validates an application token key given validation factors.
 Token validateUserToken(java.lang.String userTokenKey, ValidationFactor[] validationFactors, java.lang.String application)
          Validates a user token key given validation factors and checks that the user is allowed to authenticate with the specified application
 

Method Detail

authenticateApplication

Token authenticateApplication(ApplicationAuthenticationContext authenticationContext)
                              throws InvalidAuthenticationException
Authenticates an application and generates an authentication token.

Parameters:
authenticationContext - application authentication credentials.
Returns:
generated authentication token.
Throws:
InvalidAuthenticationException - authentication was not successful because either the application does not exist, the password is incorrect, the application is inactive or there was a problem generating the authentication token.

authenticateUser

Token authenticateUser(UserAuthenticationContext authenticateContext)
                       throws InvalidAuthenticationException,
                              OperationFailedException,
                              InactiveAccountException,
                              ApplicationAccessDeniedException,
                              ExpiredCredentialException
Authenticates a user and and generates an authentication token. The password of the user is validated before generating a token.

The RemoteDirectory.authenticate(String, com.atlassian.crowd.embedded.api.PasswordCredential) method is iteratively called for each assigned directory. If the user does not exist in one directory, the directory is skipped and the next one is examined. If the user does not exist in any of the assigned directories then an InvalidAuthenticationException is thrown.

Parameters:
authenticateContext - The authentication details for the user.
Returns:
The authenticated token for the user.
Throws:
InvalidAuthenticationException - The authentication was not successful.
OperationFailedException - error thrown by directory implementation when attempting to find or authenticate the user.
InactiveAccountException - user account is inactive.
ApplicationAccessDeniedException - user does not have access to authenticate with application.
ExpiredCredentialException - The user's credentials have expired. The user must change their credentials in order to successfully authenticate.

authenticateUserWithoutValidatingPassword

Token authenticateUserWithoutValidatingPassword(UserAuthenticationContext authenticateContext)
                                                throws InvalidAuthenticationException,
                                                       OperationFailedException,
                                                       InactiveAccountException,
                                                       ApplicationAccessDeniedException
Feigns the authentication process for a user and creates a token for the authentication without validating the password.

This method only be used to generate a token for a user that has already authenticated credentials via some other means (eg. SharePoint NTLM connector) as this method bypasses any password checks.

If you want actual password authentication, use the authenticateUser(com.atlassian.crowd.model.authentication.UserAuthenticationContext) method.

Parameters:
authenticateContext - The authentication details for the user.
Returns:
The authenticated token for the user.
Throws:
InvalidAuthenticationException - The authentication was not successful.
OperationFailedException - error thrown by directory implementation when attempting to find or authenticate the user.
InactiveAccountException - user account is inactive.
ApplicationAccessDeniedException - user does not have access to authenticate with application.

validateApplicationToken

Token validateApplicationToken(java.lang.String tokenKey,
                               ValidationFactor[] validationFactors)
                               throws InvalidTokenException
Validates an application token key given validation factors.

Parameters:
tokenKey - returns a valid token corresponding to the tokenKey.
validationFactors - validation factors for generating the token hash.
Returns:
validated token.
Throws:
InvalidTokenException - if the tokenKey or corresponding client validation factors do not represent a valid application token.

validateUserToken

Token validateUserToken(java.lang.String userTokenKey,
                        ValidationFactor[] validationFactors,
                        java.lang.String application)
                        throws InvalidTokenException,
                               ApplicationAccessDeniedException,
                               OperationFailedException
Validates a user token key given validation factors and checks that the user is allowed to authenticate with the specified application

Parameters:
userTokenKey - returns a valid token corresponding to the tokenKey.
validationFactors - validation factors for generating the token hash.
application - name of application to authenticate with.
Returns:
validated authentication token.
Throws:
InvalidTokenException - if the userTokenKey or corresponding validationFactors do not represent a valid SSO token.
OperationFailedException - there was an error communicating with an underlying directory when determining if a user is allowed to authenticate with the application (eg. if a user has the appropriate group memberships).
ApplicationAccessDeniedException - the user is not allowed to authenticate with the application.

invalidateToken

void invalidateToken(java.lang.String token)
Attempts to invalidate a Token based on the passed in Token key (random hash).

If the token does not exist (ie. already invalidated) this method silently returns. If an existing token is successfully invalidated, a TokenInvalidatedEvent is fired.

Parameters:
token - the token key (random hash) to invalidate.

searchTokens

java.util.List<Token> searchTokens(EntityQuery<Token> query)
Returns a list of users matching the given query.

Parameters:
query - entity query for Entity.TOKEN.
Returns:
list of Token matching the search criteria.

removeExpiredTokens

void removeExpiredTokens()
Removes all tokens that have exceeded their expiry time.

NOTE: Do not call this method from the web layer, as this is wrapped in a Spring managed transaction.


findUserByToken

User findUserByToken(java.lang.String key,
                     java.lang.String applicationName)
                     throws InvalidTokenException,
                            OperationFailedException
Will find a user via the passed in token key.

Parameters:
key - the token key
applicationName - name of the current application
Returns:
the User associated to the given token key
Throws:
InvalidTokenException - if the User or Directory cannot be found that relates to the given token, or the token is associated to an Application and not a User
OperationFailedException - if there was an issue accessing the user from the underlying directory

findAuthorisedApplications

java.util.List<Application> findAuthorisedApplications(User user,
                                                       java.lang.String applicationName)
                                                       throws OperationFailedException,
                                                              DirectoryNotFoundException
Returns a list of applications a user is authorised to authenticate with.

NOTE: this is a potentially expensive call, iterating all applications and all group mappings for each application and determining group membership, ie. expense = number of applications * number of group mappings per application.

Parameters:
user - user to search for.
applicationName - name of the current application
Returns:
list of applications.
Throws:
OperationFailedException - error querying directory.
DirectoryNotFoundException - directory could not be found.


Copyright © 2010 Atlassian. All Rights Reserved.