/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
* or http://forgerock.org/license/CDDLv1.0.html.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at legal-notices/CDDLv1_0.txt.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
*
* Copyright 2013 ForgeRock AS
*/
package org.opends.server.protocols.http;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.SearchScope;
/**
* Class holding the configuration for HTTP authentication. This is extracted
* from the JSON config file or the config held in LDAP.
*/
class HTTPAuthenticationConfig
{
private boolean basicAuthenticationSupported;
private boolean customHeadersAuthenticationSupported;
private String customHeaderUsername;
private String customHeaderPassword;
private DN searchBaseDN;
private SearchScope searchScope;
private String searchFilterTemplate;
/**
* Returns whether HTTP basic authentication is supported.
*
* @return true if supported, false otherwise
*/
public boolean isBasicAuthenticationSupported()
{
return basicAuthenticationSupported;
}
/**
* Sets whether HTTP basic authentication is supported.
*
* @param supported
* the supported value
*/
public void setBasicAuthenticationSupported(boolean supported)
{
this.basicAuthenticationSupported = supported;
}
/**
* Returns whether HTTP authentication via custom headers is supported.
*
* @return true if supported, false otherwise
*/
public boolean isCustomHeadersAuthenticationSupported()
{
return customHeadersAuthenticationSupported;
}
/**
* Sets whether HTTP authentication via custom headers is supported.
*
* @param supported
* the supported value
*/
public void setCustomHeadersAuthenticationSupported(boolean supported)
{
this.customHeadersAuthenticationSupported = supported;
}
/**
* Returns the expected HTTP header for the username. This setting is only
* used when HTTP authentication via custom headers is supported.
*
* @return the HTTP header for the username
*/
public String getCustomHeaderUsername()
{
return customHeaderUsername;
}
/**
* Sets the expected HTTP header for the username. This setting only takes
* effect when HTTP authentication via custom headers is supported.
*
* @param customHeaderUsername
* the HTTP header for the username
*/
public void setCustomHeaderUsername(String customHeaderUsername)
{
this.customHeaderUsername = customHeaderUsername;
}
/**
* Returns the expected HTTP header for the password. This setting is only
* used when HTTP authentication via custom headers is supported.
*
* @return the HTTP header for the password
*/
public String getCustomHeaderPassword()
{
return customHeaderPassword;
}
/**
* Sets the expected HTTP header for the password. This setting only takes
* effect when HTTP authentication via custom headers is supported.
*
* @param customHeaderPassword
* the HTTP header for the password
*/
public void setCustomHeaderPassword(String customHeaderPassword)
{
this.customHeaderPassword = customHeaderPassword;
}
/**
* Returns the base DN to use when searching the entry corresponding to the
* authenticating user.
*
* @return the base DN to use when searching the authenticating user
*/
public DN getSearchBaseDN()
{
return searchBaseDN;
}
/**
* Sets the base DN to use when searching the entry corresponding to the
* authenticating user.
*
* @param searchBaseDN
* the base DN to use when searching the authenticating user
*/
public void setSearchBaseDN(DN searchBaseDN)
{
this.searchBaseDN = searchBaseDN;
}
/**
* Returns the search scope to use when searching the entry corresponding to
* the authenticating user.
*
* @return the search scope to use when searching the authenticating user
*/
public SearchScope getSearchScope()
{
return searchScope;
}
/**
* Sets the search scope to use when searching the entry corresponding to the
* authenticating user.
*
* @param searchScope
* the search scope to use when searching the authenticating user
*/
public void setSearchScope(SearchScope searchScope)
{
this.searchScope = searchScope;
}
/**
* Returns the search filter template to use when searching the entry
* corresponding to the authenticating user.
*
* @return the search filter template to use when searching the authenticating
* user
*/
public String getSearchFilterTemplate()
{
return searchFilterTemplate;
}
/**
* Sets the search filter template to use when searching the entry
* corresponding to the authenticating user.
*
* @param searchFilterTemplate
* the search filter template to use when searching the
* authenticating user
*/
public void setSearchFilterTemplate(String searchFilterTemplate)
{
this.searchFilterTemplate = searchFilterTemplate;
}
/** {@inheritDoc} */
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append("basicAuth: ");
if (!basicAuthenticationSupported)
{
sb.append("not ");
}
sb.append("supported, ");
sb.append("customHeadersAuth: ");
if (customHeadersAuthenticationSupported)
{
sb.append("usernameHeader=\"").append(customHeaderUsername).append("\",");
sb.append("passwordHeader=\"").append(customHeaderPassword).append("\"");
}
else
{
sb.append("not supported, ");
}
sb.append("searchBaseDN: \"").append(searchBaseDN).append("\"");
sb.append("searchScope: \"").append(searchScope).append("\"");
sb.append("searchFilterTemplate: \"").append(searchFilterTemplate).append(
"\"");
return sb.toString();
}
}