dropwizard-client/src/main/java/io/dropwizard/client/proxy/AuthConfiguration.java
package io.dropwizard.client.proxy;
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.validation.constraints.NotEmpty;
import javax.annotation.Nullable;
import javax.validation.constraints.Pattern;
/**
* Represents a configuration of credentials for either Username Password or NT credentials
* <p/>
* <b>Configuration Parameters:</b>
* <table>
* <tr>
* <td>Name</td>
* <td>Default</td>
* <td>Description</td>
* </tr>
* <tr>
* <td>{@code username}</td>
* <td>REQUIRED</td>
* <td>The username used to connect to the server.</td>
* </tr>
* <tr>
* <td>{@code password}</td>
* <td>REQUIRED</td>
* <td>The password used to connect to the server.</td>
* </tr>
* <tr>
* <td>{@code authScheme}</td>
* <td>null</td>
* <td>Optional, The authentication scheme used by the underlying
* {@link org.apache.http.auth.AuthScope} class. Can be one of:<ul>
* <li>Basic</li><li>NTLM</li></ul></td>
* </tr>
* <tr>
* <td>{@code realm}</td>
* <td>null</td>
* <td>Optional, Realm to be used for NTLM Authentication.</td>
* </tr>
* <tr>
* <td>{@code hostname}</td>
* <td>null</td>
* <td>The hostname of the Principal in NTLM Authentication.</td>
* </tr>
* <tr>
* <td>{@code domain}</td>
* <td>null</td>
* <td>Optional, The domain used in NTLM Authentication.</td>
* </tr>
* <tr>
* <td>{@code credentialType}</td>
* <td>null</td>
* <td>The {@link org.apache.http.auth.Credentials} implementation
* to use for proxy authentication. Currently supports
* UsernamePassword ({@link org.apache.http.auth.UsernamePasswordCredentials}) and
* NT ({@link org.apache.http.auth.NTCredentials})</td>
* </tr>
* </table>
*/
public class AuthConfiguration {
public static final String BASIC_AUTH_SCHEME = "Basic";
public static final String NTLM_AUTH_SCHEME = "NTLM";
public static final String USERNAME_PASSWORD_CREDS = "UsernamePassword";
public static final String NT_CREDS = "NT";
@NotEmpty
private String username = "";
@NotEmpty
private String password = "";
@Pattern(regexp = BASIC_AUTH_SCHEME + "|" + NTLM_AUTH_SCHEME)
@Nullable
private String authScheme;
@Nullable
private String realm;
@Nullable
private String hostname;
@Nullable
private String domain;
@Pattern(regexp = USERNAME_PASSWORD_CREDS + "|" + NT_CREDS, flags = {Pattern.Flag.CASE_INSENSITIVE})
@Nullable
private String credentialType;
public AuthConfiguration() {
}
public AuthConfiguration(String username, String password) {
this.username = username;
this.password = password;
}
public AuthConfiguration(String username, String password, String authScheme, String realm, String hostname, String domain, String credentialType) {
this.username = username;
this.password = password;
this.authScheme = authScheme;
this.realm = realm;
this.hostname = hostname;
this.domain = domain;
this.credentialType = credentialType;
}
@JsonProperty
public String getUsername() {
return username;
}
@JsonProperty
public void setUsername(String username) {
this.username = username;
}
@JsonProperty
public String getPassword() {
return password;
}
@JsonProperty
public void setPassword(String password) {
this.password = password;
}
@JsonProperty
@Nullable
public String getAuthScheme() {
return authScheme;
}
@JsonProperty
public void setAuthScheme(String authScheme) {
this.authScheme = authScheme;
}
@JsonProperty
@Nullable
public String getRealm() {
return realm;
}
@JsonProperty
public void setRealm(String realm) {
this.realm = realm;
}
@JsonProperty
@Nullable
public String getHostname() {
return hostname;
}
@JsonProperty
public void setHostname(String hostname) {
this.hostname = hostname;
}
@JsonProperty
@Nullable
public String getDomain() {
return domain;
}
@JsonProperty
public void setDomain(String domain) {
this.domain = domain;
}
@JsonProperty
@Nullable
public String getCredentialType() {
return credentialType;
}
@JsonProperty
public void setCredentialType(String credentialType) {
this.credentialType = credentialType;
}
}