File di configurazione di Android Microsoft Authentication Library

Android Microsoft Authentication Library (MSAL) viene fornito con un file JSON di configurazione predefinito personalizzato per definire il comportamento dell'app client pubblica per elementi come l'autorità predefinita, le autorità che verranno usate e così via.

Questo articolo illustra le varie impostazioni nel file di configurazione e come specificare il file di configurazione da usare nell'app basata su MSAL.

Impostazioni di configurazione

Impostazioni generali

Proprietà Tipo di dati Richiesto Note
client_id Stringa ID client dell'app dalla pagina Registrazione dell'applicazione
redirect_uri Stringa URI di reindirizzamento dell'app dalla pagina Registrazione dell'applicazione
broker_redirect_uri_registered Boolean No Valori possibili: true, false
authorities Autorità elenco<> No Elenco delle autorità necessarie per l'app
authorization_user_agent AuthorizationAgent (enum) No Valori possibili: WEBVIEW, BROWSER
http HttpConfiguration No Configurare HttpUrlConnectionconnect_timeout e read_timeout
logging LoggingConfiguration No Specifica il livello di dettaglio della registrazione. Le configurazioni facoltative includono: pii_enabled, che accetta un valore booleano e log_level, che accetta ERROR, WARNINGINFO, o VERBOSE.

client_id

ID client o ID app creato al momento della registrazione dell'applicazione.

redirect_uri

URI di reindirizzamento registrato durante la registrazione dell'applicazione. Se l'URI di reindirizzamento si trova in un'app broker, vedere URI di reindirizzamento per le app client pubbliche per assicurarsi di usare il formato URI di reindirizzamento corretto per l'app broker.

broker_redirect_uri_registered

Se si vuole usare l'autenticazione negoziata, la broker_redirect_uri_registered proprietà deve essere impostata su true. In uno scenario di autenticazione negoziata, se l'applicazione non è nel formato corretto per comunicare con il broker come descritto in URI di reindirizzamento per le app client pubbliche, l'applicazione convalida l'URI di reindirizzamento e genera un'eccezione all'avvio.

Autorità

L'elenco delle autorità che sono note e attendibili da voi. Oltre alle autorità elencate qui, MSAL interroga Microsoft anche per ottenere un elenco di cloud e autorità note a Microsoft. In questo elenco di autorità specificare il tipo di autorità e gli eventuali parametri facoltativi aggiuntivi, "audience"ad esempio , che devono essere allineati al pubblico dell'app in base alla registrazione dell'app. Di seguito è riportato un elenco di fonti di esempio:

// 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"
    }
}

Eseguire il mapping dell'autorità e del pubblico di Microsoft Entra agli endpoint di Microsoft Identity Platform

Type Destinatari ID tenant Authority_Url Endpoint risultante Note
Microsoft Entra ID AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common è un alias tenant per dove si trova l'account. Ad esempio un tenant Microsoft Entra specifico o il sistema di account Microsoft.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Solo gli account presenti in contoso.com possono acquisire un token. Qualsiasi dominio verificato o GUID del tenant può essere usato come ID tenant.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Solo gli account Microsoft Entra possono essere usati con questo endpoint. Gli account Microsoft possono essere membri delle organizzazioni. Per acquisire un token usando un account Microsoft per una risorsa in un'organizzazione, specificare il tenant dell'organizzazione da cui si vuole il token.
Microsoft Entra ID PersonalMicrosoftAccount https://login.microsoftonline.com/consumers Solo gli account Microsoft possono usare questo endpoint.
B2C Vedere Endpoint risultante https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Solo gli account presenti nel tenant contoso.onmicrosoft.com possono acquisire un token. In questo esempio, il criterio B2C fa parte del percorso URL autorità.

Nota

La convalida dell'autorità non può essere abilitata e disabilitata in MSAL. Le autorità sono note all'utente come sviluppatore come specificato tramite la configurazione o note a Microsoft tramite metadati. Se MSAL riceve una richiesta per un token a un'autorità sconosciuta, un di tipo UnknownAuthority restituisce MsalClientException risultati. L'autenticazione negoziata non funziona per Azure AD B2C.

Proprietà dell'autorità

Proprietà Tipo di dati Richiesto Note
type Stringa Rispecchia il gruppo di destinatari o il tipo di account di destinazione dell'app. Valori possibili: AAD, B2C
audience Object No Si applica solo quando type=AAD. Specifica l'identità di destinazione dell'app. Usare il valore della registrazione dell'app
authority_url Stringa Obbligatorio solo quando type=B2C. Facoltativo per type=AAD. Specifica l'URL dell'autorità o i criteri che l'app deve usare
default boolean Quando si specifica una o più autorità, è necessario un singolo "default":true oggetto .

Proprietà gruppo di destinatari

Proprietà Tipo di dati Richiesto Note
type Stringa Specifica il gruppo di destinatari che l'app vuole specificare come destinazione. Valori possibili: AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount, AzureADMultipleOrgs, AzureADMyOrg
tenant_id Stringa Obbligatorio solo quando "type":"AzureADMyOrg". Facoltativo per altri type valori. Può trattarsi di un dominio tenant, contoso.comad esempio , o di un ID tenant, ad esempio 00001111-aaaa-2222-bbbb-3333cccc4444

authorization_user_agent

Indica se usare una visualizzazione Web incorporata o il browser predefinito nel dispositivo, quando si accede a un account o si autorizza l'accesso a una risorsa.

Valori possibili:

  • WEBVIEW: usare la visualizzazione Web incorporata.
  • BROWSER: usa il browser predefinito nel dispositivo.

multiple_clouds_supported

