Arquivo de configuração da Biblioteca de Autenticação Microsoft do Android

A Biblioteca de Autenticação Microsoft (MSAL) do Android é fornecida com um arquivo JSON de configuração padrão que você personaliza para definir o comportamento do seu aplicativo cliente público para coisas como a autoridade padrão, quais autoridades você usará e assim por diante.

Este artigo irá ajudá-lo a entender as várias configurações no arquivo de configuração e como especificar o arquivo de configuração a ser usado em seu aplicativo baseado em MSAL.

Definições de configuração

Definições gerais

Property Tipo de Dados Necessário Notas
client_id Cadeia (de carateres) Sim ID do cliente do seu aplicativo na página de registro do aplicativo
redirect_uri Cadeia (de carateres) Sim URI de redirecionamento do seu aplicativo na página de registro do aplicativo
broker_redirect_uri_registered Boolean Não Valores possíveis: true, false
authorities Autoridade de lista<> Não A lista de autoridades de que seu aplicativo precisa
authorization_user_agent AuthorizationAgent (enum) Não Valores possíveis: WEBVIEW, BROWSER
http HttpConfiguration Não Configurar HttpUrlConnectionconnect_timeout e read_timeout
logging LoggingConfiguration Não Especifica o nível de detalhe do registro. As configurações opcionais incluem: pii_enabled, que tem um valor booleano e log_level, que leva ERROR, WARNING, INFO, ou VERBOSE.

client_id

A ID do cliente ou a ID do aplicativo que foi criada quando você registrou seu aplicativo.

redirect_uri

O URI de redirecionamento que você registrou quando registrou seu aplicativo. Se o URI de redirecionamento for para um aplicativo de broker, consulte Redirecionar URI para aplicativos cliente públicos para garantir que você esteja usando o formato de URI de redirecionamento correto para seu aplicativo broker.

broker_redirect_uri_registered

Se você quiser usar a autenticação intermediada, a broker_redirect_uri_registered propriedade deve ser definida como true. Em um cenário de autenticação intermediada, se o aplicativo não estiver no formato correto para falar com o broker, conforme descrito em Redirecionar URI para aplicativos cliente públicos, o aplicativo validará seu URI de redirecionamento e lançará uma exceção quando for iniciado.

autoridades

A lista de autoridades que são conhecidas e confiáveis por você. Além das autoridades listadas aqui, a MSAL também consulta a Microsoft para obter uma lista de nuvens e autoridades conhecidas pela Microsoft. Nessa lista de autoridades, especifique o tipo de autoridade e quaisquer parâmetros opcionais adicionais, como "audience", que devem ser alinhados com o público do seu aplicativo com base no registro do aplicativo. Segue-se um exemplo de lista 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"
    }
}

Mapeie a autoridade do Microsoft Entra & audiência para os pontos de extremidade da plataforma de identidade da Microsoft

Type Audiência ID de Inquilino do Authority_Url Ponto final resultante Notas
Microsoft Entra ID AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common é um alias de locatário para onde a conta está. Como um locatário específico do Microsoft Entra ou o sistema de conta da Microsoft.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Apenas as contas presentes no contoso.com podem adquirir um token. Qualquer domínio verificado, ou o GUID do locatário, pode ser usado como o ID do locatário.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Somente contas do Microsoft Entra podem ser usadas com esse ponto de extremidade. As contas da Microsoft podem ser membros de organizações. Para adquirir um token usando uma conta da Microsoft para um recurso em uma organização, especifique o locatário organizacional do qual você deseja o token.
Microsoft Entra ID PersonalMicrosoftAccount https://login.microsoftonline.com/consumers Somente contas da Microsoft podem usar esse ponto de extremidade.
B2C Consulte o ponto final resultante https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Somente as contas presentes no locatário contoso.onmicrosoft.com podem adquirir um token. Neste exemplo, a política B2C faz parte do caminho da URL da Autoridade.

Nota

A validação de autoridade não pode ser ativada e desativada no MSAL. As autoridades são conhecidas por você como o desenvolvedor, conforme especificado por meio da configuração, ou conhecidas pela Microsoft por meio de metadados. Se a MSAL receber uma solicitação de um token para uma autoridade desconhecida, um MsalClientException do tipo UnknownAuthority resultará. A autenticação intermediada não funciona para o Azure AD B2C.

Propriedades da autoridade

