/** * $Id: DefaultAuthenticationProvider.java,v 1.2 2008-05-15 19:54:01 langella Exp $ * */ package org.cagrid.gaards.authentication.service; import gov.nih.nci.cagrid.opensaml.SAMLAssertion; import java.rmi.RemoteException; import java.util.Set; import javax.security.auth.Subject; import javax.xml.namespace.QName; import org.cagrid.gaards.authentication.Credential; import org.cagrid.gaards.authentication.common.AuthenticationProviderException; import org.cagrid.gaards.authentication.common.InsufficientAttributeException; import org.cagrid.gaards.authentication.common.InvalidCredentialException; /** * * @version $Revision: 1.2 $ * @author Joshua Phillips * */ public class DefaultAuthenticationProvider implements AuthenticationProvider { private SAMLProvider samlProvider; private SubjectProvider subjectProvider; public SAMLProvider getSamlProvider() { return samlProvider; } public void setSamlProvider(SAMLProvider samlProvider) { this.samlProvider = samlProvider; } public SubjectProvider getSubjectProvider() { return subjectProvider; } /* * (non-Javadoc) * * @see gov.nih.nci.cagrid.authentication.common.AuthenticationProvider#authenticate(gov.nih.nci.cagrid.authentication.bean.Credential) */ public SAMLAssertion authenticate(Credential credential) throws RemoteException, InvalidCredentialException, InsufficientAttributeException, AuthenticationProviderException { try { Subject subject = getSubjectProvider().getSubject(credential); return getSamlProvider().getSAML(subject); } catch (InvalidCredentialException ex) { throw ex; } catch (InsufficientAttributeException ex) { throw ex; } catch (Exception ex) { ex.printStackTrace(); throw new AuthenticationProviderException("Error authenticating: " + ex.getMessage(), ex); } } public void setSAMLProvider(SAMLProvider samlProvider) { this.samlProvider = samlProvider; } public void setSubjectProvider(SubjectProvider subjectProvider) { this.subjectProvider = subjectProvider; } public Set<QName> getSupportedAuthenticationProfiles(){ return getSubjectProvider().getSupportedAuthenticationProfiles(); } }