package org.cagrid.gaards.authentication.service;
import gov.nih.nci.security.authentication.BetterLockoutManager;
import gov.nih.nci.security.authentication.LockoutManager;
import java.io.File;
import java.rmi.RemoteException;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.Set;
import javax.xml.namespace.QName;
import org.cagrid.gaards.authentication.AuthenticationProfiles;
import org.cagrid.gaards.authentication.lockout.LockedUserInfo;
/**
* TODO:I am the service side implementation class. IMPLEMENT AND DOCUMENT ME
*
* @created by Introduce Toolkit version 1.2
*/
public class AuthenticationServiceImpl extends AuthenticationServiceImplBase {
private AuthenticationManager auth;
public AuthenticationServiceImpl() throws RemoteException {
super();
try {
String configFile = AuthenticationServiceConfiguration.getConfiguration().getAuthenticationConfiguration();
String propertiesFile = AuthenticationServiceConfiguration.getConfiguration().getAuthenticationProperties();
this.auth = new AuthenticationManager(new File(propertiesFile), new File(configFile));
Set<QName> set = this.auth.getSupportedAuthenticationProfiles();
QName[] list = new QName[set.size()];
list = set.toArray(list);
AuthenticationProfiles profiles = new AuthenticationProfiles();
profiles.setProfile(list);
getResourceHome().getAddressedResource().setAuthenticationProfiles(profiles);
String whitelistFile = AuthenticationServiceConfiguration.getConfiguration().getLockoutWhitelistFile();
WhitelistUpdater.monitorWhitelist(whitelistFile);
} catch (Exception ex) {
throw new RemoteException("Error instantiating AuthenticationProvider: " + ex.getMessage(), ex);
}
}
public gov.nih.nci.cagrid.authentication.bean.SAMLAssertion authenticate(
gov.nih.nci.cagrid.authentication.bean.Credential credential) throws RemoteException,
gov.nih.nci.cagrid.authentication.stubs.types.InvalidCredentialFault,
gov.nih.nci.cagrid.authentication.stubs.types.InsufficientAttributeFault,
gov.nih.nci.cagrid.authentication.stubs.types.AuthenticationProviderFault {
return this.auth.authenticate(credential);
}
public gov.nih.nci.cagrid.opensaml.SAMLAssertion authenticateUser(
org.cagrid.gaards.authentication.Credential credential) throws RemoteException,
org.cagrid.gaards.authentication.faults.AuthenticationProviderFault,
org.cagrid.gaards.authentication.faults.CredentialNotSupportedFault,
org.cagrid.gaards.authentication.faults.InsufficientAttributeFault,
org.cagrid.gaards.authentication.faults.InvalidCredentialFault {
return this.auth.authenticate(credential);
}
public org.cagrid.gaards.authentication.lockout.LockedUserInfo[] getLockedOutUsers() throws RemoteException {
BetterLockoutManager manager = LockoutManager.getInstance().getDelegatedLockoutManager();
Map<String, Date> lockouts = manager.getLockedOutUsers();
LockedUserInfo[] info = new LockedUserInfo[lockouts.size()];
int index = 0;
for (String userId : lockouts.keySet()) {
Date unlockTime = lockouts.get(userId);
Calendar cal = Calendar.getInstance();
cal.setTime(unlockTime);
info[index] = new LockedUserInfo(cal, userId);
index++;
}
return info;
}
}