blob: 1b42d3e2c69533de960b3accf32ccf862cb09d40 [file] [log] [blame]
package de.ids_mannheim.korap.authentication;
import java.time.ZonedDateTime;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.config.FullConfiguration;
import de.ids_mannheim.korap.constant.TokenType;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.interfaces.AuthenticationIface;
import de.ids_mannheim.korap.oauth2.dao.AccessTokenDao;
import de.ids_mannheim.korap.oauth2.entity.AccessToken;
import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.User;
@Component
public class OAuth2Authentication implements AuthenticationIface {
@Autowired
private AccessTokenDao accessDao;
@Autowired
private OAuth2ScopeService scopeService;
@Autowired
private FullConfiguration config;
@Override
public TokenContext getTokenContext (String authToken)
throws KustvaktException {
AccessToken accessToken = accessDao.retrieveAccessToken(authToken);
if (accessToken.isRevoked()) {
throw new KustvaktException(StatusCodes.INVALID_ACCESS_TOKEN,
"Access token has been revoked");
}
ZonedDateTime expiry = accessToken.getCreatedDate()
.plusSeconds(config.getAccessTokenExpiry());
String scopes = scopeService
.convertAccessScopesToString(accessToken.getScopes());
TokenContext c = new TokenContext();
c.setUsername(accessToken.getUserId());
c.setExpirationTime(expiry.toInstant().toEpochMilli());
c.setToken(authToken);
c.setTokenType(TokenType.BEARER);
c.addContextParameter(Attributes.SCOPE, scopes);
c.setAuthenticationTime(accessToken.getUserAuthenticationTime());
return c;
}
@Override
public TokenContext createTokenContext (User user, Map<String, Object> attr)
throws KustvaktException {
// TODO Auto-generated method stub
return null;
}
@Override
public void removeUserSession (String token) throws KustvaktException {
// TODO Auto-generated method stub
}
@Override
public TokenContext refresh (TokenContext context)
throws KustvaktException {
// TODO Auto-generated method stub
return null;
}
@Override
public TokenType getTokenType () {
return TokenType.BEARER;
}
}