Habilitar o SSO entre aplicativos no Android usando a MSAL

Com o SSO (Logon Único), os usuários inserem suas credenciais apenas uma vez, e elas funcionam automaticamente em diferentes aplicativos.

A plataforma de identidade da Microsoft e a MSAL (Biblioteca de Autenticação da Microsoft) ajudam a habilitar o SSO em um pacote de aplicativos. Com o recurso de agente e os aplicativos autenticadores, você pode estender a SSO em todo o dispositivo.

Neste passo a passo, você aprenderá a configurar os SDKs usados por seu aplicativo para oferecer o SSO aos clientes.

Pré-requisitos

Para usar estas instruções, você deve saber como fazer o seguinte:

Métodos para SSO

Os aplicativos que usam a MSAL para Android podem realizar o SSO de duas maneiras:

  • Por meio de um aplicativo agente

  • Por meio do navegador do sistema

    É recomendável usar um aplicativo de agente para benefícios como SSO em todo o dispositivo, gerenciamento de conta e acesso condicional. No entanto, ele exige que os usuários baixem aplicativos adicionais.

SSO por meio de autenticação agenciada

Recomendamos que você use um dos agentes de autenticação da Microsoft para participar do SSO em todo o dispositivo e cumprir as políticas de acesso condicional organizacional. A integração com um agente oferece os seguintes benefícios:

  • SSO do dispositivo
  • Acesso Condicional para:
    • Proteção de Aplicativo do Intune
    • Registro de dispositivo (Workplace Join)
    • Gerenciamento do Dispositivo Móvel
  • Gerenciamento de conta em todo o dispositivo
    • via Android AccountManager e configurações da conta
    • "Conta de trabalho"– tipo de conta personalizada

No Android, o Microsoft Authentication Broker é um componente incluído nos aplicativos Microsoft Authenticator e Portal da Empresa do Intune.

O diagrama a seguir ilustra a relação entre o aplicativo, a MSAL e os agentes de autenticação da Microsoft.

Diagram showing how an application relates to MSAL, broker apps, and the Android account manager.

Instalação de aplicativos que hospedam um agente

O proprietário do dispositivo pode instalar os aplicativos de hospedagem de agente usando a App Store (geralmente a Google Play Store) a qualquer momento. No entanto, algumas APIs (recursos) são protegidas por políticas de acesso condicional que exigem que os dispositivos sejam:

  • Registrados (ingressados no local de trabalho) e/ou
  • Registrados no gerenciamento de dispositivos ou
  • Registrados na Proteção de Aplicativo do Intune

Se o dispositivo ainda não tiver um aplicativo de agente instalado, a MSAL instruirá o usuário a instalar um assim que o aplicativo tentar obter um token interativamente. O aplicativo precisará conduzir o usuário pelas etapas para tornar o dispositivo compatível com a política necessária.

Efeitos da instalação e desinstalação de um agente

Quando um agente é instalado

Quando um agente é instalado em um dispositivo, todas as solicitações de token interativas subsequentes (chamadas para acquireToken()) são tratadas pelo agente em vez de localmente pela MSAL. Qualquer estado de SSO disponível anteriormente para a MSAL não está disponível para o agente. Por isso, o usuário precisa se autenticar novamente ou selecionar uma conta na lista de contas conhecidas pelo dispositivo.

A instalação de um agente não exige que o usuário entre novamente. Somente quando o usuário precisar resolver um MsalUiRequiredException é que a próxima solicitação vai ao agente. MsalUiRequiredException pode surgir por vários motivos e precisa ser resolvido interativamente. Por exemplo:

  • O usuário alterou a senha associada à sua conta.
  • A conta do usuário não atende mais a uma política de acesso condicional.
  • O usuário revogou seu consentimento para que o aplicativo seja associado à sua conta.

Vários agentes – se houver mais de um agente instalado no dispositivo, o agente que foi instalado primeiro será sempre o agente ativo. Apenas um agente pode estar ativo em um dispositivo.

Quando um agente é desinstalado

Se houver apenas um aplicativo de hospedagem de agente instalado e ele for removido, o usuário precisará entrar novamente. A desinstalação do agente ativo remove do dispositivo a conta e os tokens associados.

Se o Portal da Empresa do Intune estiver instalado e operando como o agente ativo e o Microsoft Authenticator também estiver instalado, se o Portal da Empresa do Intune (agente ativo) for desinstalado, o usuário precisará entrar novamente. Quando o usuário entrar novamente, o aplicativo Microsoft Authenticator se tornará o agente ativo.

