Archivo de configuración de Android Biblioteca de autenticación de Microsoft

Android Biblioteca de autenticación de Microsoft (MSAL) se incluye con un archivo JSON de configuración predeterminado que personaliza para definir el comportamiento de la aplicación cliente pública para cosas como la autoridad predeterminada, que usarán las autoridades, etc.

Este artículo le ayudará a comprender las distintas opciones de configuración del archivo de configuración y a especificar el archivo de configuración que se va a usar en la aplicación basada en MSAL.

Parámetros de configuración

Configuración general

Propiedad Tipo de datos Obligatorio Notas
client_id String Identificador de cliente de la aplicación desde la página Registro de aplicaciones
redirect_uri String URI de redirección de la aplicación desde la página Registro de aplicaciones
broker_redirect_uri_registered Booleano No Valores posibles: true, false
authorities Entidad de lista<> No La lista de autoridades que necesita la aplicación
authorization_user_agent AuthorizationAgent (enumeración) No Valores posibles: DEFAULT, BROWSER, WEBVIEW
http HttpConfiguration No Configurar HttpUrlConnectionconnect_timeout y read_timeout
logging LoggingConfiguration No Especifica el nivel de detalle de registro. Las configuraciones opcionales incluyen: pii_enabled, que toma un valor booleano y log_level, que toma ERROR, WARNING, INFOo VERBOSE.

ID de cliente

Identificador de cliente o id. de aplicación que se creó al registrar la aplicación.

URI de redirección

El URI de redireccionamiento que registró al registrar la aplicación. Si el URI de redirección es a una aplicación de agente, consulte URI de redirección para las aplicaciones cliente públicas para asegurarse de que usa el formato de URI de redirección correcto para la aplicación de agente.

broker_redirect_uri_registered

Si desea usar la autenticación asincrónica, la broker_redirect_uri_registered propiedad debe establecerse trueen . En un escenario de autenticación asincrónica, si la aplicación no tiene el formato correcto para comunicarse con el agente, como se describe en URI de redirección para aplicaciones cliente públicas, la aplicación valida el URI de redirección y produce una excepción cuando se inicia.

authorities

Lista de autoridades conocidas y de confianza por usted. Además de las autoridades enumeradas aquí, MSAL también consulta Microsoft para obtener una lista de nubes y autoridades conocidas Microsoft. En esta lista de autoridades, especifique el tipo de autoridad y los parámetros opcionales adicionales, como "audience", que deben alinearse con el público de la aplicación en función del registro de la aplicación. A continuación se muestra una lista de ejemplos de autoridades:

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

Asignar Microsoft Entra autoridad y audiencia a Plataforma de identidad de Microsoft puntos de conexión

Tipo Público Id. de inquilino Authority_Url Punto de conexión resultante Notas
Microsoft Entra ID Azure AD y cuenta personal de Microsoft https://login.microsoftonline.com/common common es un alias de inquilino para donde está la cuenta. Por ejemplo, un inquilino de Microsoft Entra específico o el sistema cuenta Microsoft.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Solo las cuentas presentes en contoso.com pueden adquirir un token. Cualquier dominio comprobado, o el GUID del inquilino, se puede usar como identificador de inquilino.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Solo se pueden usar Microsoft Entra cuentas con este punto de conexión. Microsoft cuentas pueden ser miembros de organizaciones. Para adquirir un token mediante un cuenta Microsoft para un recurso de una organización, especifique el inquilino organizativo desde el que desea el token.
Microsoft Entra ID Cuenta personal de Microsoft https://login.microsoftonline.com/consumers Solo Microsoft cuentas pueden usar este punto de conexión.
B2C (Negocio a Consumidor) Consulte Punto de conexión resultante. https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Solo las cuentas presentes en el inquilino de contoso.onmicrosoft.com pueden adquirir un token. En este ejemplo, la directiva B2C forma parte de la ruta de acceso de dirección URL de autoridad.

Nota:

La validación de autoridad no se puede habilitar ni deshabilitar en MSAL. Las autoridades se conocen como el desarrollador tal como se especifica a través de la configuración o se sabe que Microsoft a través de metadatos. Si MSAL recibe una solicitud de un token a una autoridad desconocida, se genera un MsalClientException de tipo UnknownAuthority . La autenticación asincrónica no funciona para Azure AD B2C.

Propiedades de autoridad

