Package org.dspace.app.rest.security.jwt
Class JWTTokenRestAuthenticationServiceImpl
- java.lang.Object
-
- org.dspace.app.rest.security.jwt.JWTTokenRestAuthenticationServiceImpl
-
- All Implemented Interfaces:
RestAuthenticationService,org.springframework.beans.factory.InitializingBean
@Component public class JWTTokenRestAuthenticationServiceImpl extends Object implements RestAuthenticationService, org.springframework.beans.factory.InitializingBean
Rest Authentication implementation for JSON Web Tokens- Author:
- Frederic Van Reet (frederic dot vanreet at atmire dot com), Tom Desair (tom dot desair at atmire dot com), Giuseppe Digilio (giuseppe dot digilio at 4science dot it)
-
-
Constructor Summary
Constructors Constructor Description JWTTokenRestAuthenticationServiceImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAuthenticationDataForUser(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, DSpaceAuthentication authentication, boolean addCookie)This method should be called after a successful authentication occurs.voidafterPropertiesSet()EPersongetAuthenticatedEPerson(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Context context)Checks the current request for a valid authentication token.AuthenticationServicegetAuthenticationService()Get access to the current AuthenticationServiceAuthenticationTokengetShortLivedAuthenticationToken(Context context, javax.servlet.http.HttpServletRequest request)Create a short-lived token for bitstream downloads among other thingsStringgetWwwAuthenticateHeaderValue(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Return a comma-separated list of all currently enabled authentication options (based on DSpace configuration).booleanhasAuthenticationData(javax.servlet.http.HttpServletRequest request)Checks the current request for a valid authentication token.voidinvalidateAuthenticationCookie(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Invalidate our temporary authentication cookie by overwriting it in the response.voidinvalidateAuthenticationData(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Context context)Invalidate the current authentication token/data in the request.
-
-
-
Method Detail
-
afterPropertiesSet
public void afterPropertiesSet() throws Exception- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
addAuthenticationDataForUser
public void addAuthenticationDataForUser(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, DSpaceAuthentication authentication, boolean addCookie) throws IOExceptionDescription copied from interface:RestAuthenticationServiceThis method should be called after a successful authentication occurs. It gathers the authentication data for the currently logged in user, adds it into the auth token & saves that token to the response (optionally in a cookie).- Specified by:
addAuthenticationDataForUserin interfaceRestAuthenticationService- Parameters:
request- current requestresponse- current responseauthentication- Authentication data generated by the authentication pluginaddCookie- boolean, whether to save the generated auth token to a Cookie or not. Default is false. However, some authentication methods may require this information be saved to a cookie (even temporarily) in order to complete the login process (e.g. Shibboleth requires this)- Throws:
IOException
-
getShortLivedAuthenticationToken
public AuthenticationToken getShortLivedAuthenticationToken(Context context, javax.servlet.http.HttpServletRequest request)
Create a short-lived token for bitstream downloads among other things- Specified by:
getShortLivedAuthenticationTokenin interfaceRestAuthenticationService- Parameters:
context- The context for which to create the tokenrequest- The request for which to create the token- Returns:
- The token with a short lifespan
-
getAuthenticatedEPerson
public EPerson getAuthenticatedEPerson(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Context context)
Description copied from interface:RestAuthenticationServiceChecks the current request for a valid authentication token. If found, extracts that token and obtains the currently logged in EPerson.- Specified by:
getAuthenticatedEPersonin interfaceRestAuthenticationService- Parameters:
request- current requestcontext- current DSpace Context- Returns:
- EPerson of the logged in user (if auth token found), or null if no auth token is found
-
hasAuthenticationData
public boolean hasAuthenticationData(javax.servlet.http.HttpServletRequest request)
Description copied from interface:RestAuthenticationServiceChecks the current request for a valid authentication token. If found, returns true. If not found, returns false- Specified by:
hasAuthenticationDatain interfaceRestAuthenticationService- Parameters:
request- current request- Returns:
- true if this request includes a valid authentication token. False otherwise.
-
invalidateAuthenticationData
public void invalidateAuthenticationData(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Context context) throws ExceptionDescription copied from interface:RestAuthenticationServiceInvalidate the current authentication token/data in the request. This is used during logout to ensure any existing authentication data/token is destroyed/invalidated and cannot be reused in later requests.In other words, this method invalidates the authentication data created by addAuthenticationDataForUser().
- Specified by:
invalidateAuthenticationDatain interfaceRestAuthenticationService- Parameters:
request- current requestresponse- current responsecontext- current DSpace Context.- Throws:
Exception
-
invalidateAuthenticationCookie
public void invalidateAuthenticationCookie(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Invalidate our temporary authentication cookie by overwriting it in the response.- Specified by:
invalidateAuthenticationCookiein interfaceRestAuthenticationService- Parameters:
request-response-
-
getAuthenticationService
public AuthenticationService getAuthenticationService()
Description copied from interface:RestAuthenticationServiceGet access to the current AuthenticationService- Specified by:
getAuthenticationServicein interfaceRestAuthenticationService- Returns:
- current AuthenticationService
-
getWwwAuthenticateHeaderValue
public String getWwwAuthenticateHeaderValue(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Return a comma-separated list of all currently enabled authentication options (based on DSpace configuration). This list is sent to the client in the WWW-Authenticate header in order to inform it of all the enabled authentication plugins *and* (optionally) to provide it with the "location" of the login page, if the authentication plugin requires an external login page (e.g. Shibboleth).Example output looks like: shibboleth realm="DSpace REST API" location=[shibboleth-url], password realm="DSpace REST API"
- Specified by:
getWwwAuthenticateHeaderValuein interfaceRestAuthenticationService- Parameters:
request- The current client requestresponse- The response being build for the client- Returns:
- comma separated list of authentication options
-
-