ADAL till MSAL migration guide för AndroidADAL to MSAL migration guide for Android

I den här artikeln beskrivs de ändringar du behöver göra för att migrera en app som använder ADAL (Azure Active Directory Authentication Library) för att använda Microsoft Authentication Library (MSAL).This article highlights changes you need to make to migrate an app that uses the Azure Active Directory Authentication Library (ADAL) to use the Microsoft Authentication Library (MSAL).

Skillnader i fokusDifference highlights

ADAL fungerar med Azure Active Directory v 1.0-slutpunkten.ADAL works with the Azure Active Directory v1.0 endpoint. Microsoft Authentication Library (MSAL) fungerar med Microsoft Identity Platform – tidigare kallat Azure Active Directory v 2.0-slutpunkten.The Microsoft Authentication Library (MSAL) works with the Microsoft identity platform--formerly known as the Azure Active Directory v2.0 endpoint. Microsoft Identity Platform skiljer sig från Azure Active Directory v 1.0 på så här:The Microsoft identity platform differs from Azure Active Directory v1.0 in that it:

UppfyllerSupports:

  • Organisations identitet (Azure Active Directory)Organizational Identity (Azure Active Directory)

  • Icke-organisatoriska identiteter som Outlook.com, Xbox Live och så vidareNon-organizational identities such as Outlook.com, Xbox Live, and so on

  • (Endast Azure AD B2C) Federerad inloggning med Google, Facebook, Twitter och Amazon(Azure AD B2C only) Federated login with Google, Facebook, Twitter, and Amazon

  • Är standarder som är kompatibla med:Is standards compatible with:

    • OAuth v 2.0OAuth v2.0
    • OpenID Connect (OIDC)OpenID Connect (OIDC)

MSAL offentliga API inför viktiga ändringar, inklusive:The MSAL public API introduces important changes, including:

  • En ny modell för åtkomst till token:A new model for accessing tokens:
    • ADAL ger åtkomst till token via AuthenticationContext , som representerar-servern.ADAL provides access to tokens via the AuthenticationContext, which represents the server. MSAL ger åtkomst till token via PublicClientApplication , som representerar-klienten.MSAL provides access to tokens via the PublicClientApplication, which represents the client. Klient utvecklare behöver inte skapa en ny PublicClientApplication instans för varje myndighet som de behöver för att interagera med.Client developers don't need to create a new PublicClientApplication instance for every Authority they need to interact with. Endast en PublicClientApplication konfiguration krävs.Only one PublicClientApplication configuration is required.
    • Stöd för att begära åtkomsttoken med hjälp av omfattningar, förutom resurs identifierare.Support for requesting access tokens using scopes in addition to resource identifiers.
    • Stöd för stegvist godkännande.Support for incremental consent. Utvecklare kan begära omfattningar när användaren får åtkomst till fler och fler funktioner i appen, inklusive de som inte ingår under registreringen av appen.Developers can request scopes as the user accesses more and more functionality in the app, including those not included during app registration.
    • Myndigheterna verifieras inte längre vid körning.Authorities are no longer validated at run-time. I stället deklareras utvecklaren av en lista med kända myndigheter under utvecklingen.Instead, the developer declares a list of 'known authorities' during development.
  • API-ändringar för token:Token API changes:
    • I ADAL AcquireToken() skapar först en tyst begäran.In ADAL, AcquireToken() first makes a silent request. Detta innebär att en interaktiv begäran görs.Failing that, it makes an interactive request. Detta beteende ledde till att vissa utvecklare bara förlitar sig på AcquireToken , vilket ledde till att användaren uppmanas att ange autentiseringsuppgifter vid ett tillfälle.This behavior resulted in some developers relying only on AcquireToken, which resulted in the user being unexpectedly prompted for credentials at times. MSAL kräver att utvecklare är avsiktliga när användaren får en UI-prompt.MSAL requires developers be intentional about when the user receives a UI prompt.
      • AcquireTokenSilent resulterar alltid i en tyst begäran som antingen lyckas eller Miss lyckas.AcquireTokenSilent always results in a silent request that either succeeds or fails.
      • AcquireToken alltid resulterar i en begäran som efterfrågar användaren via användar gränssnittet.AcquireToken always results in a request that prompts the user via UI.
  • MSAL stöder inloggning från antingen en standard webbläsare eller en inbäddad webbvy:MSAL supports sign in from either a default browser or an embedded web view:
    • Som standard används standard webbläsaren på enheten.By default, the default browser on the device is used. Detta gör att MSAL kan använda Authentication State (cookies) som redan finns för ett eller flera konton som är inloggade.This allows MSAL to use authentication state (cookies) that may already be present for one or more signed in accounts. Om det inte finns något autentiserings tillstånd kan autentisering under auktorisering via MSAL resultera i autentiserings tillstånd (cookies) som skapas för att dra nytta av andra webb program som ska användas i samma webbläsare.If no authentication state is present, authenticating during authorization via MSAL results in authentication state (cookies) being created for the benefit of other web applications that will be used in the same browser.
  • Ny undantags modell:New exception Model:
    • Undantagen tydligare definierar den typ av fel som inträffat och vad utvecklare måste göra för att lösa det.Exceptions more clearly define the type of error that occurred and what the developer needs to do to resolve it.
  • MSAL stöder parameter objekt för AcquireToken och- AcquireTokenSilent anrop.MSAL supports parameter objects for AcquireToken and AcquireTokenSilent calls.
  • MSAL stöder deklarativ konfiguration för:MSAL supports declarative configuration for:
    • Klient-ID, omdirigerings-URI.Client ID, Redirect URI.
    • Inbäddad vs standard-webbläsareEmbedded vs Default Browser
    • SkattemyndigheterAuthorities
    • HTTP-inställningar som Läs-och tids gräns för anslutningHTTP settings such as read and connection timeout

