Arquivo de configuração do Android Biblioteca do Microsoft Authenticator

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

Este artigo ajudará você 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

Configurações gerais

Propriedade Tipo de dados Obrigatório Observações
client_id String Sim A ID do cliente do aplicativo na página de registro do aplicativo
redirect_uri String Sim URI de Redirecionamento do aplicativo na página de registro do aplicativo
broker_redirect_uri_registered booleano No Valores possíveis: true, false
authorities Autoridade de Lista<> No A lista de autoridades de que seu aplicativo precisa
authorization_user_agent AuthorizationAgent (enum) No Valores possíveis: DEFAULT, , BROWSERWEBVIEW
http HttpConfiguration No Configurar HttpUrlConnectionconnect_timeout e read_timeout
logging Configuração de registro No Especifica o nível de detalhes de registro em log. As configurações opcionais incluem: pii_enabled, que usa um valor booliano e log_level, o que leva ERROR, WARNING, INFOou VERBOSE.

client_id

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

URI de redirecionamento

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

broker_redirect_uri_registered

Se você quiser usar a autenticação agenciada, a broker_redirect_uri_registered propriedade deverá ser definida como true. Em um cenário de autenticação agenciada, se o aplicativo não estiver no formato correto para falar com o agente, conforme descrito no URI de Redirecionamento para aplicativos cliente públicos, o aplicativo valida seu URI de redirecionamento e gera uma exceção quando ele é iniciado.

authorities

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

Mapear Microsoft Entra autoridade e audiência para plataforma de identidade da Microsoft pontos de extremidade

Tipo Audiência ID do locatário Authority_Url Ponto de extremidade resultante Observações
Microsoft Entra ID AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common é um alias de locatário para onde a conta está. Como um locatário Microsoft Entra específico ou o sistema de conta Microsoft.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Somente contas presentes em contoso.com podem adquirir um token. Qualquer domínio verificado, ou o GUID do locatário, pode ser usado como a ID do locatário.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Somente contas Microsoft Entra podem ser usadas com esse ponto de extremidade. Microsoft contas podem ser membros de organizações. Para adquirir um token usando um conta Microsoft para um recurso em uma organização, especifique o locatário organizacional do qual você deseja o token.
Microsoft Entra ID Conta pessoal da Microsoft https://login.microsoftonline.com/consumers Somente contas Microsoft podem usar esse ponto de extremidade.
B2C Consulte o ponto de extremidade 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.

Note

A validação de autoridade não pode ser habilitada e desabilitada na MSAL. As autoridades são conhecidas por você como o desenvolvedor, conforme especificado por meio da configuração ou conhecidas por Microsoft por meio de metadados. Se a MSAL receber uma solicitação de um token para uma autoridade desconhecida, um MsalClientException dos resultados do tipo UnknownAuthority . A autenticação agenciada não funciona para Azure AD B2C.

Propriedades de autoridade

Propriedade Tipo de dados Obrigatório Observações
type String Sim Espelha o público-alvo ou o tipo de conta dos destinos do aplicativo. Valores possíveis: AAD, B2C
audience Objeto No Aplica-se somente quando type=AAD. Especifica a identidade que seu aplicativo tem como destino. Usar o valor do registro do aplicativo
authority_url String Sim Necessário somente quando type=B2C. Opcional para type=AAD. Especifica a URL ou a política de autoridade que seu aplicativo deve usar
default boolean Sim Um único "default":true é necessário quando uma ou mais autoridades são especificadas.

Propriedades do público-alvo

Propriedade Tipo de dados Obrigatório Observações
type String Sim Especifica o público-alvo que seu aplicativo deseja direcionar. Valores possíveis: AzureADandPersonalMicrosoftAccount, , PersonalMicrosoftAccount, AzureADMultipleOrgsAzureADMyOrg
tenant_id String Sim Necessário somente 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 aaaabbbb-0000-cccc-1111-dddd2222eeee

authorization_user_agent

Indica se é necessário usar uma visão da Web inserida ou o navegador padrão no dispositivo ao entrar em uma conta ou autorizar o acesso a um recurso.

Valores possíveis:

  • DEFAULT: prefere o navegador do sistema. Usará a exibição da Web inserida se um navegador não estiver disponível no dispositivo.
  • WEBVIEW: use a exibição da Web inserida.
  • BROWSER: usa o navegador padrão no dispositivo.

multiple_clouds_supported

Para clientes que dão suporte a várias nuvens nacionais, especifique true. O plataforma de identidade da Microsoft será redirecionada automaticamente para a nuvem nacional correta durante a autorização e o resgate de token. Você pode determinar a nuvem nacional da conta de entrada examinando a autoridade associada ao AuthenticationResult. Observe que ele 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 booliano que indica se você está usando um URI de redirecionamento compatível com agente de identidade Microsoft. Defina como false se você não quiser usar o agente em seu aplicativo.

Se você estiver usando a Autoridade de Microsoft Entra com Audiência definida como"MicrosoftPersonalAccount", o agente não será usado.

http

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

Propriedade Tipo de dados Obrigatório Observações
connect_timeout int No Tempo em milissegundos
read_timeout int No Tempo em milissegundos

registrar em log

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

Propriedade Tipo de dados Obrigatório Observações
pii_enabled boolean No Se os dados pessoais devem ser emitidos
log_level cadeia No Quais mensagens de log serão geradas. Os níveis de log com suporte incluem ERROR,WARNINGINFO, e VERBOSE.
logcat_enabled boolean No Se a saída para o gato de log além da interface de registro em log

account_mode

Especifica quantas contas podem ser usadas em seu aplicativo por vez. Os valores possíveis são:

  • MULTIPLE (padrão)
  • SINGLE

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

Para obter mais informações sobre as diferenças entre contas simples e múltiplas, consulte Aplicativos de conta única e várias.

browser_safelist

Uma lista de permissões de navegadores compatíveis com a 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 da MSAL

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

Essa configuração é complementada por valores que você fornece. Os valores que você fornece 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": [
        "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
    }
  ]
}

Configuração básica de exemplo

O exemplo a seguir ilustra uma configuração básica que especifica a ID do cliente, o URI de redirecionamento, se um redirecionamento de agente 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.res/raw/auth_config.json Mas você pode colocá-lo em qualquer lugar que quiser.

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