Biblioteca de Autenticação da Microsoft para Android

O Biblioteca do Microsoft Authenticator (MSAL) para Android é uma biblioteca que permite que aplicativos Android autentiquem usuários com plataforma de identidade da Microsoft (anteriormente Azure Active Directory) e acessem APIs Web protegidas usando protocolos OAuth2 e OpenID Connect. O MSAL Android permite que os desenvolvedores adquiram tokens de segurança do plataforma de identidade da Microsoft para autenticar usuários e acessar APIs Web seguras para seus aplicativos baseados em Android.

O MSAL Android dá suporte a vários cenários de autenticação, como SSO (logon único), acesso condicional e autenticação agenciada. Ele permite que você direcione facilmente várias identidades, incluindo Microsoft Entra ID (contas corporativas e de estudante), contas de Microsoft (Outlook.com, hotmail.com e várias outras) ou Azure AD B2C (contas sociais e locais).

As diretrizes aqui se destinam a documentar funcionalidades comuns relacionadas ao MSAL Android. Se você estiver procurando mais ajuda para começar a usar Microsoft Entra ID, contas de Microsoft ou Azure AD B2C, confira os documentos do plataforma de identidade da Microsoft. Se você estiver procurando mais informações sobre a API Microsoft Graph, confira os documentos do Microsoft Graph.

Suporte à autenticação nativa no MSAL

O MSAL Android também permite implementar uma experiência de autenticação nativa com fluxos personalizáveis de ponta a ponta em aplicativos móveis. Com a autenticação nativa, os usuários são guiados por uma experiência rica e nativa de cadastro e login, voltada primeiro para dispositivos móveis, sem sair do aplicativo. O recurso de autenticação nativa só está disponível para aplicativos móveis no ID Externa para Clientes.

Migração da Azure Active Directory Authentication Library (ADAL)

A ADAL (Biblioteca de Autenticação Azure Active Directory) para Android foi preterida a partir de junho de 2023. Se você ou sua organização estiver usando a ADAL (Biblioteca de Autenticação do Azure Active Directory) para Android, você deverá migrar para o MSAL Android para evitar colocar a segurança do aplicativo em risco. Biblioteca do Microsoft Authenticator (MSAL) para Android é a biblioteca com suporte que pode ser usada para autenticação e aquisição de token.

Introdução ao MSAL Android

Para usar o MSAL Android em seu aplicativo, você precisa:

Como o MSAL Android dá suporte a experiências de autenticação nativas e delegadas pelo navegador, siga as etapas nos tutoriais a seguir com base em seu cenário.

Requirements

  • Min SDK Versão 16+
  • SDK de destino versão 33+

Etapa 1: Declarar dependência na MSAL

Adicione ao build.gradle do aplicativo:

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

Adicione também as seguintes linhas à seção de repositórios no seu script do Gradle:

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

Etapa 2: Criar seu arquivo de configuração MSAL

Autenticação delegada pelo navegador:

Crie seu arquivo de configuração como recurso "raw" no seu projeto. Consulte-o usando o identificador de recurso gerado ao construir uma PublicClientApplication instância.. Se você estiver registrando seu aplicativo no centro de administração do Microsoft Entra pela primeira vez, você também receberá o arquivo de configuração detalhado do 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, <YOUR_PACKAGE_NAME> refere-se ao nome do pacote retornado pelo método context.getPackageName(). Esse nome de pacote é o mesmo que o application_id definido em seu build.gradle arquivo.

Os valores acima são a configuração mínima necessária. A MSAL depende dos padrões que são enviados com a biblioteca para todas as outras configurações. Consulte a documentação do arquivo de configuração do MSAL Android para entender as configurações padrão da biblioteca.

Autenticação nativa:

  1. Clique com o botão direito do mouse em res e escolha Novo > Diretório. Digite raw como o novo nome do diretório e selecione OK.
  2. Nesta nova pasta (app > src > main > res > raw), crie um novo arquivo JSON chamado auth_config_native_auth.json e cole o seguinte modelo de configuração do MSAL:
{ 
  "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 
  } 
 }

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

  1. Solicitar as permissões a seguir por meio do Manifesto do Android
    <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

Não incluir um filtro de intenção que corresponda ao URI de redirecionamento especificado na configuração resultará em falha na solicitação interativa 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>

Você pode consultar as perguntas frequentes do MSAL Android para obter mais informações sobre problemas comuns de uri de redirecionamento.

ProGuard

MSAL usa reflexão e informações de tipo genérico armazenadas em arquivos .class em tempo de execução para oferecer suporte a várias funcionalidades relacionadas à persistência e à serialização. O suporte da biblioteca para minificação e ofuscação é limitado. Uma configuração padrão é enviada com essa biblioteca; registre um problema se encontrar algum problema.

Recommendation

MSAL é uma biblioteca de segurança. Ele controla como os usuários fazem login e acessam os serviços. Recomendamos que você sempre use a versão mais recente da nossa biblioteca em seu aplicativo quando puder. Usamos o controle de versão semântico para que você possa controlar o risco de atualizar seu aplicativo. Por exemplo, baixar sempre o número da versão secundária mais recente (por exemplo, x.y.x) garante que você obtenha as melhorias mais recentes de segurança e de funcionalidades com a certeza de que a área de superfície da nossa API não mudou. Você sempre pode consultar a versão mais recente e as notas da versão na aba Releases do GitHub.