Din app-registrering och migrering till MSALYour app registration and migration to MSAL

Du behöver inte ändra din befintliga App-registrering för att använda MSAL.You don't need to change your existing app registration to use MSAL. Om du vill dra nytta av stegvisa/progressiva medgivande kan du behöva granska registreringen för att identifiera de speciella omfattningar som du vill begära stegvis.If you want to take advantage of incremental/progressive consent, you may need to review the registration to identify the specific scopes that you want to request incrementally. Mer information om omfattningar och stegvisa godkännanden följer.More information on scopes and incremental consent follows.

I din app-registrering i portalen visas fliken API-behörigheter . Detta ger en lista med de API: er och behörigheter (omfattningar) som din app är konfigurerad för att begära åtkomst till.In your app registration in the portal, you will see an API permissions tab. This provides a list of the APIs and permissions (scopes) that your app is currently configured to request access to. Den visar också en lista över de omfångs namn som är associerade med varje API-behörighet.It also shows a list of the scope names associated with each API permission.

Med ADAL och Azure AD v1-slutpunkten beviljades användaren de resurser de äger vid första användningen.With ADAL and the Azure AD v1 endpoint, user consent to resources they own was granted on first use. Med MSAL och Microsoft Identity Platform kan medgivande begäras stegvis.With MSAL and the Microsoft identity platform, consent can be requested incrementally. Ett stegvist godkännande är användbart för behörigheter som en användare kan överväga med hög behörighet eller som annars kan frågas om det inte finns en tydlig förklaring av varför behörigheten krävs.Incremental consent is useful for permissions that a user may consider high privilege, or may otherwise question if not provided with a clear explanation of why the permission is required. I ADAL kan de behörigheterna ha resulterat i att användaren överger inloggningen i din app.In ADAL, those permissions may have resulted in the user abandoning signing in to your app.

Tips

Använd ett stegvist medgivande för att ge ytterligare kontext till dina användare om varför appen behöver en behörighet.Use incremental consent to provide additional context to your users about why your app needs a permission.

