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

A Android Biblioteca de Autenticação da Microsoft (MSAL) vem com um ficheiro JSON de configuração predefinida que personaliza para definir o comportamento da sua aplicação cliente pública para coisas como a autoridade padrão, quais as autoridades que irá usar, e assim por diante.

Este artigo vai ajudá-lo a compreender as várias definições no ficheiro de configuração e como especificar o ficheiro de configuração a usar na sua aplicação baseada em MSAL.

Definições de configuração

Configurações gerais

Property Tipo de dados Obrigatório Notes
client_id String Sim O ID do Cliente da sua aplicação na página de registo da candidatura
redirect_uri String Sim O URI de Redirecionamento da sua aplicação a partir da página de registo da candidatura
broker_redirect_uri_registered booleano No Valores possíveis: true, false
authorities Autoridade de Lista<> No A lista de autoridades de que a sua candidatura precisa
authorization_user_agent AuthorizationAgent (enum) No Valores possíveis: DEFAULT, BROWSER, WEBVIEW
http HttpConfiguration No Configurar HttpUrlConnectionconnect_timeout e read_timeout
logging LoggingConfiguration No Especifica o nível de detalhe do registo. Configurações opcionais incluem: pii_enabled, que assume um valor booleano, e log_level, que assume ERROR, WARNING, INFO, ou VERBOSE.

client_id

O ID do cliente ou da aplicação que foi criado quando registou a sua candidatura.

redirect_uri

O URI de redirecionamento que registou quando registou a sua candidatura. Se o URI de redirecionamento for para uma aplicação de corretor, consulte o URI de redirecionamento para aplicações de clientes públicos para garantir que está a usar o formato correto de URI de redirecionamento para a sua aplicação de corretor.

broker_redirect_uri_registered

Se quiser usar autenticação intermediária, a broker_redirect_uri_registered propriedade deve ser definida para true. Num cenário de autenticação intermediária, se a aplicação não estiver no formato correto para falar com o broker conforme descrito no URI de Redirecionamento para aplicações clientes públicas, a aplicação valida o seu URI de redirecionamento e lança uma exceção quando este inicia.

authorities

A lista de autoridades conhecidas e de confiança por si. Para além das autoridades aqui listadas, a MSAL também consulta a Microsoft para obter uma lista de clouds e autoridades conhecidas pela Microsoft. Nesta lista de autoridades, especifique o tipo da autoridade e quaisquer parâmetros opcionais adicionais, como "audience", que devem alinhar-se com o público da sua aplicação com base no registo da sua aplicação. Segue-se 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 a autoridade e o público da Microsoft Entra para os endpoints da plataforma de identidades da Microsoft

Tipo Público-alvo ID do inquilino Authority_Url Ponto final resultante Notes
Microsoft Entra ID Azure AD e conta pessoal Microsoft https://login.microsoftonline.com/common common é um alias de inquilino para indicar onde a conta está. Como um inquilino específico do Microsoft Entra ou o sistema de contas conta Microsoft.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Apenas as contas presentes em contoso.com podem adquirir um token. Qualquer domínio verificado, ou o GUID do inquilino, pode ser usado como ID do inquilino.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Apenas contas Microsoft Entra podem ser usadas com este endpoint. As contas Microsoft podem ser membros de organizações. Para adquirir um token usando uma conta conta Microsoft para um recurso numa organização, especifique o tenant organizacional de onde quer o token.
Microsoft Entra ID Conta Microsoft pessoal https://login.microsoftonline.com/consumers Só contas Microsoft podem usar este endpoint.
B2C Ver Ponto Final Resultante https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Apenas as contas presentes no contoso.onmicrosoft.com inquilino podem adquirir um token. Neste exemplo, a política B2C faz parte do caminho URL de Autoridade.

Note

A validação de autoridade não pode ser ativada nem desativada no MSAL. As autoridades são conhecidas por si como o programador, conforme especificado via configuração, ou conhecidas pela Microsoft através de metadados. Se a MSAL receber um pedido de token a uma autoridade desconhecida, resulta um MsalClientException de tipo UnknownAuthority . A autenticação intermediada não funciona para Azure AD B2C.

Propriedades da autoridade

