Archivo de configuración de la biblioteca de autenticación de Microsoft para Android

La biblioteca de autenticación de Microsoft para Android (MSAL) se suministra con un archivo JSON de configuración predeterminada que se personaliza a fin de definir el comportamiento de la aplicación cliente pública para elementos como la autoridad predeterminada, las autoridades que se van a utilizar, etc.

Este artículo le ayudará a comprender los distintos valores del archivo de configuración y a especificar el archivo de configuración que utilizará 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 de la página Registros de aplicaciones
redirect_uri String URI de redireccionamiento de la aplicación de la página Registros de aplicaciones
broker_redirect_uri_registered Boolean No Valores posibles: true, false
authorities List<Authority> No Lista de autoridades que la aplicación necesita
authorization_user_agent AuthorizationAgent (enum) No Valores posibles: WEBVIEW, BROWSER
http HttpConfiguration No Configure HttpUrlConnectionconnect_timeout y read_timeout.
logging LoggingConfiguration No Especifica el nivel de detalle del registro. Entre las configuraciones opcionales se incluyen: pii_enabled, que toma un valor booleano, y log_level, que toma ERROR, WARNING, INFO o VERBOSE.

client_id

Identificador de cliente o identificador de aplicación creado al registrar la aplicación.

redirect_uri

URI de redireccionamiento registrado al registrar la aplicación. Si el URI de redireccionamiento es a una aplicación de agente, consulte URI de redireccionamiento para aplicaciones cliente públicas a fin de asegurarse de que está usando el formato de URI de redireccionamiento correcto para la aplicación de agente.

broker_redirect_uri_registered

Si quiere utilizar la autenticación con agente, la propiedad broker_redirect_uri_registered debe establecerse en true. En un escenario de autenticación con agente, si la aplicación no tiene el formato correcto para comunicarse con el agente tal y como se describe en URI de redirección para aplicaciones cliente públicas, la aplicación valida el URI de redirección y emite una excepción cuando se inicia.

autoridades

Lista de autoridades que conoce y en las que confía. Además de las autoridades aquí mencionadas, MSAL también consulta a Microsoft para obtener una lista de las nubes y autoridades que conoce Microsoft. En esta lista de autoridades, especifique el tipo de autoridad y cualquier parámetro opcional adicional, como "audience", que se debe adaptar a la audiencia de la aplicación en función del registro de la aplicación. A continuación se muestra una lista de autoridades de ejemplo:

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

Asignación de una autoridad de Microsoft Entra y audiencia a puntos de conexión de la Plataforma de identidad de Microsoft

Tipo Público Id. de inquilino Authority_Url Punto de conexión resultante Notas
Microsoft Entra ID AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common es un alias de inquilino de donde se encuentra la cuenta. Por ejemplo, un inquilino de Microsoft Entra específico o el sistema de cuentas de 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 Con este punto de conexión solo se pueden usar cuentas de Microsoft Entra. Las cuentas de Microsoft pueden ser miembros de organizaciones. Para adquirir un token mediante un cuenta de Microsoft para un recurso de una organización, especifique el inquilino de la organización del que desea el token.
Microsoft Entra ID PersonalMicrosoftAccount https://login.microsoftonline.com/consumers Solo las cuentas de Microsoft pueden usar este punto de conexión.
B2C Consulte Punto de conexión resultante https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Solo las cuentas presentes en el inquilino contoso.onmicrosoft.com pueden adquirir un token. En este ejemplo, la directiva de B2C forma parte de la ruta de la dirección URL de la autoridad.

Nota:

No se puede habilitar ni deshabilitar la validación de la autoridad en MSAL. Las autoridades son conocidas por usted como el desarrollador tal como se especifica mediante la configuración o son conocidas por Microsoft mediante metadatos. Si MSAL recibe una solicitud de un token para una autoridad desconocida, se produce una MsalClientException de tipo UnknownAuthority. La autenticación con agente no funciona para Azure AD B2C.

Propiedades de la autoridad

Propiedad Tipo de datos Obligatorio Notas
type String Refleja la audiencia o el tipo de cuenta a la que se dirige la aplicación. Valores posibles: AAD, B2C
audience Object No Solo se aplica cuando type=AAD. Especifica la identidad a la que se dirige la aplicación. Utilice el valor del registro de la aplicación
authority_url String Solo es necesario cuando type=B2C. Opcional para type=AAD. Especifica la dirección URL de la autoridad o la directiva que debe usar la aplicación.
default boolean Se requiere un único "default":true cuando se especifica una o varias autoridades.

Propiedades de la audiencia

Propiedad Tipo de datos Obligatorio Notas
type String Especifica la audiencia a la que la aplicación quiere dirigirse. Valores posibles: AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount, AzureADMultipleOrgs, AzureADMyOrg
tenant_id String Solo es necesario cuando "type":"AzureADMyOrg". Opcional para otros valores type. Puede ser un dominio de inquilino como contoso.com o un identificador de inquilino como 00001111-aaaa-2222-bbbb-3333cccc4444

authorization_user_agent

Indica si se va a usar un WebView incrustado, o el explorador predeterminado en el dispositivo, al iniciar sesión en una cuenta o al autorizar el acceso a un recurso.

Valores posibles:

  • WEBVIEW: Utiliza el objeto WebView insertado.
  • BROWSER: Usa el explorador predeterminado en el dispositivo.

multiple_clouds_supported

Para clientes que admiten varias nubes nacionales, especifique true. La Plataforma de identidad de Microsoft se 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 con la que se ha iniciado sesión examinando la autoridad asociada con AuthenticationResult. Tenga en cuenta que AuthenticationResult no proporciona la dirección del punto de conexión nacional específica de la nube del recurso para el que solicita un token.

broker_redirect_uri_registered

Valor booleano que indica si está usando un URI de redireccionamiento de agente compatible con el agente de identidad de Microsoft. Establézcalo en false si no desea usar el agente en la aplicación.

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

http

Configure los valores globales para los tiempos de espera de HTTP, como:

Propiedad Tipo de datos 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 boolean No Si se van a emitir datos personales
log_level string No Qué mensajes de registro se van a generar. Entre los niveles de registro se incluyen ERROR,WARNING,INFO y VERBOSE.
logcat_enabled boolean No Indica si se va a generar el catálogo de registros, además de la interfaz de registro

account_mode

Especifica el número de cuentas que se pueden usar en la aplicación a la vez. Los valores posibles son:

  • MULTIPLE (Valor predeterminado)
  • SINGLE

Si se construye PublicClientApplication mediante un modo de cuenta que no coincide con esta configuración, se producirá una excepción.

Para más información sobre las diferencias entre una o varias cuentas, consulte Single and multiple account apps (Aplicaciones de una o varias cuentas).

browser_safelist

Lista de exploradores permitidos que son compatibles con MSAL. Estos exploradores controlan correctamente los redireccionamientos a intentos personalizados. Puede agregar elementos a esta lista. El valor predeterminado se proporciona en la configuración predeterminada que se muestra a continuación. ``

Archivo de configuración de MSAL predeterminado

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 que proporcione 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": [
        "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
    }
  ]
}

Ejemplo de configuración básica

En el ejemplo siguiente se muestra una configuración básica que especifica el identificador de cliente, el URI de redireccionamiento, si se ha registrado 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
    }
  ]
}

Uso de un archivo de configuración

  1. Cree un archivo de configuración. Se recomienda crear un archivo de configuración predeterminado en res/raw/auth_config.json. Pero puede colocarlo en cualquier lugar que desee.

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

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