Organisations administratörer kan samtycka till att ge ditt program behörighet för alla medlemmar i organisationen.Organization administrators can consent to permissions your application requires on behalf of all of the members of their organization. Vissa organisationer tillåter bara administratörer att samtycka till program.Some organizations only allow admins to consent to applications. Administratörs medgivande kräver att du inkluderar alla API-behörigheter och omfattningar som används av ditt program i din app-registrering.Admin consent requires that you include all API permissions and scopes used by your application in your app registration.

Tips

Även om du kan begära ett omfång med MSAL för något som inte ingår i din app-registrering, rekommenderar vi att du uppdaterar registreringen av appen så att den innehåller alla resurser och omfattningar som en användare någonsin kan bevilja behörighet till.Even though you can request a scope using MSAL for something not included in your app registration, we recommend that you update your app registration to include all resources and scopes that a user could ever grant permission to.

Migrera från resurs-ID till omfångMigrating from resource IDs to scopes

Autentisera och begär auktorisering för alla behörigheter vid första användningenAuthenticate and request authorization for all permissions on first use

Om du för närvarande använder ADAL och inte behöver använda ett stegvist tillstånd är det enklaste sättet att börja använda MSAL att göra en acquireToken begäran med det nya AcquireTokenParameter objektet och ange resurs-ID-värdet.If you're currently using ADAL and don't need to use incremental consent, the simplest way to start using MSAL is to make an acquireToken request using the new AcquireTokenParameter object and setting the resource ID value.

Varning

Det går inte att ange både scope och resurs-ID. Om du försöker ange båda leder det till en IllegalArgumentException .It's not possible to set both scopes and a resource id. Attempting to set both will result in an IllegalArgumentException.

Detta leder till samma v1-beteende som du använder.This will result in the same v1 behavior that you are used. Alla behörigheter som begärs i din app-registrering begärs från användaren under den första interaktionen.All permissions requested in your app registration are requested from the user during their first interaction.

Autentisera och begär bara behörigheter vid behovAuthenticate and request permissions only as needed

Om du vill dra nytta av ett stegvist godkännande ska du göra en lista över behörigheter (omfattningar) som appen använder från din app-registrering och organisera dem i två listor baserat på:To take advantage of incremental consent, make a list of permissions (scopes) that your app uses from your app registration, and organize them into two lists based on:

  • Vilka omfattningar du vill begära under användarens första interaktion med din app under inloggningen.Which scopes you want to request during the user's first interaction with your app during sign-in.
  • De behörigheter som associeras med en viktig funktion i din app som du också måste förklara för användaren.The permissions that are associated with an important feature of your app that you will also need to explain to the user.

När du har ordnat omfattningarna ordnar du varje lista efter vilken resurs (API) du vill begära en token för.Once you've organized the scopes, organize each list by which resource (API) you want to request a token for. Samt andra omfång som du vill att användaren ska auktorisera samtidigt.As well as any other scopes that you wish the user to authorize at the same time.

Parameter-objektet som används för att göra din begäran till MSAL stöder:The parameters object used to make your request to MSAL supports:

  • Scope: Listan över omfattningar som du vill begära auktorisering för och ta emot en åtkomsttoken.Scope: The list of scopes that you want to request authorization for and receive an access token.
  • ExtraScopesToConsent: En ytterligare lista med omfattningar som du vill begära auktorisering för när du begär en åtkomsttoken för en annan resurs.ExtraScopesToConsent: An additional list of scopes that you want to request authorization for while you're requesting an access token for another resource. Med hjälp av den här listan över omfång kan du minimera antalet gånger som du behöver begära användar godkännande.This list of scopes allows you to minimize the number of times that you need to request user authorization. Vilket innebär färre användares auktorisering eller medgivande.Which means fewer user authorization or consent prompts.

Migrera från AuthenticationContext till PublicClientApplicationsMigrate from AuthenticationContext to PublicClientApplications

Konstruera PublicClientApplicationConstructing PublicClientApplication

