Fichier de configuration de la bibliothèque d’authentification Microsoft Authentication Android

La bibliothèque d’authentification Microsoft (MSAL) Android est fourni avec un fichier JSON de configuration par défaut que vous personnalisez pour définir le comportement de votre application cliente publique, notamment l’autorité par défaut, les autorités que vous allez utiliser, etc.

Cet article vous permet de comprendre les différents paramètres inclus dans ce fichier de configuration et la manière de spécifier le fichier de configuration à utiliser dans votre application MSAL.

Paramètres de configuration

Paramètres généraux :

Propriété Type de données Obligatoire Notes
client_id String Oui ID client de votre application indiqué dans la page d’inscription d’application
redirect_uri String Oui URI de redirection de votre application indiqué dans la page d’inscription d’application
broker_redirect_uri_registered Boolean Non Valeurs possibles : true, false
authorities List<Authority> Non Liste des autorités dont votre application a besoin
authorization_user_agent AuthorizationAgent (enum) Non Valeurs possibles : WEBVIEW, BROWSER
http HttpConfiguration Non Configurez HttpUrlConnection connect_timeout et read_timeout
logging LoggingConfiguration Non Spécifie le niveau de détail de la journalisation. Les configurations facultatives incluent : pii_enabled, qui prend une valeur booléenne et log_level, qui prend ERROR, WARNING, INFO ou VERBOSE.

client_id

ID client ou ID d’application créé lors de l’inscription de votre application.

redirect_uri

URI de redirection que vous avez inscrit lorsque vous avez inscrit votre application. Si l’URI de redirection pointe vers une application de répartiteur, reportez-vous à URI de redirection pour les applications clientes publiques pour veiller à utiliser le bon format d’URI de redirection pour votre application de répartiteur.

broker_redirect_uri_registered

Si vous souhaitez utiliser l'authentification répartie, la propriété broker_redirect_uri_registered doit être définie sur true. Dans un scénario d'authentification répartie, si l'application n'est pas au bon format pour communiquer avec le répartiteur, comme décrit dans URI de redirection pour les applications clientes publiques, l'application valide votre URI de redirection et renvoie une exception lorsqu'elle démarre.

authorities

Liste des autorités que vous connaissez et que vous approuvez. En plus des autorités listées ici, MSAL interroge aussi Microsoft pour obtenir la liste des clouds et autorités connus de Microsoft. Dans cette liste d’autorités, spécifiez le type d’autorité et tous les paramètres facultatifs supplémentaires, comme "audience", à adapter au public de votre application en fonction de votre inscription d’application. Voici un exemple de liste d’autorités :

// Example AzureAD and Personal Microsoft Account
{
    "type": "AAD",
    "audience": {
        "type": "AzureADandPersonalMicrosoftAccount"
    },
    "default": true // Indicates that this is the default to use if not provided as part of the acquireToken call
},
// Example AzureAD My Organization
{
    "type": "AAD",
    "audience": {
        "type": "AzureADMyOrg",
        "tenant_id": "contoso.com" // Provide your specific tenant ID here
    }
},
// Example AzureAD Multiple Organizations
{
    "type": "AAD",
    "audience": {
        "type": "AzureADMultipleOrgs"
    }
},
//Example PersonalMicrosoftAccount
{
    "type": "AAD",
    "audience": {
        "type": "PersonalMicrosoftAccount"
    }
}

Mapper l’autorité et l’audience Microsoft Entra aux points de terminaison de la plateforme d’identités Microsoft

Type Public visé ID client Authority_Url Point de terminaison obtenu Notes
Microsoft Entra ID AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common est un alias de locataire pour l’emplacement du compte. Par exemple, un locataire Microsoft Entra spécifique ou le système de compte Microsoft.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Seuls les comptes présents dans contoso.com peuvent acquérir un jeton. Tout domaine vérifié, ou GUID de locataire, peut être utilisé comme ID de locataire.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Seuls les comptes Microsoft Entra peuvent être utilisés avec ce point de terminaison. Les comptes Microsoft peuvent être membres d’organisations. Pour acquérir un jeton à l’aide d’un compte Microsoft pour une ressource au sein d’une organisation, spécifiez le locataire organisationnel à partir duquel vous souhaitez obtenir le jeton.
Microsoft Entra ID PersonalMicrosoftAccount https://login.microsoftonline.com/consumers Seuls les comptes Microsoft peuvent utiliser ce point de terminaison.
B2C Consultez Point de terminaison obtenu. https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Seuls les comptes présents dans le locataire contoso.onmicrosoft.com peuvent acquérir un jeton. Dans cet exemple, la stratégie B2C fait partie du chemin de l’URL de l’autorité.