Per i client che supportano più cloud nazionali, specificare true. Microsoft Identity Platform verrà quindi reindirizzato automaticamente al cloud nazionale corretto durante l'autorizzazione e il riscatto dei token. È possibile determinare il cloud nazionale dell'account connesso esaminando l'autorità associata a AuthenticationResult. Si noti che AuthenticationResult non fornisce l'indirizzo endpoint specifico del cloud nazionale della risorsa per cui si richiede un token.

broker_redirect_uri_registered

Valore booleano che indica se si usa un URI di reindirizzamento in broker compatibile con Microsoft Identity Broker. Impostare su false se non si vuole usare il broker all'interno dell'app.

Se si usa Microsoft Entra Authority con Audience impostato su "MicrosoftPersonalAccount", il broker non verrà usato.

http

Configurare le impostazioni globali per i timeout HTTP, ad esempio:

Proprietà Tipo di dati Richiesto Note
connect_timeout int No Tempo in millisecondi
read_timeout int No Tempo in millisecondi

registrazione

Per la registrazione sono disponibili le impostazioni globali seguenti:

Proprietà Tipo di dati Richiesto Note
pii_enabled boolean No Indica se generare dati personali
log_level string No Messaggi di log per l'output. I livelli di log supportati includono ERROR,WARNINGINFO e VERBOSE.
logcat_enabled boolean No Indica se eseguire l'output per registrare cat oltre all'interfaccia di registrazione

account_mode

Specifica il numero di account che possono essere usati all'interno dell'app alla volta. I valori possibili sono:

  • MULTIPLE (impostazione predefinita)
  • SINGLE

La creazione di un PublicClientApplication oggetto usando una modalità account che non corrisponde a questa impostazione genererà un'eccezione.

Per altre informazioni sulle differenze tra account singoli e multipli, vedere App con account singoli e multipli.

browser_safelist

Elenco di browser compatibili con MSAL. Questi browser gestiscono correttamente i reindirizzamenti alle finalità personalizzate. È possibile aggiungere a questo elenco. Il valore predefinito è specificato nella configurazione predefinita illustrata di seguito. ``

File di configurazione MSAL predefinito

La configurazione MSAL predefinita fornita con MSAL è illustrata di seguito. È possibile visualizzare la versione più recente in GitHub.

Questa configurazione è integrata dai valori forniti dall'utente. I valori specificati sostituiscono le impostazioni predefinite.

{
  "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": [
        "7fmduHKTdHHrlMvldlEqAIlSfii1tl35bxj1OXN5Ve8c4lU6URVu4xtSHc3BVZxS6WWJnxMDhIfQN0N0K2NDJg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "45"
    },
    {
      "browser_package_name": "com.android.chrome",
      "browser_signature_hashes": [
        "7fmduHKTdHHrlMvldlEqAIlSfii1tl35bxj1OXN5Ve8c4lU6URVu4xtSHc3BVZxS6WWJnxMDhIfQN0N0K2NDJg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6pR_AO_Q2Vu8Iep-4AsiKNnUHQxu0FaDHO_qa178GByKybdT_BuE8_dYk99G5Uvx_gdONXAOO2EaXidpVQ=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6pR_AO_Q2Vu8Iep-4AsiKNnUHQxu0FaDHO_qa178GByKybdT_BuE8_dYk99G5Uvx_gdONXAOO2EaXidpVQ=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "57"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2fbt8vkzj7SJ8aD5jc4xJFTDFntdkMrYXL3itsvqY1QIw-dZozdop5rgKNxjbrQAd5nntAGpgh9w84O1Xgg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "4.0"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2fbt8vkzj7SJ8aD5jc4xJFTDFntdkMrYXL3itsvqY1QIw-dZozdop5rgKNxjbrQAd5nntAGpgh9w84O1Xgg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.cloudmosa.puffinFree",
      "browser_signature_hashes": [
        "1WqG8SoK2WvE4NTYgr2550TRhjhxT-7DWxu6C_o6GrOLK6xzG67Hq7GCGDjkAFRCOChlo2XUUglLRAYu3Mn8Ag=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.duckduckgo.mobile.android",
      "browser_signature_hashes": [
        "S5Av4cfEycCvIvKPpKGjyCuAE5gZ8y60-knFfGkAEIZWPr9lU5kA7iOAlSZxaJei08s0ruDvuEzFYlmH-jAi4Q=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.explore.web.browser",
      "browser_signature_hashes": [
        "BzDzBVSAwah8f_A0MYJCPOkt0eb7WcIEw6Udn7VLcizjoU3wxAzVisCm6bW7uTs4WpMfBEJYf0nDgzTYvYHCag=="
      ],
      "browser_use_customTab" : false
    },

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

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

    {
      "browser_package_name": "com.opera.browser",
      "browser_signature_hashes": [
        "FIJ3IIeqB7V0qHpRNEpYNkhEGA_eJaf7ntca-Oa_6Feev3UkgnpguTNV31JdAmpEFPGNPo0RHqdlU0k-3jWJWw=="
      ],
      "browser_use_customTab" : false
    },

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

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

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

Esempio di configurazione di base

Nell'esempio seguente viene illustrata una configurazione di base che specifica l'ID client, l'URI di reindirizzamento, se un reindirizzamento broker è registrato e un elenco di autorità.

{
  "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
    }
  ]
}

Come usare un file di configurazione

  1. Creare un file di configurazione. È consigliabile creare il file di configurazione personalizzato in res/raw/auth_config.json. Ma puoi metterlo ovunque desideri.

  2. Indicare a MSAL dove cercare la configurazione quando si costruisce .PublicClientApplication Ad esempio:

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