När du använder MSAL instansierar du en PublicClientApplication .When you use MSAL, you instantiate a PublicClientApplication. Det här objektet modellerar appens identitet och används för att göra förfrågningar till en eller flera utfärdare.This object models your app identity and is used to make requests to one or more authorities. Med det här objektet konfigurerar du din klient identitet, omdirigerings-URI, standard auktoritet, om du vill använda enhetens webbläsare jämfört med inbäddad webbvy, loggnings nivå och mycket mer.With this object you will configure your client identity, redirect URI, default authority, whether to use the device browser vs. embedded web view, the log level, and more.

Du kan deklarativ konfigurera det här objektet med JSON, som du antingen anger som en fil eller lagra som en resurs i din APK.You can declaratively configure this object with JSON, which you either provide as a file or store as a resource within your APK.

Även om det här objektet inte är en singleton, används internt Executors av det delade för både interaktiva och tysta begär Anden.Although this object is not a singleton, internally it uses shared Executors for both interactive and silent requests.

Företag till företagBusiness to Business

I ADAL kräver varje organisation som du begär åtkomst-token från en separat instans av AuthenticationContext .In ADAL, every organization that you request access tokens from requires a separate instance of the AuthenticationContext. I MSAL är detta inte längre ett krav.In MSAL, this is no longer a requirement. Du kan ange från vilken myndighet du vill begära en token som en del av din obevakade eller interaktiva begäran.You can specify the authority from which you want to request a token as part of your silent or interactive request.

Migrera från auktoritets verifiering till kända myndigheterMigrate from authority validation to known authorities

MSAL har inte någon flagga för att aktivera eller inaktivera verifiering av utfärdare.MSAL does not have a flag to enable or disable authority validation. Verifiering av auktoritet är en funktion i ADAL och i tidiga versioner av MSAL som förhindrar din kod från att begära token från en potentiellt skadlig auktoritet.Authority validation is a feature in ADAL, and in the early releases of MSAL, that prevents your code from requesting tokens from a potentially malicious authority. MSAL hämtar nu en lista över myndigheter som är kända för Microsoft och sammanfogar listan med de myndigheter som du har angett i konfigurationen.MSAL now retrieves a list of authorities known to Microsoft and merges that list with the authorities that you've specified in your configuration.

Tips

Om du är en Azure Business to Consumer-användare (B2C) innebär det att du inte längre behöver inaktivera verifiering av utfärdare.If you're an Azure Business to Consumer (B2C) user, this means you no longer have to disable authority validation. Inkludera i stället var och en av de Azure AD B2C principerna som stöds som utfärdare i din MSAL-konfiguration.Instead, include each of the your supported Azure AD B2C policies as authorities in your MSAL configuration.

Om du försöker använda en auktoritet som inte är känd för Microsoft, och som inte ingår i din konfiguration, får du en UnknownAuthorityException .If you attempt to use an authority that isn't known to Microsoft, and isn't included in your configuration, you will get an UnknownAuthorityException.

LoggningLogging

Du kan nu deklarativ Konfigurera loggning som en del av konfigurationen, så här:You can now declaratively configure logging as part of your configuration, like this:

"logging": {
  "pii_enabled": false,
  "log_level": "WARNING",
  "logcat_enabled": true
}

Migrera från UserInfo till kontoMigrate from UserInfo to Account

I ADAL AuthenticationResult tillhandahåller ett- UserInfo objekt som används för att hämta information om det autentiserade kontot.In ADAL, the AuthenticationResult provides a UserInfo object used to retrieve information about the authenticated account. Termen "användare", som avsåg en mänsklig-eller program varu agent, tillämpades på ett sätt som gjorde det svårt att kommunicera med att vissa appar har stöd för en enskild användare (oavsett om det gäller en mänsklig-eller program varu agent) som har flera konton.The term "user", which meant a human or software agent, was applied in a way that made it difficult to communicate that some apps support a single user (whether a human or software agent) that has multiple accounts.

