package org.ovirt.engine.core.sso.utils;
import java.util.Properties;
import org.ovirt.engine.api.extensions.Base;
import org.ovirt.engine.api.extensions.aaa.Authn;
import org.ovirt.engine.core.extensions.mgr.ExtensionProxy;
/**
* An authentication profile is the combination of an authn and authz extensions. On login the user
* is authenticated by the authn extension and then the details are looked up in the authz extension.
*/
public class AuthenticationProfile {
/**
* The name of the profile.
*/
private String name;
private ExtensionProxy authn;
private ExtensionProxy authz;
private ExtensionProxy mapper;
private int negotiationPriority;
/**
* Create a new authentication profile with the given name, authenticator and directory.
*
* @param authn the authenticator that will be used to check the credentials of the user
* @param authz the directory that will be used to lookup the details of the user once it is successfully
* @param mapper the mapping extension to map the post authn auth record authenticated
*/
public AuthenticationProfile(ExtensionProxy authn, ExtensionProxy authz, ExtensionProxy mapper) {
Properties config = authn.getContext().get(Base.ContextKeys.CONFIGURATION);
this.name = config.getProperty(Authn.ConfigKeys.PROFILE_NAME);
this.authn = authn;
this.authz = authz;
this.mapper = mapper;
this.negotiationPriority = Integer.parseInt(config.getProperty(Authn.ConfigKeys.NEGOTIATION_PRIORITY, "50"));
}
/**
* Get the name of the profile.
*/
public String getName() {
return name;
}
/**
* Get a reference to the authenticator.
*/
public ExtensionProxy getAuthn() {
return authn;
}
/**
* Get a reference to the directory.
*/
public ExtensionProxy getAuthz() {
return authz;
}
public ExtensionProxy getMapper() {
return mapper;
}
public String getAuthnName() {
return authn.getContext().get(Base.ContextKeys.INSTANCE_NAME);
}
public String getAuthzName() {
return authz.getContext().get(Base.ContextKeys.INSTANCE_NAME);
}
public int getNegotiationPriority() {
return negotiationPriority;
}
}