Biblioteca de Autenticação da Microsoft para Android

A Biblioteca de Autenticação da Microsoft (MSAL) para Android é uma biblioteca que permite a aplicações Android autenticar utilizadores com a plataforma de identidades da Microsoft (anteriormente Azure Active Directory) e aceder a APIs web protegidas utilizando os protocolos OAuth2 e OpenID Connect. O MSAL Android permite aos programadores adquirir tokens de segurança da plataforma de identidades da Microsoft para autenticar utilizadores e aceder a APIs web seguras para as suas aplicações Android.

O MSAL Android suporta múltiplos cenários de autenticação, como login único (SSO), acesso condicional e autenticação intermediada. Permite-te direcionar facilmente várias identidades, incluindo Microsoft Entra ID (contas de trabalho e escola), Microsoft contas (Outlook.com, hotmail.com e várias outras), ou Azure AD B2C (contas sociais e locais).

A orientação aqui destina-se a documentar funcionalidades comuns relacionadas com o MSAL Android. Se procura mais ajuda para começar com o Microsoft Entra ID, Microsoft Accounts ou Azure AD B2C, consulte a documentação da plataforma de identidades da Microsoft. Se procura mais informações sobre a API do Microsoft Graph, consulte a documentação do Microsoft Graph.

Suporte nativo de autenticação em MSAL

O MSAL Android também permite implementar uma experiência nativa de autenticação com fluxos personalizáveis de ponta a ponta em aplicações móveis. Com a autenticação nativa, os utilizadores são guiados através de uma experiência avançada e nativa de registo e início de sessão, concebida primeiro para dispositivos móveis, sem sair da aplicação. A funcionalidade de autenticação nativa está disponível apenas para aplicações móveis em ID Externo para clientes.

Migrar de Azure Active Directory Authentication Library (ADAL)

A Azure Active Directory Authentication Library (ADAL) para Android foi descontinuada com efeito em junho de 2023. Se você ou a sua organização estiverem a utilizar a Azure Active Directory Authentication Library (ADAL) para Android, devem migrar para o MSAL Android para evitar colocar em risco a segurança da sua aplicação. A Biblioteca de Autenticação da Microsoft (MSAL) para Android é a biblioteca suportada que pode ser usada para autenticação e aquisição de tokens.

Começar com MSAL Android

Para usar MSAL Android na sua aplicação, precisa de:

Como o MSAL Android suporta tanto experiências de autenticação delegada pelo navegador como nativa, siga os passos dos tutoriais seguintes com base no seu cenário.

Requirements

  • Min SDK Versão 16+
  • Target SDK Versão 33+

Passo 1: Declarar dependência da MSAL

Adicione ao build.gradle da sua aplicação:

dependencies {
    implementation 'com.microsoft.identity.client:msal:4.9.+'
}

Por favor, adicione também as seguintes linhas à secção dos seus repositórios no seu script de gradle:

maven { 
    url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1' 
}

Passo 2: Crie o seu ficheiro de configuração MSAL

Autenticação delegada pelo navegador:

Crie o seu ficheiro de configuração como um recurso "raw" no seu projeto. Consulte-o utilizando o identificador de recurso gerado ao construir uma instância de PublicClientApplication.. Se estiver a registar a sua aplicação no centro de administração Microsoft Entra pela primeira vez, também lhe será fornecido o ficheiro detalhado de configuração MSAL Android

{
  "client_id" : "<YOUR_CLIENT_ID>",
  "redirect_uri" : "msauth://<YOUR_PACKAGE_NAME>/<YOUR_BASE64_URL_ENCODED_PACKAGE_SIGNATURE>",
  "broker_redirect_uri_registered": true,
}

No redirect_uri, o <YOUR_PACKAGE_NAME> refere-se ao nome do pacote devolvido pelo context.getPackageName() método. Este nome do pacote é o mesmo que o application_id definido no teu ficheiro build.gradle.

Os valores acima são a configuração mínima necessária. O MSAL baseia-se nos valores predefinidos que vêm com a biblioteca para todas as outras definições. Por favor, consulte a documentação dos ficheiros de configuração MSAL Android para compreender as definições da biblioteca.

Autenticação nativa:

  1. Clique com o botão direito do rato em res e escolha Novo > diretório. Introduza raw como o novo nome do diretório e selecione OK.
  2. Nesta nova pasta (app > src > main > res > raw), crie um novo ficheiro JSON chamado auth_config_native_auth.json e cole o seguinte modelo MSAL Configuration:
{ 
  "client_id": "Enter_the_Application_Id_Here", 
  "authorities": [ 
    { 
      "type": "CIAM", 
      "authority_url": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/Enter_the_Tenant_Subdomain_Here.onmicrosoft.com/" 
    } 
  ], 
  "challenge_types": ["oob"], 
  "logging": { 
    "pii_enabled": false, 
    "log_level": "INFO", 
    "logcat_enabled": true 
  } 
 }

Passo 3: Configurar o AndroidManifest.xml para autenticação delegada pelo navegador

  1. Solicite as seguintes permissões através do Android Manifest
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  1. Configure um filtro de intenção no Android Manifest, usando o seu URI de redirecionamento

A não inclusão de um intent filter correspondente ao URI de redirecionamento que especificar na configuração resultará na falha do pedido interativo de token.

    <!--Intent filter to capture authorization code response from the default browser on the device calling back to our app after interactive sign in -->
    <activity
        android:name="com.microsoft.identity.client.BrowserTabActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="msauth"
                android:host="<YOUR_PACKAGE_NAME>"
                android:path="/<YOUR_BASE64_ENCODED_PACKAGE_SIGNATURE>" />
        </intent-filter>
    </activity>

Pode consultar a MSAL Android FAQ para obter mais informações sobre problemas comuns com URI de redirecionamento.

ProGuard

O MSAL utiliza informações de reflexão e de tipos genéricos armazenadas em ficheiros .class em tempo de execução para suportar várias funcionalidades relacionadas com a persistência e a serialização. O suporte por parte das bibliotecas para minificação e ofuscação é limitado. Uma configuração padrão é fornecida com esta biblioteca; Por favor , apresenta uma reclamação se encontrares algum problema.

Recommendation

A MSAL é uma biblioteca de segurança. Controla como os utilizadores iniciam sessão e acedem aos serviços. Recomendamos que leve sempre a versão mais recente da nossa biblioteca na sua aplicação sempre que puder. Usamos versionamento semântico para que possa controlar o risco de atualizar a sua aplicação. Por exemplo, descarregar sempre a versão secundária mais recente (por exemplo, x.y.x) garante que obtém as melhorias de segurança e funcionalidades mais recentes, com a garantia de que a superfície da nossa API não mudou. Pode sempre ver as últimas versões e notas de lançamento no separador Releases do GitHub.