Integração com um agente

Gerar um URI de redirecionamento para um agente

Dica

As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.

Você deve registrar um URI de redirecionamento que seja compatível com o agente. O URI de redirecionamento do agente deve incluir o nome do pacote do aplicativo e a representação da assinatura do aplicativo codificada em base64.

O formato do URI de redirecionamento é: msauth://<yourpackagename>/<base64urlencodedsignature>

Você pode usar o keytool para gerar um hash de assinatura codificado em base64 com as chaves de assinatura do seu aplicativo e, em seguida, gerar o URI de redirecionamento usando esse hash.

Linux e macOS:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Windows:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

Depois de gerar um hash de assinatura com o keytool, use o portal do Azure para gerar o URI de redirecionamento:

  1. Entre no Centro de administração do Microsoft Entra com pelo menos a função de Administrador de Aplicativo de nuvem.
  2. Se você tem acesso a vários locatários, use o ícone Configurações no menu superior para alternar para o locatário que contém o registro de aplicativo do menu Diretórios + assinaturas.
  3. Navegue até Identidade>Aplicativos>Registros do aplicativo.
  4. Selecione seu aplicativo e, em seguida, selecione Autenticação>Adicionar uma plataforma>Android.
  5. No painel Configure seu aplicativo Android que é aberto, insira o hash de assinatura que você gerou anteriormente e o nome de pacote.
  6. Clique no botão Configurar.

O URI de redirecionamento é gerado para você e exibido no campo URI de redirecionamento do painel de Configuração do Android.

Para obter mais informações sobre como assinar seu aplicativo, consulte Assinar seu aplicativo no guia do usuário do Android Studio.

Configurar a MSAL para usar um agente

Para usar um agente no aplicativo, você deve atestar que configurou o redirecionamento do agente. Por exemplo, para incluir o URI de redirecionamento habilitado para agente e indicar o registro dele, inclua as seguintes configurações no arquivo de configuração da MSAL:

"redirect_uri" : "<yourbrokerredirecturi>",
"broker_redirect_uri_registered": true

A MSAL se comunica com o agente de duas maneiras:

  • Serviço associado ao agente
  • Android AccountManager

A MSAL primeiro usa o serviço associado ao agente, pois a chamada ao serviço não requer nenhuma permissão do Android. Se a associação ao serviço associado falhar, a MSAL usará a API do Android AccountManager. A MSAL só fará isso se o aplicativo já tiver recebido a permissão "READ_CONTACTS".

Caso ocorra um MsalClientException com o código de erro "BROKER_BIND_FAILURE", há duas opções:

  • Peça ao usuário para desabilitar a otimização de energia do aplicativo Microsoft Authenticator e do Portal da Empresa do Intune.
  • Peça ao usuário para conceder a permissão "READ_CONTACTS"

Verificar a integração do agente

Talvez não fique claro imediatamente que a integração do agente está funcionando, mas você pode usar as seguintes etapas para verificar:

  1. No dispositivo Android, realize uma solicitação usando o agente.
  2. Nas configurações do dispositivo Android, procure uma conta recém-criada correspondente à conta com a qual você se autenticou. A conta deve ser do tipo conta corporativa.

Você poderá remover a conta das configurações se quiser repetir o teste.

SSO por meio do navegador do sistema

Os aplicativos Android têm a opção de usar o WEBVIEW, o navegador do sistema ou as guias personalizadas do Chrome para a experiência de autenticação do usuário. Quando o aplicativo não estiver usando a autenticação agenciada, será necessário usar o navegador do sistema em vez do WebView nativo para obter o SSO.

Agentes de autorização

