Activer l’authentification unique inter-applications sur Android à l’aide de MSAL

L’authentification unique (SSO) permet aux utilisateurs d’entrer leurs informations d’identification une seule fois et de les faire fonctionner automatiquement dans les applications. Il améliore l’expérience utilisateur et améliore la sécurité en réduisant le nombre de mots de passe que les utilisateurs doivent gérer, en réduisant le risque de fatigue des mots de passe et les vulnérabilités associées.

Les Plateforme d'identités Microsoft et les Microsoft Authentication Library (MSAL) vous aident à activer l’authentification unique dans votre suite d’applications. En activant la fonctionnalité Broker, vous pouvez étendre l’authentification unique sur l’ensemble de l’appareil.

Dans ce guide pratique, vous allez apprendre à configurer les kits de développement logiciel (SDK) utilisés par votre application pour fournir l’authentification unique à vos clients.

Prerequisites

Ce guide pratique suppose que vous savez comment :

  • Configurez votre application. Pour plus d’informations, consultez les instructions de création d’une application dans le didacticiel Android
  • Intégrer votre application à MSAL pour Android

Méthodes pour l’authentification unique

Il existe deux façons pour les applications utilisant MSAL pour Android d’obtenir l’authentification unique :

  • Via une application broker

  • Via le navigateur système

    Il est recommandé d’utiliser une application broker pour des avantages tels que l’authentification unique à l’échelle de l’appareil, la gestion des comptes et l’accès conditionnel. Toutefois, vos utilisateurs doivent télécharger des applications supplémentaires.

Authentification unique via l’authentification répartie

Nous vous recommandons d'utiliser l'un des répartiteurs d'authentification de Microsoft pour participer à l'authentification unique à l'échelle de l'appareil et pour répondre aux stratégies d'accès conditionnel de l'organisation. L’intégration à un répartiteur offre les avantages suivants :

  • Authentification unique de l’appareil
  • Accès conditionnel pour :
    • Protection des applications Intune
    • Inscription des appareils (Workplace Join)
    • Gestion des appareils mobiles
  • Gestion des comptes à l’échelle de l’appareil
    • via Android AccountManager & Paramètres du compte
    • « Compte professionnel » : type de compte personnalisé

Sur Android, le répartiteur d'authentification Microsoft est un composant inclus dans les applications Microsoft Authenticator, Intune Portail d'entreprise et Link to Windows apps.

Le diagramme suivant illustre la relation entre votre application, msAL et les répartiteurs d'authentification de Microsoft.

Diagramme montrant comment une application se rapporte à MSAL, aux applications broker et au gestionnaire de comptes Android.

Installation d’applications qui hébergent un répartiteur

Les applications d’hébergement de répartiteur peuvent être installées par le propriétaire de l’appareil à partir de son App Store (généralement Google Play Store) à tout moment. Toutefois, certaines API (ressources) sont protégées par des stratégies d’accès conditionnel qui nécessitent que les appareils soient :

  • Inscrit (a rejoint l’espace de travail) et/ou
  • Inscrits dans la Gestion des appareils ou
  • Inscrit dans Intune App Protection

Si l’appareil avec les exigences mentionnées ci-dessus ne dispose pas déjà d’une application broker installée, MSAL demande à l’utilisateur d’en installer un dès que l’application tente d’obtenir un jeton de manière interactive. L’application dirige ensuite l’utilisateur à travers les étapes permettant de rendre l’appareil conforme à la stratégie requise. S'il n'existe aucune exigence de stratégie ou si l'utilisateur se connecte avec compte Microsoft, l'installation de l'application Broker n'est pas nécessaire.

Effets de l’installation et de la désinstallation d’un répartiteur

Lorsqu’un répartiteur est installé

Lorsqu’un répartiteur est installé sur un appareil, toutes les demandes de jeton interactive (appels à acquireToken()) suivantes sont gérées par le répartiteur plutôt que localement par MSAL. Tout état SSO auquel MSAL avait précédemment accès n’est pas accessible au courtier. Par conséquent, l’utilisateur doit s’authentifier à nouveau ou sélectionner un compte dans la liste existante des comptes connus de l’appareil.

L’installation d’un répartiteur ne nécessite pas que l’utilisateur se reconnecte. Ce n’est que lorsque l’utilisateur devra résoudre un MsalUiRequiredException que la requête suivante sera envoyée au courtier. MsalUiRequiredException peut être levée pour plusieurs raisons et doit être résolue de manière interactive. Par exemple:

  • L’utilisateur a modifié le mot de passe associé à son compte.
  • Le compte de l’utilisateur ne répond plus à une stratégie d’accès conditionnel.
  • L’utilisateur a révoqué son consentement pour que l’application soit associée à son compte.

Répartiteurs multiples : si plusieurs répartiteurs sont installés sur un appareil, MSAL identifie le répartiteur actif seul pour terminer le processus d’authentification

Lorsqu’un répartiteur est désinstallé