Överväg ett bank konto.Consider a bank account. Du kan ha fler än ett konto på mer än ett finansiellt institut.You may have more than one account at more than one financial institution. När du öppnar ett konto tilldelas du (användaren) autentiseringsuppgifter, till exempel ett ATM-kort & PIN-kod, som används för att få åtkomst till saldot, faktura betalningar och så vidare för varje konto.When you open an account, you (the user) are issued credentials, such as an ATM Card & PIN, that are used to access your balance, bill payments, and so on, for each account. Dessa autentiseringsuppgifter kan endast användas på det finansiella institutet som utfärdade dem.Those credentials can only be used at the financial institution that issued them.

Med hjälp av analogt, t. ex. konton i ett finansiellt institut, kan konton i Microsoft Identity Platform nås med hjälp av autentiseringsuppgifter.By analogy, like accounts at a financial institution, accounts in the Microsoft identity platform are accessed using credentials. Dessa autentiseringsuppgifter är antingen registrerade med eller utfärdade av, Microsoft.Those credentials are either registered with, or issued by, Microsoft. Eller av Microsoft på uppdrag av en organisation.Or by Microsoft on behalf of an organization.

Om Microsofts identitets plattform skiljer sig från ett finansiellt institut är det i den här analoga fallet att Microsoft Identity Platform tillhandahåller ett ramverk som gör att en användare kan använda ett konto och dess associerade autentiseringsuppgifter för att få åtkomst till resurser som tillhör flera personer och organisationer.Where the Microsoft identity platform differs from a financial institution, in this analogy, is that the Microsoft identity platform provides a framework that allows a user to use one account, and its associated credentials, to access resources that belong to multiple individuals and organizations. Detta är som att kunna använda ett kort som utfärdats av en bank, men ännu en annan finansiell institution.This is like being able to use a card issued by one bank, at yet another financial institution. Detta fungerar eftersom alla organisationer i fråga använder Microsofts identitets plattform, vilket gör att ett konto kan användas i flera organisationer.This works because all of the organizations in question are using the Microsoft identity platform, which allows one account to be used across multiple organizations. Här är ett exempel:Here's an example:

Sam fungerar för Contoso.com men hanterar virtuella Azure-datorer som tillhör Fabrikam.com.Sam works for Contoso.com but manages Azure virtual machines that belong to Fabrikam.com. För att Sam ska kunna hantera virtuella datorer i Fabrikam måste han ha behörighet att komma åt dem.For Sam to manage Fabrikam's virtual machines, he needs to be authorized to access them. Den här åtkomsten kan beviljas genom att lägga till Sam-kontot i Fabrikam.com och beviljar sitt konto en roll som gör att han kan arbeta med de virtuella datorerna.This access can be granted by adding Sam's account to Fabrikam.com, and granting his account a role that allows him to work with the virtual machines. Detta gör du med Azure Portal.This would be done with the Azure portal.

Om du lägger till Sams Contoso.com-konto som en medlem i Fabrikam.com skulle det leda till att en ny post skapas i Fabrikam. com: s Azure Active Directory för Sam.Adding Sam's Contoso.com account as a member of Fabrikam.com would result in the creation of a new record in Fabrikam.com's Azure Active Directory for Sam. Sam-posten i Azure Active Directory kallas för ett användar objekt.Sam's record in Azure Active Directory is known as a user object. I det här fallet pekar användarobjektet tillbaka till Sams användar objekt i Contoso.com.In this case, that user object would point back to Sam's user object in Contoso.com. Sam: s Fabrikam User-objekt är den lokala åter givningen av Sam och används för att lagra information om det konto som är associerat med Sam i kontexten för Fabrikam.com.Sam's Fabrikam user object is the local representation of Sam, and would be used to store information about the account associated with Sam in the context of Fabrikam.com. I Contoso.com är Sam-titeln erfaren DevOps-konsult.In Contoso.com, Sam's title is Senior DevOps Consultant. I Fabrikam är Sam-titeln Contractor-Virtual datorer.In Fabrikam, Sam's title is Contractor-Virtual Machines. I Contoso.com är Sam inte ansvarigt eller auktoriserat för att hantera virtuella datorer.In Contoso.com, Sam is not responsible, nor authorized, to manage virtual machines. I Fabrikam.com är det bara jobb funktionen.In Fabrikam.com, that's his only job function. Sam har fortfarande bara en uppsättning autentiseringsuppgifter för att hålla reda på, vilka är de autentiseringsuppgifter som utfärdats av Contoso.com.Yet Sam still only has one set of credentials to keep track of, which are the credentials issued by Contoso.com.

