Search in sources :

Example 1 with ServiceException

use of com.microsoft.identity.common.exception.ServiceException in project microsoft-authentication-library-common-for-android by AzureAD.

the class IDToken method parseJWT.

public static Map<String, ?> parseJWT(@NonNull final String rawIdToken) throws ServiceException {
    final String methodName = ":getClaims(String)";
    final Map<String, Object> result = new HashMap<>();
    try {
        final JWT jwt = JWTParser.parse(rawIdToken);
        final JWTClaimsSet claimsSet = jwt.getJWTClaimsSet();
        result.putAll(claimsSet.getClaims());
    } catch (ParseException e) {
        Logger.error(TAG + methodName, "Failed to parse IdToken", e);
        throw new ServiceException("Failed to parse JWT", ErrorStrings.INVALID_JWT, e);
    }
    return result;
}
Also used : ServiceException(com.microsoft.identity.common.exception.ServiceException) HashMap(java.util.HashMap) JWT(com.nimbusds.jwt.JWT) JWTClaimsSet(com.nimbusds.jwt.JWTClaimsSet) ParseException(java.text.ParseException)

Example 2 with ServiceException

use of com.microsoft.identity.common.exception.ServiceException in project microsoft-authentication-library-common-for-android by AzureAD.

the class MicrosoftStsOAuth2Strategy method createAccount.

@Override
public MicrosoftStsAccount createAccount(@NonNull final MicrosoftStsTokenResponse response) {
    final String methodName = ":createAccount";
    Logger.verbose(TAG + methodName, "Creating account from TokenResponse...");
    IDToken idToken = null;
    ClientInfo clientInfo = null;
    try {
        idToken = new IDToken(response.getIdToken());
        clientInfo = new ClientInfo(response.getClientInfo());
    } catch (ServiceException ccse) {
        Logger.error(TAG + methodName, "Failed to construct IDToken or ClientInfo", null);
        Logger.errorPII(TAG + methodName, "Failed with Exception", ccse);
        throw new RuntimeException();
    }
    MicrosoftStsAccount account = new MicrosoftStsAccount(idToken, clientInfo);
    account.setEnvironment(getIssuerCacheIdentifierFromTokenEndpoint());
    return account;
}
Also used : ServiceException(com.microsoft.identity.common.exception.ServiceException) IDToken(com.microsoft.identity.common.internal.providers.oauth2.IDToken) ClientInfo(com.microsoft.identity.common.internal.providers.microsoft.azureactivedirectory.ClientInfo)

Example 3 with ServiceException

use of com.microsoft.identity.common.exception.ServiceException in project microsoft-authentication-library-common-for-android by AzureAD.

the class BrokerOperationExecutorTests method expectServiceException.

private void expectServiceException(final List<IIpcStrategy> strategyList) {
    try {
        final BrokerOperationExecutor executor = new BrokerOperationExecutor(strategyList);
        executor.execute(getMockParameter(), getBrokerOperation());
        Assert.fail("Failure is expected.");
    } catch (final BaseException e) {
        Assert.assertTrue(e instanceof ServiceException);
        Assert.assertEquals(e.getErrorCode(), SERVICE_EXCEPTION_BUNDLE_ERROR_CODE);
    }
}
Also used : BrokerOperationExecutor(com.microsoft.identity.common.internal.controllers.BrokerOperationExecutor) BaseException(com.microsoft.identity.common.exception.BaseException) ServiceException(com.microsoft.identity.common.exception.ServiceException)

Example 4 with ServiceException

use of com.microsoft.identity.common.exception.ServiceException in project microsoft-authentication-library-common-for-android by AzureAD.

the class SchemaUtil method getTenantId.

/**
 * Get tenant id claim from Id token , if not present returns the tenant id from client info
 *
 * @param clientInfoString : ClientInfo
 * @param idTokenString    : Id Token
 * @return tenantId
 */
@Nullable
public static String getTenantId(@Nullable final String clientInfoString, @Nullable final String idTokenString) {
    String tenantId = null;
    try {
        if (!TextUtils.isEmpty(idTokenString) && !TextUtils.isEmpty(clientInfoString)) {
            final IDToken idToken = new IDToken(idTokenString);
            final ClientInfo clientInfo = new ClientInfo(clientInfoString);
            final Map<String, ?> claims = idToken.getTokenClaims();
            if (!TextUtils.isEmpty((CharSequence) claims.get(AzureActiveDirectoryIdToken.TENANT_ID))) {
                tenantId = (String) claims.get(AzureActiveDirectoryIdToken.TENANT_ID);
            } else if (!TextUtils.isEmpty(clientInfo.getUtid())) {
                Logger.warn(TAG, "realm is not returned from server. Use utid as realm.");
                tenantId = clientInfo.getUtid();
            } else {
                Logger.warn(TAG, "realm and utid is not returned from server. " + "Using empty string as default tid.");
            }
        }
    } catch (final ServiceException e) {
        Logger.errorPII(TAG, "Failed to construct IDToken or ClientInfo", e);
    }
    return tenantId;
}
Also used : ServiceException(com.microsoft.identity.common.exception.ServiceException) IDToken(com.microsoft.identity.common.internal.providers.oauth2.IDToken) ClientInfo(com.microsoft.identity.common.internal.providers.microsoft.azureactivedirectory.ClientInfo) Nullable(androidx.annotation.Nullable)

