AADB2CURL.java
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.spring.autoconfigure.b2c;
import org.springframework.util.Assert;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
/**
* To get AAD B2C URLs for configuration.
*/
public final class AADB2CURL {
private AADB2CURL() {
}
private static final String AUTHORIZATION_URL_PATTERN =
"https://%s.b2clogin.com/%s.onmicrosoft.com/oauth2/v2.0/authorize";
private static final String TOKEN_URL_PATTERN =
"https://%s.b2clogin.com/%s.onmicrosoft.com/oauth2/v2.0/token?p=%s";
private static final String JWKSET_URL_PATTERN =
"https://%s.b2clogin.com/%s.onmicrosoft.com/discovery/v2.0/keys?p=%s";
private static final String END_SESSION_URL_PATTERN =
"https://%s.b2clogin.com/%s.onmicrosoft.com/oauth2/v2.0/logout?post_logout_redirect_uri=%s&p=%s";
public static String getAuthorizationUrl(String tenant) {
Assert.hasText(tenant, "tenant should have text.");
return String.format(AUTHORIZATION_URL_PATTERN, tenant, tenant);
}
public static String getTokenUrl(String tenant, String userFlow) {
Assert.hasText(tenant, "tenant should have text.");
Assert.hasText(userFlow, "user flow should have text.");
return String.format(TOKEN_URL_PATTERN, tenant, tenant, userFlow);
}
public static String getJwkSetUrl(String tenant, String userFlow) {
Assert.hasText(tenant, "tenant should have text.");
Assert.hasText(userFlow, "user flow should have text.");
return String.format(JWKSET_URL_PATTERN, tenant, tenant, userFlow);
}
public static String getEndSessionUrl(String tenant, String logoutUrl, String userFlow) {
Assert.hasText(tenant, "tenant should have text.");
Assert.hasText(logoutUrl, "logoutUrl should have text.");
Assert.hasText(userFlow, "user flow should have text.");
return String.format(END_SESSION_URL_PATTERN, tenant, tenant, getEncodedURL(logoutUrl), userFlow);
}
private static String getEncodedURL(String url) {
Assert.hasText(url, "url should have text.");
try {
return URLEncoder.encode(url, "utf-8");
} catch (UnsupportedEncodingException e) {
throw new AADB2CConfigurationException("failed to encode url: " + url, e);
}
}
}