S’il n’existe qu’une seule application d’hébergement broker installée et qu’elle est supprimée, l’utilisateur doit se reconnecter. La désinstallation du répartiteur actif supprime le compte et les jetons associés de l’appareil.

Si Microsoft Authenticator, Intune Portail d'entreprise ou Lier à Windows est désinstallé, l’utilisateur peut être invité à se connecter à nouveau.

Intégration avec un broker

Générer un URI de redirection pour un répartiteur

Vous devez inscrire un URI de redirection compatible avec le répartiteur. L’URI de redirection du répartiteur doit inclure le nom du package de votre application et la représentation codée en Base64 de la signature de votre application.

Le format de l’URI de redirection est : msauth://<yourpackagename>/<base64urlencodedsignature>

Vous pouvez utiliser keytool pour générer un hachage de signature codé en Base64 à l’aide des clés de signature de votre application, puis générer votre URI de redirection à l’aide de ce hachage.

Linux et macOS :

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Windows :

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

Une fois que vous avez généré un hachage de signature avec keytool, utilisez le portail Azure pour générer l'URI de redirection :

  1. Connectez-vous au Centre d’administration de Microsoft Entra au minimum en tant qu’Administrateur d’application cloud.
  2. Si vous avez accès à plusieurs tenants, utilisez l’icône Paramètres dans le menu supérieur pour basculer vers le tenant contenant l’enregistrement de l’application à partir du menu Répertoires + abonnements.
  3. Accédez à Entra ID>Inscriptions d’application.
  4. Sélectionnez votre application, puis sélectionnez Authentification>Ajouter une plateforme>Android.
  5. Dans le volet Configurer votre application Android qui s’ouvre, entrez le hachage signature que vous avez généré précédemment et un nom de package.
  6. Sélectionnez le bouton Configurer.

L’URI de redirection est généré pour vous et s’affiche dans le champ URI de redirection du volet de configuration Android.

Pour plus d’informations sur la signature de votre application, consultez Signer votre application dans le Guide de l’utilisateur Android Studio.

Configurer MSAL pour utiliser un répartiteur

Pour utiliser un répartiteur dans votre application, vous devez attester que vous avez configuré votre redirection de répartiteur. Par exemple, incluez à la fois votre URI de redirection activée pour le broker -- et indiquez que vous l’avez enregistrée -- en incluant les paramètres suivants dans votre fichier de configuration MSAL :

"redirect_uri" : "<yourbrokerredirecturi>",
"broker_redirect_uri_registered": true

MSAL communique avec le répartiteur de deux façons :

  • Service lié à un broker
  • Android AccountManager

MSAL utilise d’abord le service lié au répartiteur, car l’appel de ce service ne nécessite aucune autorisation Android. Si la liaison au service lié échoue, MSAL utilise l’API Android AccountManager. MSAL ne le fait que si votre application a déjà reçu l’autorisation "READ_CONTACTS" .

Si vous obtenez un message d’erreur MsalClientException avec le code d’erreur "BROKER_BIND_FAILURE", vous avez alors deux possibilités :

  • Demandez à l’utilisateur de désactiver l’optimisation de l’alimentation pour l’application Microsoft Authenticator et l’Portail d'entreprise Intune.
  • Demander à l’utilisateur d’accorder l’autorisation "READ_CONTACTS"

Vérifier l’intégration du broker

Il peut ne pas être immédiatement clair que l’intégration du répartiteur fonctionne, mais vous pouvez utiliser les étapes suivantes pour vérifier :

  1. Sur votre appareil Android, effectuez une demande à l’aide du répartiteur.
  2. Dans les paramètres de votre appareil Android, recherchez un compte nouvellement créé correspondant au compte avec lequel vous vous êtes authentifié. Le compte doit être de type Compte professionnel.

Vous pouvez supprimer le compte des paramètres si vous souhaitez répéter le test.

SSO via le navigateur du système

Les applications Android ont la possibilité d’utiliser le WEBVIEWnavigateur système ou les onglets personnalisés Chrome pour l’expérience utilisateur d’authentification. Si l’application n’utilise pas l’authentification répartie, elle doit utiliser le navigateur système plutôt que la vue web native pour obtenir l’authentification unique.

Agents d’autorisation