Example 5 with ServiceException

use of com.microsoft.identity.common.exception.ServiceException in project microsoft-authentication-library-common-for-android by AzureAD.

the class AdalMigrationAdapter method createAccount.

/**
 * Creates a {@link MicrosoftAccount} from the supplied {@link ADALTokenCacheItem}.
 *
 * @param refreshToken The credential used to derive the new account.
 * @return The newly created MicrosoftAccount.
 */
@Nullable
public static MicrosoftAccount createAccount(@NonNull final ADALTokenCacheItem refreshToken) {
    final String methodName = ":createAccount";
    try {
        final String rawIdToken = refreshToken.getRawIdToken();
        final String uid = refreshToken.getUserInfo().getUserId();
        final String utid = refreshToken.getTenantId();
        final String environment = new URL(refreshToken.getAuthority()).getHost();
        final JsonObject clientInfo = new JsonObject();
        clientInfo.addProperty("uid", uid);
        clientInfo.addProperty("utid", utid);
        final String clientInfoJson = clientInfo.toString();
        final String base64EncodedClientInfo = new String(Base64.encode(clientInfoJson.getBytes(), 0));
        final ClientInfo clientInfoObj = new ClientInfo(base64EncodedClientInfo);
        final IDToken idToken = new IDToken(rawIdToken);
        AzureActiveDirectoryAccount account = new AzureActiveDirectoryAccount(idToken, clientInfoObj);
        account.setEnvironment(environment);
        return account;
    } catch (MalformedURLException | ServiceException e) {
        final String errorMsg = "Failed to create Account";
        Logger.error(TAG + methodName, errorMsg, null);
        Logger.errorPII(TAG + methodName, errorMsg, e);
        return null;
    }
}
Also used : AzureActiveDirectoryAccount(com.microsoft.identity.common.internal.providers.microsoft.azureactivedirectory.AzureActiveDirectoryAccount) MalformedURLException(java.net.MalformedURLException) ServiceException(com.microsoft.identity.common.exception.ServiceException) JsonObject(com.google.gson.JsonObject) IDToken(com.microsoft.identity.common.internal.providers.oauth2.IDToken) ClientInfo(com.microsoft.identity.common.internal.providers.microsoft.azureactivedirectory.ClientInfo) URL(java.net.URL) Nullable(androidx.annotation.Nullable)

Aggregations

ServiceException (com.microsoft.identity.common.exception.ServiceException)23 ClientInfo (com.microsoft.identity.common.internal.providers.microsoft.azureactivedirectory.ClientInfo)8 IDToken (com.microsoft.identity.common.internal.providers.oauth2.IDToken)7 ClientException (com.microsoft.identity.common.exception.ClientException)4 Nullable (androidx.annotation.Nullable)3 IOException (java.io.IOException)3 URL (java.net.URL)3 NonNull (androidx.annotation.NonNull)2 ArgumentException (com.microsoft.identity.common.exception.ArgumentException)2 BaseException (com.microsoft.identity.common.exception.BaseException)2 BrokerResult (com.microsoft.identity.common.internal.broker.BrokerResult)2 AuthorizationResult (com.microsoft.identity.common.internal.providers.oauth2.AuthorizationResult)2 OAuth2Strategy (com.microsoft.identity.common.internal.providers.oauth2.OAuth2Strategy)2 OAuth2StrategyParameters (com.microsoft.identity.common.internal.providers.oauth2.OAuth2StrategyParameters)2 ApiEndEvent (com.microsoft.identity.common.internal.telemetry.events.ApiEndEvent)2 ApiStartEvent (com.microsoft.identity.common.internal.telemetry.events.ApiStartEvent)2 JSONException (org.json.JSONException)2 Bundle (android.os.Bundle)1 JsonObject (com.google.gson.JsonObject)1 JWSBuilder (com.microsoft.identity.common.adal.internal.JWSBuilder)1