Bibliothèque d’authentification Microsoft pour Android

Le Microsoft Authentication Library (MSAL) pour Android est une bibliothèque qui permet aux applications Android d’authentifier les utilisateurs avec des Plateforme d'identités Microsoft (anciennement Azure Active Directory) et d’accéder aux API web protégées à l’aide des protocoles OAuth2 et OpenID Connect. MSAL Android permet aux développeurs d’acquérir des jetons de sécurité à partir du Plateforme d'identités Microsoft pour authentifier les utilisateurs et accéder aux API web sécurisées pour leurs applications Android.

MSAL Android prend en charge plusieurs scénarios d’authentification, tels que l’authentification unique (SSO), l’accès conditionnel et l’authentification répartie. Il vous permet de cibler facilement plusieurs identités, notamment Microsoft Entra ID (comptes professionnels et scolaires), comptes Microsoft (Outlook.com, hotmail.com et plusieurs autres) ou Azure AD B2C (comptes sociaux et locaux).

Les instructions fournies ici sont destinées à documenter les fonctionnalités courantes liées à MSAL Android. Si vous recherchez plus d'aide pour commencer à utiliser Microsoft Entra ID, Microsoft Comptes ou Azure AD B2C, consultez la documentation Plateforme d'identités Microsoft. Si vous recherchez plus d'informations sur l'API Microsoft Graph, consultez les documents Microsoft Graph.

Prise en charge de l’authentification native dans MSAL

MSAL Android vous permet également d’implémenter une expérience d’authentification native avec des flux personnalisables de bout en bout dans les applications mobiles. Avec l’authentification native, les utilisateurs sont guidés par le biais d’un parcours d’inscription et de connexion riche, natif et mobile sans quitter l’application. La fonctionnalité d’authentification native est disponible uniquement pour les applications mobiles sur l’ID externe pour les clients.

Migrer depuis Azure Active Directory Authentication Library (ADAL)

La bibliothèque d’authentification Azure Active Directory (ADAL) pour Android a été déconseillée en juin 2023. Si vous ou votre organisation utilisez la bibliothèque d'authentification (ADAL) Azure Active Directory pour Android, vous devez migrer vers MSAL Android pour éviter de mettre la sécurité de votre application en danger. Microsoft Authentication Library (MSAL) pour Android est la bibliothèque prise en charge qui peut être utilisée pour l’authentification et l’acquisition de jetons.

Prise en main de MSAL Android

Pour utiliser MSAL Android dans votre application, vous devez :

Étant donné que MSAL Android prend en charge les expériences d’authentification déléguées par le navigateur et natives, suivez les étapes décrites dans les didacticiels suivants en fonction de votre scénario.

Spécifications

  • Version minimale du SDK 16+
  • Kit de développement logiciel (SDK) cible version 33+

Étape 1 : Déclarer une dépendance sur MSAL

Ajoutez à build.gradle de votre application :

dependencies {
    implementation 'com.microsoft.identity.client:msal:4.9.+'
}

Veuillez également ajouter les lignes suivantes à la section des dépôts de votre script Gradle :

maven { 
    url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1' 
}

Étape 2 : Créer votre fichier de configuration MSAL

Authentification déléguée par navigateur :

Créez votre fichier de configuration en tant que ressource « brute » dans votre projet. Reportez-vous à celui-ci à l’aide de l’identificateur de ressource généré lors de la construction d’une PublicClientApplication instance. Si vous inscrivez votre application dans le centre d’administration Microsoft Entra pour la première fois, vous serez également fourni avec le fichier de configuration MSAL Android détaillé.

{
  "client_id" : "<YOUR_CLIENT_ID>",
  "redirect_uri" : "msauth://<YOUR_PACKAGE_NAME>/<YOUR_BASE64_URL_ENCODED_PACKAGE_SIGNATURE>",
  "broker_redirect_uri_registered": true,
}

Dans le redirect_uri, le <YOUR_PACKAGE_NAME> fait référence au nom du package renvoyé par la méthode context.getPackageName(). Ce nom de package est identique à celui application_id défini dans votre build.gradle fichier.

Les valeurs ci-dessus sont la configuration minimale requise. MSAL s’appuie sur les valeurs par défaut fournies avec la bibliothèque pour tous les autres paramètres. Reportez-vous à la documentation du fichier de configuration MSAL Android pour comprendre les valeurs par défaut de la bibliothèque.

Authentification native :

  1. Cliquez avec le bouton droit sur res et choisissez Nouveau > répertoire. Saisissez raw comme le nouveau nom de répertoire et cliquez sur OK.
  2. Dans ce nouveau dossier (app > src > main > res > raw), créez un fichier JSON appelé auth_config_native_auth.json et collez le modèle MSAL Configuration suivant :
{ 
  "client_id": "Enter_the_Application_Id_Here", 
  "authorities": [ 
    { 
      "type": "CIAM", 
      "authority_url": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/Enter_the_Tenant_Subdomain_Here.onmicrosoft.com/" 
    } 
  ], 
  "challenge_types": ["oob"], 
  "logging": { 
    "pii_enabled": false, 
    "log_level": "INFO", 
    "logcat_enabled": true 
  } 
 }

Étape 3 : Configurer l'AndroidManifest.xml pour l’authentification déléguée par navigateur

  1. Demander les autorisations suivantes via le manifeste Android
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  1. Configurer un filtre d’intention dans le manifeste Android à l’aide de votre URI de redirection

L’échec d’inclure un filtre d’intention correspondant à l’URI de redirection que vous spécifiez via la configuration entraîne un échec de demande de jeton interactif.

    <!--Intent filter to capture authorization code response from the default browser on the device calling back to our app after interactive sign in -->
    <activity
        android:name="com.microsoft.identity.client.BrowserTabActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="msauth"
                android:host="<YOUR_PACKAGE_NAME>"
                android:path="/<YOUR_BASE64_ENCODED_PACKAGE_SIGNATURE>" />
        </intent-filter>
    </activity>

Pour plus d’informations sur les problèmes courants liés à l’URI de redirection, reportez-vous au FAQ MSAL Android .

ProGuard

MSAL utilise des informations de réflexion et de type générique stockées dans des .class fichiers au moment de l’exécution pour prendre en charge différentes fonctionnalités liées à la persistance et à la sérialisation. La prise en charge par les bibliothèques de la minification et de l’obfuscation est limitée. Une configuration par défaut est fournie avec cette bibliothèque ; envoyez un problème si vous rencontrez des problèmes.

Recommendation

MSAL est une bibliothèque de sécurité. Il contrôle la façon dont les utilisateurs se connectent et accèdent aux services. Nous vous recommandons de toujours prendre la dernière version de notre bibliothèque dans votre application lorsque vous pouvez. Nous utilisons le contrôle de version sémantique pour vous permettre de contrôler le risque de mise à jour de votre application. Par exemple, le fait de télécharger systématiquement le dernier numéro de version mineure (par ex. x.y.x) vous garantit de bénéficier des toutes dernières améliorations de sécurité et de fonctionnalités, tout en ayant l’assurance que la surface de notre API n’a pas changé. Vous pouvez toujours voir les dernières versions et notes de publication sous l’onglet Versions de GitHub.