När ett lyckat acquireToken anrop görs visas en referens till ett IAccount objekt som kan användas i senare acquireTokenSilent förfrågningar.Once a successful acquireToken call is made, you will see a reference to an IAccount object that can be used in later acquireTokenSilent requests.

IMultiTenantAccountIMultiTenantAccount

Om du har en app som har åtkomst till anspråk om ett konto från var och en av de klienter där kontot visas, kan du omvandla IAccount objekt till IMultiTenantAccount .If you have an app that accesses claims about an account from each of the tenants in which the account is represented, you can cast IAccount objects to IMultiTenantAccount. Det här gränssnittet innehåller en karta över ITenantProfiles , som ställts in efter klient-ID, som gör att du kan komma åt de anspråk som tillhör kontot i varje klient organisation som du har begärt en token från, i förhållande till det aktuella kontot.This interface provides a map of ITenantProfiles, keyed by tenant ID, that allows you to access the claims that belong to the account in each of the tenants you've requested a token from, relative to the current account.

Anspråk i roten av IAccount och IMultiTenantAccount innehåller alltid anspråk från hem klienten.The claims at the root of the IAccount and IMultiTenantAccount always contain the claims from the home tenant. Om du ännu inte har gjort en begäran om en token inom hem klienten, kommer den här samlingen att vara tom.If you have not yet made a request for a token within the home tenant, this collection will be empty.

Andra ändringarOther changes

Använd den nya AuthenticationCallbackUse the new AuthenticationCallback

// Existing ADAL Interface
public interface AuthenticationCallback<T> {

    /**
     * This will have the token info.
     *
     * @param result returns <T>
     */
    void onSuccess(T result);

    /**
     * Sends error information. This can be user related error or server error.
     * Cancellation error is AuthenticationCancelError.
     *
     * @param exc return {@link Exception}
     */
    void onError(Exception exc);
}
// New Interface for Interactive AcquireToken
public interface AuthenticationCallback {

    /**
     * Authentication finishes successfully.
     *
     * @param authenticationResult {@link IAuthenticationResult} that contains the success response.
     */
    void onSuccess(final IAuthenticationResult authenticationResult);

    /**
     * Error occurs during the authentication.
     *
     * @param exception The {@link MsalException} contains the error code, error message and cause if applicable. The exception
     *                  returned in the callback could be {@link MsalClientException}, {@link MsalServiceException}
     */
    void onError(final MsalException exception);

    /**
     * Will be called if user cancels the flow.
     */
    void onCancel();
}

// New Interface for Silent AcquireToken
public interface SilentAuthenticationCallback {

    /**
     * Authentication finishes successfully.
     *
     * @param authenticationResult {@link IAuthenticationResult} that contains the success response.
     */
    void onSuccess(final IAuthenticationResult authenticationResult);

    /**
     * Error occurs during the authentication.
     *
     * @param exception The {@link MsalException} contains the error code, error message and cause if applicable. The exception
     *                  returned in the callback could be {@link MsalClientException}, {@link MsalServiceException} or
     *                  {@link MsalUiRequiredException}.
     */
    void onError(final MsalException exception);
}

Migrera till de nya undantagenMigrate to the new exceptions

I ADAL finns en typ av undantag, AuthenticationException som innehåller en metod för att hämta ADALError Enum-värdet.In ADAL, there's one type of exception, AuthenticationException, which includes a method for retrieving the ADALError enum value. I MSAL finns det en hierarki med undantag och var och en har en egen uppsättning av tillhör ande specifika felkoder.In MSAL, there's a hierarchy of exceptions, and each has its own set of associated specific error codes.