Le choix d’une stratégie spécifique pour les agents d’autorisation est important et constitue une fonctionnalité supplémentaire que les applications peuvent personnaliser. Nous vous recommandons d’utiliser « WEBVIEW ». Pour en savoir plus sur les autres valeurs de configuration (consultez Comprendre le fichier de configuration MSAL Android.

MSAL prend en charge l’autorisation à l’aide d’un WEBVIEW ou du navigateur système. L’image ci-dessous montre à quoi cela ressemble avec le WEBVIEW, ou le navigateur système avec CustomTabs ou sans CustomTabs :

Exemples de connexion MSAL

Implications de l’authentification unique

Si l’application utilise une stratégie WEBVIEW sans intégrer l’authentification déléguée à son application, les utilisateurs ne bénéficieront pas d’une expérience d’authentification unique à l’échelle de l’appareil ou entre les applications natives et les applications web.

Les applications peuvent être intégrées à MSAL pour utiliser l’autorisation BROWSER . Contrairement à WEBVIEW, BROWSER partagent les cookies avec le navigateur système par défaut, ce qui réduit le nombre de connexions nécessaires avec les applications web ou d’autres applications natives intégrant les onglets personnalisés.

Si l’application utilise MSAL avec un répartiteur comme Microsoft Authenticator, Intune Portail d'entreprise ou Link to Windows, les utilisateurs peuvent avoir une expérience d’authentification unique entre les applications s’ils ont une connexion active avec l’une des applications.

Note

MSAL avec broker utilise WebView et fournit l’authentification unique pour toutes les applications consommant la bibliothèque MSAL et participant à l’authentification répartie. L’état de l’authentification unique du répartiteur n’est pas étendu à d’autres applications qui n’utilisent pas MSAL.

VueWeb

Pour utiliser le WebView dans l’application, placez la ligne suivante dans le json de configuration d’application passé à MSAL :

"authorization_user_agent" : "WEBVIEW"

Lors de l’utilisation de WEBVIEW dans l’application, l’utilisateur se connecte directement à l’application. Les jetons sont conservés dans la sandbox de l’application et ne sont pas accessibles en dehors de l’espace de stockage des cookies de l’application. Par conséquent, l'utilisateur ne peut pas avoir d'expérience d'authentification unique entre les applications, sauf si les applications s'intègrent à l'application Microsoft Authenticator, Intune Portail d'entreprise ou Link to Windows.

Toutefois, WEBVIEW elle offre la possibilité de personnaliser l’apparence de l’interface utilisateur de connexion. Pour plus d’informations sur la façon d’effectuer cette personnalisation, consultez Android WebViews .

Browser

Nous vous recommandons d’utiliser WEBVIEW, même si nous proposons une option permettant d’utiliser le navigateur et une stratégie d’onglets personnalisées . Vous pouvez indiquer explicitement cette stratégie à l’aide de la configuration JSON suivante dans le fichier de configuration personnalisé :

"authorization_user_agent" : "BROWSER"

Utilisez cette approche pour fournir une expérience d’authentification unique via le navigateur de l’appareil. MSAL utilise un fichier jar de cookie partagé, qui permet à d’autres applications natives ou applications web d’obtenir l’authentification unique sur l’appareil à l’aide du cookie de session persistant défini par MSAL.

Heuristique de sélection du navigateur

Étant donné qu’il est impossible pour MSAL de spécifier le package de navigateur exact à utiliser sur chacun des larges éventails de téléphones Android, MSAL implémente une heuristique de sélection de navigateur qui tente de fournir la meilleure authentification unique inter-appareils.

MSAL récupère principalement le navigateur par défaut à partir du gestionnaire de package et vérifie s’il se trouve dans une liste testée de navigateurs sécurisés. Si ce n’est pas le cas, MSAL revient à utiliser la vue Web plutôt que de lancer un autre navigateur non par défaut à partir de la liste sécurisée. Le navigateur par défaut est sélectionné, qu’il prenne ou non en charge les onglets personnalisés. Si le navigateur prend en charge les onglets personnalisés, MSAL lance l’onglet personnalisé. Les onglets personnalisés ont une apparence proche d’une application WebView et autorisent la personnalisation de l’interface utilisateur de base. Pour en savoir plus , consultez les onglets personnalisés dans Android .

S’il n’existe aucun package de navigateur sur l’appareil, MSAL utilise l’application WebView. Si le paramètre par défaut de l’appareil n’est pas modifié, le même navigateur doit être lancé pour chaque connexion pour garantir l’expérience de l’authentification unique.

Navigateurs testés

Les navigateurs suivants ont été testés pour voir s’ils redirigent correctement vers le "redirect_uri" fichier de configuration spécifié :

Appareil Navigateur intégré Chrome Opéra Microsoft Edge Navigateur UC Firefox
Nexus 4 (API 17) pass pass Non applicable Non applicable Non applicable Non applicable
Samsung S7 (API 25) pass1 pass pass pass échec pass
Vivo (API 26) pass pass pass pass pass échec
Pixel 2 (API 26) pass pass pass pass échec pass
Oppo pass non applicable2 Non applicable Non applicable Non applicable Non applicable
OnePlus (API 25) pass pass pass pass échec pass
Nexus (API 28) pass pass pass pass échec pass
MI pass pass pass pass échec pass

1Le navigateur intégré de Samsung est Samsung Internet.
2Le navigateur par défaut ne peut pas être modifié à l’intérieur du paramètre d’appareil Oppo.

Étapes suivantes

Le mode d’appareil partagé pour les appareils Android vous permet de configurer un appareil Android afin qu’il puisse être facilement partagé par plusieurs employés.

Pour plus d’informations sur les applications broker, consultez :