package org.onap.aaf.cadi.shiro;
import java.io.IOException;
+import java.io.PrintStream;
import java.security.Principal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Map.Entry;
import java.util.TreeMap;
+
+import org.apache.log4j.PropertyConfigurator;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.onap.aaf.cadi.filter.MapBathConverter;
import org.onap.aaf.cadi.util.CSV;
import org.onap.aaf.misc.env.APIException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class AAFRealm extends AuthorizingRealm {
+
+ final static Logger logger = LoggerFactory.getLogger(AAFRealm.class);
+
public static final String AAF_REALM = "AAFRealm";
private PropAccess access;
String cadi_prop_files = access.getProperty(Config.CADI_PROP_FILES);
if(cadi_prop_files==null) {
String msg = Config.CADI_PROP_FILES + " in VM Args is required to initialize AAFRealm.";
- access.log(Level.INIT,msg);
+ logger.info(msg);
throw new RuntimeException(msg);
} else {
try {
if(csv!=null) {
try {
mbc = new MapBathConverter(access, new CSV(csv));
- access.printf(Level.INIT, "MapBathConversion enabled with file %s\n",csv);
+ logger.info("MapBathConversion enabled with file "+csv);
idMap = new TreeMap<String,String>();
// Load
for(Entry<String, String> es : mbc.map().entrySet()) {
}
}
idMap.put(oldID,newID);
+
}
} catch (IOException e) {
- access.log(e);
+ logger.info(e.getMessage(), e);
}
}
} catch (APIException | CadiException | LocatorException e) {
String msg = "Cannot initiate AAFRealm";
- access.log(Level.INIT,msg,e.getMessage());
+ logger.info(msg + " "+ e.getMessage(), e);
throw new RuntimeException(msg,e);
}
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
- access.log(Level.DEBUG, "AAFRealm.doGetAuthenticationInfo",token);
-
+ logger.info("AAFRealm.doGetAuthenticationInfo :"+token);
final UsernamePasswordToken upt = (UsernamePasswordToken)token;
final String user = upt.getUsername();
String authUser = user;
int colon = bath.indexOf(':');
if(colon>=0) {
authUser = bath.substring(0, colon);
- authPassword = bath.substring(colon+1);
+ authPassword = bath.substring(colon+1);
}
}
} catch (IOException e) {
- access.log(e);
+
+ logger.info(e.getMessage(), e);
+
}
}
String err;
err = authn.validate(authUser,authPassword);
} catch (IOException e) {
err = "Credential cannot be validated";
- access.log(e, err);
+ logger.info(e.getMessage(), e);
}
if(err != null) {
- access.log(Level.DEBUG, err);
+ logger.info(err);
throw new AuthenticationException(err);
}
@Override
protected void assertCredentialsMatch(AuthenticationToken atoken, AuthenticationInfo ai)throws AuthenticationException {
+
if(ai instanceof AAFAuthenticationInfo) {
if(!((AAFAuthenticationInfo)ai).matches(atoken)) {
throw new AuthenticationException("Credentials do not match");
+
}
+
} else {
throw new AuthenticationException("AuthenticationInfo is not an AAFAuthenticationInfo");
+
}
}
+
+
@Override
protected AAFAuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
- access.log(Level.DEBUG, "AAFRealm.doGetAuthenthorizationInfo");
Principal bait = (Principal)principals.getPrimaryPrincipal();
Principal newBait = bait;
if(idMap!=null) {
final String newID = idMap.get(bait.getName());
+ logger.info("Successful authentication attempt by " +bait.getName());
if(newID!=null) {
newBait = new Principal() {
@Override
}
List<Permission> pond = new ArrayList<>();
authz.fishAll(newBait,pond);
-
return new AAFAuthorizationInfo(access,bait,pond);
}