UndantagException BeskrivningDescription
MsalArgumentException Utlöstes om ett eller flera argument för indata är ogiltiga.Thrown if one or more inputs arguments are invalid.
MsalClientException Genereras om felet är klient sidan.Thrown if the error is client side.
MsalDeclinedScopeException Utlöses om en eller flera begärda omfattningar nekades av servern.Thrown if one or more requested scopes were declined by the server.
MsalException Ett checkat standard undantag utlöstes av MSAL.Default checked exception thrown by MSAL.
MsalIntuneAppProtectionPolicyRequiredException Utlöses om MAMCA Protection-princip är aktive rad i resursen.Thrown if the resource has MAMCA protection policy enabled.
MsalServiceException Utlöstes om felet är Server sidan.Thrown if the error is server side.
MsalUiRequiredException Genereras om token inte kan uppdateras tyst.Thrown if the token can't be refreshed silently.
MsalUserCancelException Utlöses om användaren avbröt verifierings flödet.Thrown if the user canceled the authentication flow.

ADALError till MsalException-ÖversättningADALError to MsalException translation

Om du fångar de här felen i ADAL...If you're catching these errors in ADAL... ... fånga dessa MSAL-undantag:...catch these MSAL exceptions:
Ingen motsvarande ADALErrorNo equivalent ADALError MsalArgumentException
  • ADALError.ANDROIDKEYSTORE_FAILED
  • ADALError.AUTH_FAILED_USER_MISMATCH
  • ADALError.DECRYPTION_FAILED
  • ADALError.DEVELOPER_AUTHORITY_CAN_NOT_BE_VALIDED
  • ADALError.EVELOPER_AUTHORITY_IS_NOT_VALID_INSTANCE
  • ADALError.DEVELOPER_AUTHORITY_IS_NOT_VALID_URL
  • ADALError.DEVICE_CONNECTION_IS_NOT_AVAILABLE
  • ADALError.DEVICE_NO_SUCH_ALGORITHM
  • ADALError.ENCODING_IS_NOT_SUPPORTED
  • ADALError.ENCRYPTION_ERROR
  • ADALError.IO_EXCEPTION
  • ADALError.JSON_PARSE_ERROR
  • ADALError.NO_NETWORK_CONNECTION_POWER_OPTIMIZATION
  • ADALError.SOCKET_TIMEOUT_EXCEPTION
MsalClientException
Ingen motsvarande ADALErrorNo equivalent ADALError MsalDeclinedScopeException
  • ADALError.APP_PACKAGE_NAME_NOT_FOUND
  • ADALError.BROKER_APP_VERIFICATION_FAILED
  • ADALError.PACKAGE_NAME_NOT_FOUND
MsalException
Ingen motsvarande ADALErrorNo equivalent ADALError MsalIntuneAppProtectionPolicyRequiredException
  • ADALError.SERVER_ERROR
  • ADALError.SERVER_INVALID_REQUEST
MsalServiceException
  • ADALError.AUTH_REFRESH_FAILED_PROMPT_NOT_ALLOWED
MsalUiRequiredException
Ingen motsvarande ADALErrorNo equivalent ADALError MsalUserCancelException

ADAL-loggning till MSAL-loggningADAL Logging to MSAL Logging

// Legacy Interface
    StringBuilder logs = new StringBuilder();
    Logger.getInstance().setExternalLogger(new ILogger() {
            @Override
            public void Log(String tag, String message, String additionalMessage, LogLevel logLevel, ADALError errorCode) {
                logs.append(message).append('\n');
            }
        });
// New interface
  StringBuilder logs = new StringBuilder();
  Logger.getInstance().setExternalLogger(new ILoggerCallback() {
      @Override
      public void log(String tag, Logger.LogLevel logLevel, String message, boolean containsPII) {
          logs.append(message).append('\n');
      }
  });

// New Log Levels:
public enum LogLevel
{
    /**
     * Error level logging.
     */
    ERROR,
    /**
     * Warning level logging.
     */
    WARNING,
    /**
     * Info level logging.
     */
    INFO,
    /**
     * Verbose level logging.
     */
    VERBOSE
}