Fichier de configuration android Microsoft Authentication Library

L'Microsoft Authentication Library Android (MSAL) est fourni avec un fichier JSON de configuration par défaut que vous personnalisez pour définir le comportement de votre application cliente publique pour des éléments tels que l'autorité par défaut, les autorités que vous utiliserez, etc.

Cet article vous aidera à comprendre les différents paramètres du fichier de configuration et à 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 Remarques
client_id String Oui ID client de votre application à partir de la page Inscription de l’application
redirect_uri String Oui URI de redirection de votre application à partir de la page Inscription d’application
broker_redirect_uri_registered Boolean Non Valeurs possibles : true, false
authorities Autorité de liste<> Non Liste des autorités dont votre application a besoin
authorization_user_agent AuthorizationAgent (énumération) Non Valeurs possibles : DEFAULT, , BROWSERWEBVIEW
http HttpConfiguration Non Configurer HttpUrlConnectionconnect_timeout et read_timeout
logging journalisationConfiguration Non Spécifie le niveau de détail de journalisation. Les configurations facultatives incluent : pii_enabled, qui prend une valeur booléenne et log_level, qui prend ERROR, WARNING, INFOou VERBOSE.

client_id

ID client ou ID d’application créé lorsque vous avez inscrit votre application.

redirect_uri

URI de redirection que vous avez inscrit lorsque vous avez inscrit votre application. Si l’URI de redirection est vers une application broker, reportez-vous à l’URI de redirection pour les applications clientes publiques pour vous assurer que vous utilisez le format d’URI de redirection correct pour votre application broker.

broker_redirect_uri_registered

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

authorities

Liste des autorités connues et approuvées par vous. En plus des autorités répertoriées ici, MSAL interroge également Microsoft pour obtenir la liste des clouds et des autorités connues pour Microsoft. Dans cette liste d’autorités, spécifiez le type de l’autorité et tous les paramètres facultatifs supplémentaires tels que "audience", qui doivent s’aligner sur l’audience de votre application en fonction de l’inscription de votre 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 Microsoft Entra’autorité et l’audience aux points de terminaison Plateforme d'identités Microsoft

Type Public visé ID du locataire Authority_Url Point de terminaison résultant Remarques
Microsoft Entra ID (système d'identification de Microsoft) Azure AD et compte Microsoft personnel https://login.microsoftonline.com/common common est un alias de locataire pour lequel se trouve le compte. Par exemple, un locataire Microsoft Entra spécifique ou le système compte Microsoft.
Microsoft Entra ID (système d'identification de Microsoft) 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 du locataire, peut être utilisé comme ID de locataire.
Microsoft Entra ID (système d'identification de Microsoft) AzureADMultipleOrgs https://login.microsoftonline.com/organizations Seuls les comptes Microsoft Entra peuvent être utilisés avec ce point de terminaison. Microsoft comptes peuvent être membres d’organisations. Pour acquérir un jeton à l’aide d’un compte Microsoft pour une ressource dans une organisation, spécifiez le locataire de l’organisation à partir duquel vous souhaitez le jeton.
Microsoft Entra ID (système d'identification de Microsoft) Compte Microsoft personnel https://login.microsoftonline.com/consumers Seuls les comptes Microsoft peuvent utiliser ce point de terminaison.
Business to Consumer (B2C) Voir le 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 d’URL de l’autorité.

Note

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

Propriétés de l’autorité

Propriété Type de données Obligatoire Remarques
type String Oui Met en miroir l’audience ou le type de compte que votre application cible. Valeurs possibles : AAD, B2C
audience Object Non S’applique uniquement lorsque type=AAD. Spécifie l’identité que votre application cible. Utiliser la valeur de votre inscription d’application
authority_url String Oui Obligatoire uniquement lorsque type=B2C. Facultatif pour type=AAD. Spécifie l’URL ou la stratégie d’autorité que votre application doit utiliser
default booléen Oui Un seul "default":true est requis quand une ou plusieurs autorités sont spécifiées.

Propriétés de l’audience

Propriété Type de données Obligatoire Remarques
type String Oui Spécifie l’audience que votre application souhaite cibler. Valeurs possibles : AzureADandPersonalMicrosoftAccount, , PersonalMicrosoftAccountAzureADMultipleOrgs,AzureADMyOrg
tenant_id String Oui Obligatoire uniquement quand "type":"AzureADMyOrg". Facultatif pour d’autres type valeurs. Il peut s’agir d’un domaine de locataire tel que contoso.com, ou d’un ID de locataire tel que aaaabbbb-0000-cccc-1111-dddd2222eeee

authorization_user_agent

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

Valeurs possibles :

  • DEFAULT: préfère le navigateur système. Utilise la vue web incorporée si un navigateur n’est pas disponible sur l’appareil.
  • WEBVIEW: utilisez la vue web incorporée.
  • BROWSER: utilise le navigateur par défaut sur l’appareil.

multiple_clouds_supported

Pour les clients qui prennent en charge plusieurs clouds nationaux, spécifiez true. Le Plateforme d'identités Microsoft redirigera automatiquement 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 au AuthenticationResult. Notez que le AuthenticationResult point de terminaison national spécifique au cloud ne fournit pas l’adresse de point de terminaison spécifique 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 compatible avec identity broker Microsoft. Définissez la valeur false si vous ne souhaitez pas utiliser le répartiteur dans votre application.

Si vous utilisez l'autorité de Microsoft Entra avec audience définie "MicrosoftPersonalAccount"sur , le répartiteur ne sera pas utilisé.

http

Configurez les paramètres globaux pour les délais d’expiration HTTP, tels que :

Propriété Type de données Obligatoire Remarques
connect_timeout int Non Temps en millisecondes
read_timeout int Non Temps en millisecondes

exploitation forestière

Les paramètres globaux suivants sont destinés à la journalisation :

Propriété Type de données Obligatoire Remarques
pii_enabled booléen Non Indique s’il faut émettre des données personnelles
log_level ficelle Non Les messages de journalisation à générer. Les niveaux de journal pris en charge incluent ERROR,WARNINGINFO et VERBOSE.
logcat_enabled booléen Non Indique s’il faut générer un journal de cat en plus de l’interface de journalisation

account_mode

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

  • MULTIPLE (valeur par défaut)
  • SINGLE

La construction d’un PublicClientApplication mode compte qui ne correspond pas à ce paramètre entraîne une exception.

Pour plus d’informations sur les différences entre les comptes uniques et multiples, consultez Applications mono-comptes et plusieurs comptes.

browser_safelist

Liste verte des navigateurs compatibles avec MSAL. Ces navigateurs gèrent correctement les redirections vers des intentions personnalisées. Vous pouvez ajouter à 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": [
        "7fmdu...2NDJg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "45"
    },
    {
      "browser_package_name": "com.android.chrome",
      "browser_signature_hashes": [
        "7fmdu...2NDJg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6...idpVQ=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6...idpVQ=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "57"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2f...4O1Xgg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "4.0"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2f...O1Xgg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.cloudmosa.puffinFree",
      "browser_signature_hashes": [
        "1WqG8...Mn8Ag=="
      ],
      "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": [
        "RMVoX...bkyyQ=="
      ],
      "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, si une redirection broker est inscrite et une liste d’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 mettre n’importe où que vous le souhaitez.

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

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