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
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.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);