package org.apereo.cas.configuration.model.support.spnego;
import org.apereo.cas.configuration.model.core.authentication.PersonDirPrincipalResolverProperties;
import org.apereo.cas.configuration.model.core.authentication.PrincipalTransformationProperties;
import org.apereo.cas.configuration.model.support.ldap.AbstractLdapProperties;
import org.apereo.cas.configuration.support.Beans;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
/**
* This is {@link SpnegoProperties}.
*
* @author Misagh Moayyed
* @since 5.0.0
*/
public class SpnegoProperties {
private boolean principalWithDomainName;
private boolean ntlmAllowed = true;
private boolean send401OnAuthenticationFailure = true;
private String hostNameClientActionStrategy = "hostnameSpnegoClientAction";
private Ldap ldap = new Ldap();
private String jcifsPassword;
private String jcifsServicePassword;
private String jcifsServicePrincipal = "HTTP/cas.example.com@EXAMPLE.COM";
private String kerberosConf;
private String kerberosKdc = "172.10.1.10";
private String kerberosRealm = "EXAMPLE.COM";
private String loginConf;
private String timeout = "PT5M";
private long cachePolicy = 600;
private String jcifsNetbiosWins;
private String jcifsUsername;
private String jcifsDomainController;
private String jcifsDomain;
private String kerberosDebug;
private boolean useSubjectCredsOnly;
private String dnsTimeout = "PT2S";
private String hostNamePatternString = ".+";
private String ipsToCheckPattern = "127.+";
private String alternativeRemoteHostAttribute = "alternateRemoteHeader";
private String spnegoAttributeName = "distinguishedName";
private boolean ntlm;
private boolean mixedModeAuthentication;
private String supportedBrowsers = "MSIE,Trident,Firefox,AppleWebKit";
@NestedConfigurationProperty
private PrincipalTransformationProperties principalTransformation =
new PrincipalTransformationProperties();
@NestedConfigurationProperty
private PersonDirPrincipalResolverProperties principal = new PersonDirPrincipalResolverProperties();
private String name;
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public PrincipalTransformationProperties getPrincipalTransformation() {
return principalTransformation;
}
public void setPrincipalTransformation(final PrincipalTransformationProperties principalTransformation) {
this.principalTransformation = principalTransformation;
}
public PersonDirPrincipalResolverProperties getPrincipal() {
return principal;
}
public void setPrincipal(final PersonDirPrincipalResolverProperties principal) {
this.principal = principal;
}
public boolean isSend401OnAuthenticationFailure() {
return send401OnAuthenticationFailure;
}
public void setSend401OnAuthenticationFailure(final boolean send401OnAuthenticationFailure) {
this.send401OnAuthenticationFailure = send401OnAuthenticationFailure;
}
public String getHostNameClientActionStrategy() {
return hostNameClientActionStrategy;
}
public void setHostNameClientActionStrategy(final String hostNameClientActionStrategy) {
this.hostNameClientActionStrategy = hostNameClientActionStrategy;
}
public boolean isNtlm() {
return ntlm;
}
public void setNtlm(final boolean ntlm) {
this.ntlm = ntlm;
}
public boolean isMixedModeAuthentication() {
return mixedModeAuthentication;
}
public void setMixedModeAuthentication(final boolean mixedModeAuthentication) {
this.mixedModeAuthentication = mixedModeAuthentication;
}
public String getSupportedBrowsers() {
return supportedBrowsers;
}
public void setSupportedBrowsers(final String supportedBrowsers) {
this.supportedBrowsers = supportedBrowsers;
}
public String getSpnegoAttributeName() {
return spnegoAttributeName;
}
public void setSpnegoAttributeName(final String spnegoAttributeName) {
this.spnegoAttributeName = spnegoAttributeName;
}
public long getDnsTimeout() {
return Beans.newDuration(dnsTimeout).toMillis();
}
public void setDnsTimeout(final String dnsTimeout) {
this.dnsTimeout = dnsTimeout;
}
public String getIpsToCheckPattern() {
return ipsToCheckPattern;
}
public void setIpsToCheckPattern(final String ipsToCheckPattern) {
this.ipsToCheckPattern = ipsToCheckPattern;
}
public String getAlternativeRemoteHostAttribute() {
return alternativeRemoteHostAttribute;
}
public void setAlternativeRemoteHostAttribute(final String alternativeRemoteHostAttribute) {
this.alternativeRemoteHostAttribute = alternativeRemoteHostAttribute;
}
public String getJcifsPassword() {
return jcifsPassword;
}
public String getHostNamePatternString() {
return hostNamePatternString;
}
public void setHostNamePatternString(final String hostNamePatternString) {
this.hostNamePatternString = hostNamePatternString;
}
public void setJcifsPassword(final String jcifsPassword) {
this.jcifsPassword = jcifsPassword;
}
public String getJcifsServicePassword() {
return jcifsServicePassword;
}
public void setJcifsServicePassword(final String jcifsServicePassword) {
this.jcifsServicePassword = jcifsServicePassword;
}
public String getJcifsServicePrincipal() {
return jcifsServicePrincipal;
}
public void setJcifsServicePrincipal(final String jcifsServicePrincipal) {
this.jcifsServicePrincipal = jcifsServicePrincipal;
}
public String getKerberosConf() {
return kerberosConf;
}
public void setKerberosConf(final String kerberosConf) {
this.kerberosConf = kerberosConf;
}
public String getKerberosKdc() {
return kerberosKdc;
}
public void setKerberosKdc(final String kerberosKdc) {
this.kerberosKdc = kerberosKdc;
}
public String getKerberosRealm() {
return kerberosRealm;
}
public void setKerberosRealm(final String kerberosRealm) {
this.kerberosRealm = kerberosRealm;
}
public String getLoginConf() {
return loginConf;
}
public void setLoginConf(final String loginConf) {
this.loginConf = loginConf;
}
public long getTimeout() {
return Beans.newDuration(timeout).toMillis();
}
public void setTimeout(final String timeout) {
this.timeout = timeout;
}
public long getCachePolicy() {
return cachePolicy;
}
public void setCachePolicy(final long cachePolicy) {
this.cachePolicy = cachePolicy;
}
public String getJcifsNetbiosWins() {
return jcifsNetbiosWins;
}
public void setJcifsNetbiosWins(final String jcifsNetbiosWins) {
this.jcifsNetbiosWins = jcifsNetbiosWins;
}
public String getJcifsUsername() {
return jcifsUsername;
}
public void setJcifsUsername(final String jcifsUsername) {
this.jcifsUsername = jcifsUsername;
}
public String getJcifsDomainController() {
return jcifsDomainController;
}
public void setJcifsDomainController(final String jcifsDomainController) {
this.jcifsDomainController = jcifsDomainController;
}
public String getJcifsDomain() {
return jcifsDomain;
}
public void setJcifsDomain(final String jcifsDomain) {
this.jcifsDomain = jcifsDomain;
}
public String getKerberosDebug() {
return kerberosDebug;
}
public void setKerberosDebug(final String kerberosDebug) {
this.kerberosDebug = kerberosDebug;
}
public boolean isUseSubjectCredsOnly() {
return useSubjectCredsOnly;
}
public void setUseSubjectCredsOnly(final boolean useSubjectCredsOnly) {
this.useSubjectCredsOnly = useSubjectCredsOnly;
}
public boolean isPrincipalWithDomainName() {
return principalWithDomainName;
}
public void setPrincipalWithDomainName(final boolean principalWithDomainName) {
this.principalWithDomainName = principalWithDomainName;
}
public boolean isNtlmAllowed() {
return ntlmAllowed;
}
public void setNtlmAllowed(final boolean ntlmAllowed) {
this.ntlmAllowed = ntlmAllowed;
}
public Ldap getLdap() {
return ldap;
}
public void setLdap(final Ldap ldap) {
this.ldap = ldap;
}
public static class Ldap extends AbstractLdapProperties {
private String baseDn;
private String searchFilter;
public String getBaseDn() {
return baseDn;
}
public void setBaseDn(final String baseDn) {
this.baseDn = baseDn;
}
public String getSearchFilter() {
return searchFilter;
}
public void setSearchFilter(final String searchFilter) {
this.searchFilter = searchFilter;
}
}
}