package org.pac4j.http.client.direct;
import org.pac4j.core.client.DirectClient;
import org.pac4j.core.context.WebContext;
import org.pac4j.core.credentials.authenticator.Authenticator;
import org.pac4j.core.profile.CommonProfile;
import org.pac4j.core.profile.creator.ProfileCreator;
import org.pac4j.core.util.CommonHelper;
import org.pac4j.core.credentials.TokenCredentials;
import org.pac4j.core.credentials.extractor.HeaderExtractor;
/**
* <p>This class is the client to authenticate users directly based on a provided header.</p>
*
* @author Jerome Leleu
* @since 1.8.0
*/
public class HeaderClient extends DirectClient<TokenCredentials, CommonProfile> {
private String headerName = "";
private String prefixHeader = "";
public HeaderClient() {}
public HeaderClient(final String headerName, final Authenticator tokenAuthenticator) {
this.headerName = headerName;
defaultAuthenticator(tokenAuthenticator);
}
public HeaderClient(final String headerName, final String prefixHeader,
final Authenticator tokenAuthenticator) {
this.headerName = headerName;
this.prefixHeader = prefixHeader;
defaultAuthenticator(tokenAuthenticator);
}
public HeaderClient(final String headerName, final Authenticator tokenAuthenticator,
final ProfileCreator profileCreator) {
this.headerName = headerName;
defaultAuthenticator(tokenAuthenticator);
defaultProfileCreator(profileCreator);
}
public HeaderClient(final String headerName, final String prefixHeader,
final Authenticator tokenAuthenticator, final ProfileCreator profileCreator) {
this.headerName = headerName;
this.prefixHeader = prefixHeader;
defaultAuthenticator(tokenAuthenticator);
defaultProfileCreator(profileCreator);
}
@Override
protected void clientInit(final WebContext context) {
CommonHelper.assertNotBlank("headerName", this.headerName);
CommonHelper.assertNotNull("prefixHeader", this.prefixHeader);
defaultCredentialsExtractor(new HeaderExtractor(this.headerName, this.prefixHeader, getName()));
}
public String getHeaderName() {
return headerName;
}
public void setHeaderName(String headerName) {
this.headerName = headerName;
}
public String getPrefixHeader() {
return prefixHeader;
}
public void setPrefixHeader(String prefixHeader) {
this.prefixHeader = prefixHeader;
}
@Override
public String toString() {
return CommonHelper.toString(this.getClass(), "name", getName(), "headerName", this.headerName,
"prefixHeader", this.prefixHeader, "extractor", getCredentialsExtractor(), "authenticator", getAuthenticator(),
"profileCreator", getProfileCreator());
}
}