blob: 07e8ace33124f26b3737e8eed711e4e73380825b [file] [log] [blame]
package de.ids_mannheim.korap.security.auth;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.interfaces.AuthenticationIface;
import de.ids_mannheim.korap.user.Attributes;
import de.ids_mannheim.korap.user.TokenContext;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.utils.StringUtils;
import org.apache.commons.codec.binary.Base64;
import java.util.Map;
/**
* @author hanl
* @date 28/04/2015
*/
public class BasicHttpAuth implements AuthenticationIface {
public static String[] decode(String token) {
if (StringUtils.getTokenType(token)
.equals(Attributes.BASIC_AUTHENTICATION)) {
token = StringUtils.stripTokenType(token);
String[] sp = new String(Base64.decodeBase64(token)).split(":", 2);
sp[0].replaceAll(" ", "");
sp[1].replaceAll(" ", "");
return sp;
}
return null;
}
public static String encode(String user, String pass) {
String s = user + ":" + pass;
return new String(Base64.encodeBase64(s.getBytes()));
}
@Override
public TokenContext getUserStatus(String authToken) throws
KustvaktException {
authToken = StringUtils.stripTokenType(authToken);
String[] values = decode(authToken);
if (values != null) {
TokenContext c = new TokenContext(values[0]);
c.setTokenType(Attributes.BASIC_AUTHENTICATION);
c.setSecureRequired(true);
c.setToken(authToken);
// fixme: you can make queries, but user sensitive data is off limits?!
// c.addContextParameter(Attributes.SCOPES,
// Scopes.Scope.search.toString());
return c;
}
return null;
}
// not supported!
@Override
public TokenContext createUserSession(User user, Map<String, Object> attr)
throws KustvaktException {
return null;
}
@Override
public void removeUserSession(String token) throws KustvaktException {
}
@Override
public TokenContext refresh(TokenContext context) throws KustvaktException {
return null;
}
@Override
public String getIdentifier() {
return Attributes.BASIC_AUTHENTICATION;
}
}