Notes

La validation des autorités ne peut pas être activée et désactivée dans MSAL. Les autorités sont soit connues par vous en tant que développeur comme spécifié par le biais de la configuration, soit connues de Microsoft par le biais des métadonnées. Si MSAL reçoit une demande de jeton d’une autorité inconnue, une MsalClientException de type UnknownAuthority est levée. L'authentification répartie ne fonctionne pas pour Azure AD B2C.

Propriétés des autorités

Propriété Type de données Obligatoire Notes
type String Oui Reflète le public ou type de compte ciblé par votre application. Valeurs possibles : AAD, B2C
audience Object Non S’applique uniquement quand le type est AAD. Spécifie l’identité ciblée par votre application. Utilisez la valeur issue de votre inscription d’application.
authority_url String Oui Obligatoire uniquement quand le type est B2C. Facultatif pour type=AAD. Spécifie l’URL de l’autorité ou la stratégie que votre application doit utiliser.
default boolean Oui Une seule propriété "default":true est exigée quand une ou plusieurs autorités sont spécifiées.

Propriétés du public

Propriété Type de données Obligatoire Notes
type String Oui Spécifie le public que votre application souhaite cibler. Valeurs possibles : AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount, AzureADMultipleOrgs, AzureADMyOrg
tenant_id String Oui Obligatoire uniquement avec "type":"AzureADMyOrg". Facultatif pour les autres valeurs de type. Il peut s’agir d’un domaine de locataire, comme contoso.com, ou d’un ID de locataire comme aaaabbbb-0000-cccc-1111-dddd2222eeee.

authorization_user_agent

Indique d’utiliser ou non une vue web incorporée, ou le navigateur installé par défaut sur l’appareil, lors de la connexion d’un compte ou de l’autorisation de l’accès à une ressource.

Valeurs possibles :

  • WEBVIEW: Utilise la vue web incorporée.
  • BROWSER: Utilise le navigateur par défaut installé sur l’appareil.

multiple_clouds_supported

Pour les clients qui prennent en charge plusieurs clouds nationaux, spécifiez true. La plateforme d’identités Microsoft est alors automatiquement redirigée vers le cloud national approprié pendant l’autorisation et l’échange de jetons. Vous pouvez déterminer le cloud national du compte connecté en examinant l’autorité associée à AuthenticationResult. Notez que AuthenticationResult ne fournit pas l’adresse du point de terminaison propre au cloud national de la ressource pour laquelle vous demandez un jeton.

broker_redirect_uri_registered

Valeur booléenne qui indique si vous utilisez un URI de redirection dans un répartiteur compatible avec le répartiteur Microsoft Identity. Affectez la valeur false si vous ne voulez pas utiliser le répartiteur au sein de votre application.

Si vous utilisez l’autorité Microsoft Entra avec l’audience définie sur "MicrosoftPersonalAccount", le répartiteur n’est pas utilisé.

http

Configurez des paramètres globaux pour les délais d’expiration HTTP, comme :

Propriété Type de données Obligatoire Notes
connect_timeout int Non Durée en millisecondes
read_timeout int Non Durée en millisecondes

journalisation

Les paramètres globaux suivants concernent la propriété logging :

Propriété Type de données Obligatoire Notes
pii_enabled boolean Non Indique d’émettre ou non des données personnelles.
log_level string Non Indique quels messages de journal générer. Les niveaux de journalisation pris en charge sont les suivants : ERROR, WARNING, INFO et VERBOSE.
logcat_enabled boolean Non Indique de générer une sortie vers logcat en plus de l’interface de journalisation.

account_mode

Spécifie le nombre de comptes pouvant être utilisés à la fois dans votre application. Les valeurs possibles sont les suivantes :

  • MULTIPLE (valeur par défaut)
  • SINGLE

La construction d’une PublicClientApplication à l’aide d’un mode de compte qui ne correspond pas à ce paramètre lève une exception.