Propiedad Tipo de dato Obligatorio Notas
type String Refleja el público o el tipo de cuenta a los que se dirige la aplicación. Valores posibles: AAD, B2C
audience Objeto No Solo se aplica cuando type=AAD. Especifica la identidad a la que se dirige la aplicación. Uso del valor del registro de la aplicación
authority_url String Solo se requiere cuando type=B2C. Opcional para type=AAD. Especifica la dirección URL o directiva de autoridad que debe usar la aplicación.
default booleano Se requiere una única "default":true cuando se especifica una o varias autoridades.

Propiedades de audiencia

Propiedad Tipo de datos Obligatorio Notas
type String Especifica la audiencia a la que quiere dirigirse la aplicación. Valores posibles: AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount, AzureADMultipleOrgs, AzureADMyOrg
tenant_id String Solo se requiere cuando "type":"AzureADMyOrg". Opcional para otros type valores. Puede ser un dominio de inquilino como contoso.com, o un identificador de inquilino, como aaaabbbb-0000-cccc-1111-dddd2222eeee

authorization_user_agent

Indica si se debe usar una vista web insertada o el explorador predeterminado en el dispositivo, al iniciar sesión en una cuenta o autorizar el acceso a un recurso.

Valores posibles:

  • DEFAULT: prefiere el explorador del sistema. Usa la vista web insertada si un explorador no está disponible en el dispositivo.
  • WEBVIEW: use la vista web insertada.
  • BROWSER: usa el explorador predeterminado en el dispositivo.

multiple_clouds_supported

Para los clientes que admiten varias nubes nacionales, especifique true. El Plataforma de identidad de Microsoft redirigirá automáticamente a la nube nacional correcta durante la autorización y el canje de tokens. Puede determinar la nube nacional de la cuenta de inicio de sesión examinando la autoridad asociada a AuthenticationResult. Tenga en cuenta que AuthenticationResult no proporciona la dirección del punto de conexión específico de la nube nacional del recurso para el que solicita un token.

broker_redirect_uri_registered

Valor booleano que indica si usa un URI de redirección de Microsoft Agente de identidad compatible con el agente en agente. false Establézcalo en si no desea usar el agente dentro de la aplicación.

Si usa la entidad de Microsoft Entra con audiencia establecida "MicrosoftPersonalAccount"en , no se usará el agente.

HTTP

Configure las opciones globales para los tiempos de espera http, como:

Propiedad Tipo de dato Obligatorio Notas
connect_timeout int No Tiempo en milisegundos
read_timeout int No Tiempo en milisegundos

logging

La siguiente configuración global es para el registro:

Propiedad Tipo de datos Obligatorio Notas
pii_enabled booleano No Si se van a emitir datos personales
log_level string No Qué mensajes de registro se van a generar. Los niveles de registro admitidos incluyen ERROR,WARNINGINFO, y VERBOSE.
logcat_enabled booleano No Indica si se va a generar el registro de cat además de la interfaz de registro.

account_mode

Especifica cuántas cuentas se pueden usar dentro de la aplicación a la vez. Los valores posibles son:

  • MULTIPLE (Valor predeterminado)
  • SINGLE

La construcción de un PublicClientApplication objeto mediante un modo de cuenta que no coincide con esta configuración producirá una excepción.

Para obtener más información sobre las diferencias entre una y varias cuentas, consulte Aplicaciones únicas y varias cuentas.

browser_safelist

Lista de permitidos de exploradores compatibles con MSAL. Estos exploradores controlan correctamente las redirecciones a intenciones personalizadas. Puede agregar a esta lista. El valor predeterminado se proporciona en la configuración predeterminada que se muestra a continuación. ``

El archivo de configuración predeterminado de MSAL

A continuación se muestra la configuración predeterminada de MSAL que se incluye con MSAL. Puede ver la versión más reciente en GitHub.

Esta configuración se complementa con los valores que proporcione. Los valores proporcionados invalidan los valores predeterminados.

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

Configuración básica de ejemplo

En el ejemplo siguiente se muestra una configuración básica que especifica el identificador de cliente, el URI de redirección, si se registra un redireccionamiento de agente y una lista de autoridades.

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

Cómo usar un archivo de configuración

  1. Cree un archivo de configuración. Se recomienda crear el archivo de configuración personalizado en res/raw/auth_config.json. Pero puedes ponerlo en cualquier lugar que quieras.

  2. Indique a MSAL dónde buscar la configuración al construir .PublicClientApplication Por ejemplo:

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