com.auth0.AuthorizeUrl Maven / Gradle / Ivy
package com.auth0;
import com.auth0.client.auth.AuthAPI;
import com.auth0.client.auth.AuthorizeUrlBuilder;
import javax.servlet.http.HttpServletRequest;
/**
* Class to create and customize an Auth0 Authorize URL.
* It's not reusable.
*/
@SuppressWarnings({"UnusedReturnValue", "WeakerAccess", "unused", "SameParameterValue"})
public class AuthorizeUrl {
private static final String SCOPE_OPENID = "openid";
private final HttpServletRequest request;
private final AuthorizeUrlBuilder builder;
private boolean used;
/**
* @param client the Auth0 Authentication API client
* @param request request where the state will be saved
* @param redirectUrl the url to redirect to after authentication
* @param responseType the response type to use
*/
AuthorizeUrl(AuthAPI client, HttpServletRequest request, String redirectUrl, String responseType) {
this.request = request;
this.builder = client.authorizeUrl(redirectUrl)
.withResponseType(responseType)
.withScope(SCOPE_OPENID);
}
/**
* Sets the connection value.
*
* @param connection connection to set
* @return the builder instance
*/
public AuthorizeUrl withConnection(String connection) {
builder.withConnection(connection);
return this;
}
/**
* Sets the audience value.
*
* @param audience audience to set
* @return the builder instance
*/
public AuthorizeUrl withAudience(String audience) {
builder.withAudience(audience);
return this;
}
/**
* Sets the state value.
*
* @param state state to set
* @return the builder instance
*/
public AuthorizeUrl withState(String state) {
RandomStorage.setSessionState(request, state);
builder.withState(state);
return this;
}
/**
* Sets the nonce value.
*
* @param nonce nonce to set
* @return the builder instance
*/
public AuthorizeUrl withNonce(String nonce) {
RandomStorage.setSessionNonce(request, nonce);
builder.withParameter("nonce", nonce);
return this;
}
/**
* Sets the scope value.
*
* @param scope scope to set
* @return the builder instance
*/
public AuthorizeUrl withScope(String scope) {
builder.withScope(scope);
return this;
}
/**
* Sets an additional parameter.
*
* @param name name of the parameter
* @param value value of the parameter to set
* @return the builder instance
*/
public AuthorizeUrl withParameter(String name, String value) {
if ("state".equals(name) || "nonce".equals(name)) {
throw new IllegalArgumentException("Please, use the dedicated methods for setting the 'nonce' and 'state' parameters.");
}
if ("response_type".equals(name)) {
throw new IllegalArgumentException("Response type cannot be changed once set.");
}
if ("redirect_uri".equals(name)) {
throw new IllegalArgumentException("Redirect URI cannot be changed once set.");
}
builder.withParameter(name, value);
return this;
}
/**
* Creates a string representation of the URL with the configured parameters.
* It cannot be called more than once.
*
* @return the string URL
* @throws IllegalStateException if it's called more than once
*/
public String build() throws IllegalStateException {
if (used) {
throw new IllegalStateException("The AuthorizeUrl instance must not be reused.");
}
used = true;
return builder.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy