use of com.microsoft.aad.msal4j.MsalException in project microsoft-authentication-library-for-java by AzureAD.
the class InteractiveFlowB2C method acquireTokenInteractiveB2C.
private static IAuthenticationResult acquireTokenInteractiveB2C() throws Exception {
// Load token cache from file and initialize token cache aspect. The token cache will have
// dummy data, so the acquireTokenSilently call will fail.
TokenCacheAspect tokenCacheAspect = new TokenCacheAspect("sample_cache.json");
PublicClientApplication pca = PublicClientApplication.builder(CLIENT_ID).b2cAuthority(AUTHORITY).setTokenCacheAccessAspect(tokenCacheAspect).build();
Set<IAccount> accountsInCache = pca.getAccounts().join();
// Use first account in the cache. In a production application, you would filter
// accountsInCache to get the right account for the user authenticating.
IAccount account = accountsInCache.iterator().next();
IAuthenticationResult result;
try {
SilentParameters silentParameters = SilentParameters.builder(SCOPE, account).build();
// try to acquire token silently. This call will fail since the token cache
// does not have any data for the user you are trying to acquire a token for
result = pca.acquireTokenSilently(silentParameters).join();
} catch (Exception ex) {
if (ex.getCause() instanceof MsalException) {
// For B2C, you have to specify a port for the redirect URL
InteractiveRequestParameters parameters = InteractiveRequestParameters.builder(new URI("http://localhost:8080")).scopes(SCOPE).build();
// Try to acquire a token interactively with system browser. If successful, you should see
// the token and account information printed out to console
result = pca.acquireToken(parameters).join();
} else {
// Handle other exceptions accordingly
throw ex;
}
}
return result;
}
use of com.microsoft.aad.msal4j.MsalException in project microsoft-authentication-library-for-java by AzureAD.
the class UsernamePasswordFlow method acquireTokenUsernamePassword.
private static IAuthenticationResult acquireTokenUsernamePassword(PublicClientApplication pca, Set<String> scope, IAccount account, String username, String password) throws Exception {
IAuthenticationResult result;
try {
SilentParameters silentParameters = SilentParameters.builder(scope).account(account).build();
// Try to acquire token silently. This will fail on the first acquireTokenUsernamePassword() call
// because the token cache does not have any data for the user you are trying to acquire a token for
result = pca.acquireTokenSilently(silentParameters).join();
System.out.println("==acquireTokenSilently call succeeded");
} catch (Exception ex) {
if (ex.getCause() instanceof MsalException) {
System.out.println("==acquireTokenSilently call failed: " + ex.getCause());
UserNamePasswordParameters parameters = UserNamePasswordParameters.builder(scope, username, password.toCharArray()).build();
// Try to acquire a token via username/password. If successful, you should see
// the token and account information printed out to console
result = pca.acquireToken(parameters).join();
System.out.println("==username/password flow succeeded");
} else {
// Handle other exceptions accordingly
throw ex;
}
}
return result;
}
use of com.microsoft.aad.msal4j.MsalException in project OpenOLAT by OpenOLAT.
the class MicrosoftGraphAccessTokenManager method connect.
private CompletableFuture<String> connect(String id, String secret, String tenant) {
ConfidentialClientApplication cca = createClientApplication(id, secret, tenant);
CompletableFuture<IAuthenticationResult> result = null;
if (cca != null) {
try {
if (cache.isEmpty()) {
ClientCredentialParameters parameters = ClientCredentialParameters.builder(SCOPES).build();
result = cca.acquireToken(parameters);
} else {
SilentParameters silentParameters = SilentParameters.builder(SCOPES).build();
// try to acquire token silently. This call will fail since the token cache does not
// have a token for the application you are requesting an access token for
result = cca.acquireTokenSilently(silentParameters);
}
} catch (Exception ex) {
if (ex.getCause() instanceof MsalException) {
ClientCredentialParameters parameters = ClientCredentialParameters.builder(SCOPES).build();
result = cca.acquireToken(parameters);
} else {
log.error("", ex);
}
}
}
if (result != null) {
return result.handleAsync((res, ex) -> {
if (ex != null && (ex instanceof MsalException || ex.getCause() instanceof MsalException)) {
ClientCredentialParameters parameters = ClientCredentialParameters.builder(SCOPES).build();
return cca.acquireToken(parameters).join();
}
return res;
}).thenApply(IAuthenticationResult::accessToken);
}
return CompletableFuture.completedFuture((String) null);
}
use of com.microsoft.aad.msal4j.MsalException in project microsoft-authentication-library-for-java by AzureAD.
the class IntegratedWindowsAuthenticationFlow method acquireTokenIntegratedWindowsAuth.
private static IAuthenticationResult acquireTokenIntegratedWindowsAuth(PublicClientApplication pca, Set<String> scope, IAccount account, String username) throws Exception {
IAuthenticationResult result;
try {
SilentParameters silentParameters = SilentParameters.builder(scope).account(account).build();
// Try to acquire token silently. This will fail on the first acquireTokenIntegratedWindowsAuth() call
// because the token cache does not have any data for the user you are trying to acquire a token for
result = pca.acquireTokenSilently(silentParameters).join();
System.out.println("==acquireTokenSilently call succeeded");
} catch (Exception ex) {
if (ex.getCause() instanceof MsalException) {
System.out.println("==acquireTokenSilently call failed: " + ex.getCause());
IntegratedWindowsAuthenticationParameters parameters = IntegratedWindowsAuthenticationParameters.builder(scope, username).build();
// Try to acquire a token using Integrated Windows Authentication (IWA). You will need to generate a Kerberos ticket.
// If successful, you should see the token and account information printed out to console
result = pca.acquireToken(parameters).join();
System.out.println("==Integrated Windows Authentication flow succeeded");
} else {
// Handle other exceptions accordingly
throw ex;
}
}
return result;
}
use of com.microsoft.aad.msal4j.MsalException in project microsoft-authentication-library-for-java by AzureAD.
the class InteractiveFlow method acquireTokenInteractive.
private static IAuthenticationResult acquireTokenInteractive() throws Exception {
// Load token cache from file and initialize token cache aspect. The token cache will have
// dummy data, so the acquireTokenSilently call will fail.
TokenCacheAspect tokenCacheAspect = new TokenCacheAspect("sample_cache.json");
PublicClientApplication pca = PublicClientApplication.builder(CLIENT_ID).authority(AUTHORITY).setTokenCacheAccessAspect(tokenCacheAspect).build();
Set<IAccount> accountsInCache = pca.getAccounts().join();
// Take first account in the cache. In a production application, you would filter
// accountsInCache to get the right account for the user authenticating.
IAccount account = accountsInCache.iterator().next();
IAuthenticationResult result;
try {
SilentParameters silentParameters = SilentParameters.builder(SCOPE, account).build();
// try to acquire token silently. This call will fail since the token cache
// does not have any data for the user you are trying to acquire a token for
result = pca.acquireTokenSilently(silentParameters).join();
} catch (Exception ex) {
if (ex.getCause() instanceof MsalException) {
InteractiveRequestParameters parameters = InteractiveRequestParameters.builder(new URI("http://localhost")).scopes(SCOPE).build();
// Try to acquire a token interactively with system browser. If successful, you should see
// the token and account information printed out to console
result = pca.acquireToken(parameters).join();
} else {
// Handle other exceptions accordingly
throw ex;
}
}
return result;
}
Aggregations