Class LitteraProvider
java.lang.Object
io.goobi.viewer.model.security.authentication.HttpAuthenticationProvider
io.goobi.viewer.model.security.authentication.LitteraProvider
- All Implemented Interfaces:
IAuthenticationProvider
External authentication provider for the LITTERA reader authentication api (www.littera.eu). This provider requests requests authentication from
the configured url and an 'id' and 'pw' provided as query parameters. The response is a text/xml document containing a root element with
an attribute "authenticationSuccessful" which is either true or false depending on the validity of the passed query params. If the authentication
is successful, an existing viewer user is newly created is required with the nickname of the login id and an email of {id}@nomail.com. The user may
still be suspended, given admin rights ect. as any other viewer user
- Author:
- Florian Alpers
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final String
ConstantDEFAULT_EMAIL="{username}@nomail.com"
protected static final String
ConstantTYPE_USER_PASSWORD="userPassword"
Fields inherited from class io.goobi.viewer.model.security.authentication.HttpAuthenticationProvider
addUserToGroups, connectionManager, image, label, name, redirectUrl, timeoutMillis, type, url
-
Constructor Summary
ConstructorDescriptionLitteraProvider
(String name, String label, String url, String image, long timeoutMillis) Constructor for LitteraProvider. -
Method Summary
Modifier and TypeMethodDescriptionboolean
allowsEmailChange.boolean
allowsNicknameChange.boolean
Check whether this authentication service allows user to edit their password or to reset itprotected LitteraAuthenticationResponse
get.Returns a future containing the login result upon completion.void
logout()
Logs the user outMethods inherited from class io.goobi.viewer.model.security.authentication.HttpAuthenticationProvider
get, getAddUserToGroups, getImage, getImageUrl, getLabel, getName, getRedirectUrl, getTimeoutMillis, getType, getUrl, post, setAddUserToGroups, setRedirectUrl
-
Field Details
-
DEFAULT_EMAIL
ConstantDEFAULT_EMAIL="{username}@nomail.com"
- See Also:
-
TYPE_USER_PASSWORD
ConstantTYPE_USER_PASSWORD="userPassword"
- See Also:
-
-
Constructor Details
-
Method Details
-
logout
Logs the user out- Throws:
AuthenticationProviderException
- if any.
-
login
public CompletableFuture<LoginResult> login(String loginName, String password) throws AuthenticationProviderException Returns a future containing the login result upon completion. The result optionally contains the logged inUser
as well as theHttpServletRequest
andHttpServletResponse
to be used to complete the login and possible request forwarding If an error occurs and the request can not be processed, anAuthenticationException
must be thrown. If a login has been refused, the exact reasons can be determined using the methodsUser.isActive()
,User.isSuspended()
andLoginResult.isRefused()
- Parameters:
loginName
- aString
object.password
- A string to be used as a password or similar for login. If the provider does not require such a string, this can be left empty or null- Returns:
- A
CompletableFuture
which is resolved once login is completed and contains aLoginResult
- Throws:
AuthenticationProviderException
- if any.
-
get
protected LitteraAuthenticationResponse get(URI url, String username, String password) throws IOException get.
- Parameters:
url
- aURI
object.username
- aString
object.password
- aString
object.- Returns:
- a
LitteraAuthenticationResponse
object. - Throws:
IOException
- if any.
-
allowsPasswordChange
public boolean allowsPasswordChange()Check whether this authentication service allows user to edit their password or to reset it- Returns:
- true if the authentication service provides means to change or reset the user password
-
allowsNicknameChange
public boolean allowsNicknameChange()allowsNicknameChange.
- Returns:
- true if the nickname may be changed and is not essential for user identification
-
allowsEmailChange
public boolean allowsEmailChange()allowsEmailChange.
- Returns:
- true if the email may be changed and is not essential for user identification
-