A escolha de uma estratégia específica para agentes de autorização é opcional e representa uma funcionalidade adicional que os aplicativos podem personalizar. É recomendável usar “WEBVIEW”. Para saber mais sobre outros valores de configuração (consulte Entender o arquivo de configuração da MSAL do Android.

A MSAL dá suporte para a autorização usando um WEBVIEW ou o navegador do sistema. A imagem abaixo mostra o uso do WEBVIEW ou do navegador do sistema com CustomTabs ou sem CustomTabs:

MSAL login examples

Implicações do SSO

Se o aplicativo usar uma estratégia do WEBVIEW sem integrar-se com a autenticação agenciada no seu aplicativo, os usuários não terão uma experiência de logon único em todo o dispositivo ou entre aplicativos nativos e aplicativos Web.

As aplicações podem ser integradas à MSAL para usar o BROWSER para autorizar. Ao contrário do WEBVIEW, o BROWSER compartilha um pote de cookies com o navegador do sistema padrão, permitindo menos entradas com a Web ou outros aplicativos nativos integrados às guias personalizadas.

Se o aplicativo usar a MSAL com um agente como o Microsoft Authenticator ou o Portal da Empresa do Intune, os usuários poderão ter uma experiência de SSO entre aplicativos se eles tiverem uma entrada ativa com um dos aplicativos.

Observação

A MSAL com agente utiliza o WebView e fornece o SSO (Logon Único) para todos os aplicativos que consomem a biblioteca MSAL e participam de autenticação agenciada. O estado de SSO do agente não é estendido para outros aplicativos que não usam a MSAL.

WebView

Para usar o WebView no aplicativo, coloque a seguinte linha no JSON de configuração do aplicativo que é passado à MSAL:

"authorization_user_agent" : "WEBVIEW"

Ao usar o WEBVIEW no aplicativo, o usuário entra diretamente no aplicativo. Os tokens são mantidos dentro da área restrita do aplicativo e não estão disponíveis fora do pote de cookies do aplicativo. Consequentemente, o usuário não poderá ter uma experiência de SSO entre aplicativos, a menos que os aplicativos estejam integrados com o Authenticator ou o Portal da Empresa.

No entanto, o WEBVIEW permite personalizar a aparência da interface do usuário de entrada. Confira WebViews do Android para obter mais informações sobre como fazer essa personalização.

Navegador

É recomendável usar o WEBVIEW, embora forneçamos a opção de usar o navegador e uma estratégia de guias personalizadas. Você pode indicar explicitamente essa estratégia usando a seguinte configuração JSON no arquivo de configuração personalizada:

"authorization_user_agent" : "BROWSER"

Use essa abordagem para proporcionar uma experiência de SSO por meio do navegador do dispositivo. A MSAL usa um pote de cookies compartilhado, que permite que outros aplicativos nativos ou aplicativos Web obtenham o SSO no dispositivo usando o cookie de sessão persistente definido pela MSAL.

Heurística de seleção do navegador

Como é impossível para a MSAL especificar o pacote exato do navegador a ser usado em cada um dos vários celulares Android, ela implementa uma heurística de seleção de navegador que tenta oferecer o melhor SSO entre dispositivos.

A MSAL principalmente identifica o navegador padrão no gerenciador de pacotes e verifica se ele está em uma lista testada de navegadores seguros. Caso contrário, a MSAL usa o WebView em vez de iniciar outro navegador não padrão na lista de confiança. O navegador padrão será escolhido independentemente de dar suporte ou não a guias personalizadas. Se o navegador der suporte a guias personalizadas, a MSAL iniciará a guia personalizada. As guias personalizadas têm uma aparência mais próxima de um WebView no aplicativo e permitem a personalização básica da interface do usuário. Confira Guias personalizadas no Android para saber mais.

Se não houver pacotes de navegador no dispositivo, a MSAL usará o WebView no aplicativo. Se a configuração padrão do dispositivo não for alterada, o mesmo navegador deverá ser iniciado para cada entrada para garantir a experiência de SSO.

Navegadores testados

Os seguintes navegadores foram testados para verificar se eles redirecionam corretamente para o "redirect_uri" especificado no arquivo de configuração:

Dispositivo Navegador interno Chrome Opera Microsoft Edge Navegador de UC Firefox
Nexus 4 (API 17) passagem passagem não aplicável não aplicável não aplicável não aplicável
Samsung S7 (API 25) aprovado1 passagem passagem passagem falha pass
Vivo (API 26) passagem passagem passagem passagem passagem falha
Pixel 2 (API 26) passagem passagem passagem passagem falha passagem
Oppo pass não aplicável2 não aplicável não aplicável não aplicável não aplicável
OnePlus (API 25) passagem passagem passagem passagem falha passagem
Nexus (API 28) passagem passagem passagem passagem falha passagem
MI passagem passagem passagem passagem falha passagem

1O navegador interno da Samsung é o Samsung Internet.
2Não é possível alterar o navegador padrão nas configurações de dispositivo da Oppo.

Próximas etapas

O modo de dispositivo compartilhado para dispositivos Android permite que você configure um dispositivo Android para que ele possa ser facilmente compartilhado por vários funcionários.