Property Tipo de dados Necessário Notas
type Cadeia (de carateres) Sim Espelha o público ou o tipo de conta que seus alvos de aplicativo. Valores possíveis: AAD, B2C
audience Object Não Só se aplica quando type=AAD. Especifica a identidade a que seu aplicativo se destina. Usar o valor do registro do seu aplicativo
authority_url Cadeia (de carateres) Sim Obrigatório apenas quando type=B2C. Opcional para type=AAD. Especifica a autoridade, URL ou política que seu aplicativo deve usar
default boolean Sim É necessária uma única "default":true quando é especificada uma ou mais autoridades.

Propriedades do público

Property Tipo de Dados Necessário Notas
type Cadeia (de carateres) Sim Especifica o público que seu aplicativo deseja atingir. Valores possíveis: AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount, AzureADMultipleOrgs, AzureADMyOrg
tenant_id Cadeia (de carateres) Sim Necessário apenas quando "type":"AzureADMyOrg". Opcional para outros type valores. Pode ser um domínio de locatário, como contoso.com, ou uma ID de locatário, como 00001111-aaaa-2222-bbbb-3333cccc4444

authorization_user_agent

Indica se deve ser usada uma exibição da Web incorporada ou o navegador padrão no dispositivo ao entrar em uma conta ou autorizar o acesso a um recurso.

Valores possíveis:

  • WEBVIEW: Use a visualização da Web incorporada.
  • BROWSER: Usa o navegador padrão no dispositivo.

multiple_clouds_supported

Para clientes que suportam várias nuvens nacionais, especifique true. A plataforma de identidade da Microsoft redirecionará automaticamente para a nuvem nacional correta durante a autorização e o resgate do token. Você pode determinar a nuvem nacional da conta conectada examinando a autoridade associada ao AuthenticationResult. Observe que o AuthenticationResult não fornece o endereço de ponto de extremidade específico da nuvem nacional do recurso para o qual você solicita um token.

broker_redirect_uri_registered

Um booleano que indica se você está usando um URI de redirecionamento in-broker compatível com o Microsoft Identity broker. Defina como false se você não quiser usar o broker em seu aplicativo.

Se você estiver usando o Microsoft Entra Authority com o Audience definido como "MicrosoftPersonalAccount", o broker não será usado.

http

Defina configurações globais para tempos limite HTTP, como:

Property Tipo de dados Necessário Notas
connect_timeout número inteiro Não Tempo em milissegundos
read_timeout número inteiro Não Tempo em milissegundos

registos

As seguintes configurações globais são para registro:

Property Tipo de Dados Necessário Notas
pii_enabled boolean Não Emissão ou não de dados pessoais
log_level string Não Quais mensagens de log para saída. Os níveis de log suportados incluem ERROR,WARNING,INFO, e VERBOSE.
logcat_enabled boolean Não Se a saída deve ser feita para registrar cat, além da interface de registro

account_mode

Especifica quantas contas podem ser usadas em seu aplicativo ao mesmo tempo. Os valores possíveis são:

  • MULTIPLE (Padrão)
  • SINGLE

A construção de um PublicClientApplication modo de conta que não corresponda a essa configuração resultará em uma exceção.

Para obter mais informações sobre as diferenças entre contas únicas e múltiplas, consulte Aplicativos de conta única e múltipla.

browser_safelist

Uma lista de permissões de navegadores compatíveis com o MSAL. Esses navegadores lidam corretamente com redirecionamentos para intenções personalizadas. Você pode adicionar a esta lista. O padrão é fornecido na configuração padrão mostrada abaixo. ``

O arquivo de configuração padrão do MSAL

A configuração padrão do MSAL que acompanha o MSAL é mostrada abaixo. Você pode ver a versão mais recente no GitHub.

Essa configuração é complementada por valores fornecidos. Os valores fornecidos substituem os padrões.

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

Exemplo de configuração básica

O exemplo a seguir ilustra uma configuração básica que especifica a ID do cliente, o URI de redirecionamento, se um redirecionamento de broker está registrado e uma 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
    }
  ]
}

Como usar um arquivo de configuração

  1. Crie um arquivo de configuração. Recomendamos que você crie seu arquivo de configuração personalizado no res/raw/auth_config.json. Mas você pode colocá-lo em qualquer lugar que desejar.

  2. Diga à MSAL onde procurar sua configuração ao construir o PublicClientApplication. Por exemplo:

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