Pour plus d’informations sur les différences entre les monocomptes et les multicomptes, consultez Applications clientes publiques monocomptes et multicomptes.

browser_safelist

Liste verte des navigateurs compatibles avec MSAL. Ces navigateurs gèrent correctement les redirections vers des intentions personnalisées. Vous pouvez ajouter des éléments à cette liste. La valeur par défaut est fournie dans la configuration par défaut indiquée ci-dessous. ``

Fichier de configuration MSAL par défaut

La configuration MSAL par défaut fournie avec MSAL est indiquée ci-dessous. Vous pouvez voir la dernière version sur GitHub.

Cette configuration est complétée par les valeurs que vous fournissez. Les valeurs que vous fournissez remplacent les valeurs par défaut.

{
  "authorities": [
    {
      "type": "AAD",
      "audience": {
        "type": "AzureADandPersonalMicrosoftAccount"
      },
      "default": true
    }
  ],
  "authorization_user_agent": "DEFAULT",
  "multiple_clouds_supported": false,
  "broker_redirect_uri_registered": false,
  "http": {
    "connect_timeout": 10000,
    "read_timeout": 30000
  },
  "logging": {
    "pii_enabled": false,
    "log_level": "WARNING",
    "logcat_enabled": false
  },
  "shared_device_mode_supported": false,
  "account_mode": "MULTIPLE",
  "browser_safelist": [
    {
      "browser_package_name": "com.android.chrome",
      "browser_signature_hashes": [
        "aB1cD2eF3gH4iJ5kL6-mN7oP8qR=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "45"
    },
    {
      "browser_package_name": "com.android.chrome",
      "browser_signature_hashes": [
        "cD2eF3gH4iJ5kL6mN7-oP8qR9sT=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "eF3gH4iJ5kL6mN7oP8-qR9sT0uV=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "gH4iJ5kL6mN7oP8qR9-sT0uV1wX=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "57"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "iJ5kL6mN7oP8qR9sT0-uV1wX2yZ=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "4.0"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "kL6mN7oP8qR9sT0uV1-wX2yZ3aB=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.cloudmosa.puffinFree",
      "browser_signature_hashes": [
        "mN7oP8qR9sT0uV1wX2-yZ3aB4dE="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.duckduckgo.mobile.android",
      "browser_signature_hashes": [
        "S5Av4...jAi4Q=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.explore.web.browser",
      "browser_signature_hashes": [
        "BzDzB...YHCag=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.ksmobile.cb",
      "browser_signature_hashes": [
        "lFDYx...7nouw=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.microsoft.emmx",
      "browser_signature_hashes": [
        "Ivy-R...A6fVQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.opera.browser",
      "browser_signature_hashes": [
        "FIJ3I...jWJWw=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.opera.mini.native",
      "browser_signature_hashes": [
        "TOTyH...mmUYQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "mobi.mgeek.TunnyBrowser",
      "browser_signature_hashes": [
        "RMVoXgjjgyjjmbj4578fcbkyyQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "org.mozilla.focus",
      "browser_signature_hashes": [
        "L72dT...q0oYA=="
      ],
      "browser_use_customTab" : false
    }
  ]
}

Exemple de configuration de base

L’exemple suivant illustre une configuration de base qui spécifie l’ID client, l’URI de redirection, l’inscription ou non d’une redirection répartiteur et la liste des autorités.

{
  "client_id" : "00001111-aaaa-2222-bbbb-3333cccc4444",
  "redirect_uri" : "msauth://com.microsoft.identity.client.sample.local/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
  "broker_redirect_uri_registered": true,
  "authorities" : [
    {
      "type": "AAD",
      "audience": {
        "type": "AzureADandPersonalMicrosoftAccount"
      }
      "default": true
    }
  ]
}

Comment utiliser un fichier de configuration

  1. Créez un fichier de configuration. Nous vous recommandons de créer votre fichier de configuration personnalisé dans res/raw/auth_config.json. Mais vous pouvez le placer à l’endroit qui vous convient.

  2. Indiquez à MSAL où rechercher votre configuration quand vous construisez PublicClientApplication. Par exemple :

    //On Worker Thread
    IMultipleAccountPublicClientApplication sampleApp = null; 
    sampleApp = new PublicClientApplication.createMultipleAccountPublicClientApplication(getApplicationContext(), R.raw.auth_config);