Property Tipo de dados Obrigatório Notes
type String Sim Espelha o público ou tipo de conta que a tua aplicação tem como alvo. Valores possíveis: AAD, B2C
audience Objeto No Só se aplica quando type=AAD. Especifica a identidade que a sua aplicação tem como alvo. Use o valor do registo da sua aplicação
authority_url String Sim Exigido apenas quando tipo=B2C. Opcional para tipo=AAD. Especifica a URL de autoridade ou política que a sua aplicação deve usar
default Booleano Sim É necessário um único "default":true quando uma ou mais autoridades são especificadas.

Propriedades do Público

Property Tipo de dados Obrigatório Notes
type String Sim Especifica o público que a sua aplicação quer atingir. Valores possíveis: AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount, AzureADMultipleOrgs, AzureADMyOrg
tenant_id String Sim Exigido apenas quando "type":"AzureADMyOrg". Opcional para outros type valores. Isto pode ser um domínio de inquilino, como contoso.com, ou um ID de inquilino, como aaaabbbb-0000-cccc-1111-dddd2222eeee

authorization_user_agent

Indica se deve usar uma webview embutida ou o navegador padrão no dispositivo, ao iniciar sessão numa conta ou autorizar o acesso a um recurso.

Valores possíveis:

  • DEFAULT: Prefere o navegador do sistema. Usa a web view embutida se o navegador não estiver disponível no dispositivo.
  • WEBVIEW: Utilizar a web view embutida.
  • BROWSER: Usa o navegador predefinido do dispositivo.

multiple_clouds_supported

Para clientes que suportam múltiplas clouds nacionais, especifique true. A plataforma de identidades da Microsoft irá então redirecionar automaticamente para a cloud nacional correta durante a autorização e o resgate de tokens. Pode determinar a nuvem nacional da conta iniciada examinando a autoridade associada ao AuthenticationResult. Note que não AuthenticationResult fornece o endereço de endpoint nacional específico da cloud do recurso para o qual solicita um token.

broker_redirect_uri_registered

Um booleano que indica se está a usar um URI de redirecionamento in-broker compatível com o Microsoft Identity Broker. Defina para false se não quiser usar o corretor dentro da sua aplicação.

Se estiveres a usar a Microsoft Entra Authority com o Audience definido para "MicrosoftPersonalAccount", o broker não será usado.

http

Configure definições globais para timeouts HTTP, tais como:

Property Tipo de dados Obrigatório Notes
connect_timeout int No Tempo em milissegundos
read_timeout int No Tempo em milissegundos

registo

As seguintes definições globais destinam-se ao registo:

Property Tipo de dados Obrigatório Notes
pii_enabled Booleano No Se deve emitir dados pessoais
log_level cadeia (de caracteres) No Que mensagens de registo enviar. Os níveis de registo suportados incluem ERROR,WARNING,INFO, e VERBOSE.
logcat_enabled Booleano No Se deve enviar para o log cat além da interface de log

account_mode

Especifica quantas contas podem ser usadas dentro da sua aplicação ao mesmo tempo. Os valores possíveis são:

  • MULTIPLE (padrão)
  • SINGLE

Construir um PublicClientApplication usando um modo de conta que não corresponda a esta configuração resultará numa exceção.

Para mais informações sobre as diferenças entre contas individuais e múltiplas, consulte Aplicações de contas individuais e múltiplas contas.

browser_safelist

Uma lista de navegadores compatíveis com MSAL. Estes navegadores tratam corretamente os redirecionamentos para intenções personalizadas. Pode acrescentar a esta lista. O padrão é fornecido na configuração padrão mostrada abaixo. ``

O ficheiro de configuração padrão MSAL

A configuração padrão de MSAL que vem com MSAL é mostrada abaixo. Pode ver a versão mais recente no GitHub.

Esta configuração é complementada pelos valores que fornece. Os valores que forneces sobrepõem-se aos valores predefinidos.

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

Exemplo de configuração básica

O exemplo seguinte ilustra uma configuração básica que especifica o ID do cliente, o URI de redirecionamento, se um redirecionamento de corretor está registado 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 ficheiro de configuração

  1. Crie um arquivo de configuração. Recomendamos que crie o seu ficheiro de configuração personalizado em res/raw/auth_config.json. Mas podes colocá-lo onde quiseres.

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

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