Habilitar o SSO entre aplicativos no Android usando a MSAL

O início de sessão único (SSO) permite que os utilizadores introduzam apenas as credenciais uma vez e que essas credenciais funcionem automaticamente em todas as aplicações. Ele aprimora a experiência do usuário e melhora a segurança reduzindo o número de senhas que os usuários precisam gerenciar, reduzindo o risco de fadiga de senha e vulnerabilidades associadas.

O plataforma de identidade da Microsoft e o Biblioteca do Microsoft Authenticator (MSAL) ajudam você a habilitar o SSO em seu conjunto de aplicativos. Ao habilitar a funcionalidade do Broker, você pode estender o SSO em todo o dispositivo.

Neste guia, você aprenderá como configurar os SDKs (Software Development Kits) usados pelo seu aplicativo para fornecer SSO aos seus clientes.

Pré-requisitos

Este guia pressupõe que você saiba como:

Métodos para SSO

Há duas maneiras de os aplicativos usarem o MSAL para Android para obter o SSO:

  • Por meio de um aplicativo intermediário

  • 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, isso exige que os usuários baixem aplicativos extras.

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 atender às 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 (Ingresso no Local de Trabalho)
    • Gerenciamento de Dispositivos Móveis
  • Gerenciamento de conta em todo o dispositivo
    • por meio do Gerenciador de Contas do Android e das Configurações de conta
    • "Conta de Trabalho" – tipo de conta personalizada

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

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

Diagrama mostrando como um aplicativo se relaciona com MSAL, aplicativos de agente e o gerenciador de contas Android.

Instalando aplicativos que hospedam um agente

Os aplicativos de hospedagem de agente podem ser instalados pelo proprietário do dispositivo em sua loja de aplicativos (normalmente 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:

  • Cadastrado (local de trabalho vinculado) e/ou
  • Inscrito em Gerenciamento de Dispositivos ou
  • Inscrito na Proteção de Aplicativos do Intune

Se o dispositivo com requisitos mencionados acima ainda não tiver um aplicativo de agente instalado, a MSAL instrui o usuário a instalar um assim que o aplicativo tentar obter um token interativamente. Em seguida, o aplicativo levará o usuário pelas etapas para tornar o dispositivo compatível com a política necessária. Se não houver nenhum requisito de política ou se o usuário estiver entrando com conta Microsoft, a instalação do aplicativo Broker não será necessária.

Efeitos de instalar e desinstalar um broker

Quando um agente é instalado

Quando um broker é instalado no dispositivo, todas as solicitações interativas de token subsequentes (chamadas para acquireToken()) passam a ser tratadas pelo broker, e não localmente pela MSAL. Qualquer estado de SSO que estava anteriormente disponível no MSAL não está disponível para o intermediário. Como resultado, o usuário precisa se autenticar novamente ou selecionar uma conta na lista existente de contas conhecidas pelo dispositivo.

Instalar um agente não exige que o usuário entre novamente. Somente quando o usuário precisar resolver um MsalUiRequiredException, a próxima solicitação irá para o corretor. MsalUiRequiredException pode ser gerado 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 fosse associado à sua conta.

Vários agentes – se vários agentes estiverem instalados em um dispositivo, a MSAL identificará o agente ativo por conta própria para concluir o processo de autenticação

Quando um agente é desinstalado

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

Se Microsoft Authenticator, Intune Portal da Empresa ou Link para Windows estiver desinstalado, o usuário poderá ser solicitado a entrar novamente.

Integração com um agente

Gerar um URI de redirecionamento para um broker

Você deve registrar um URI de redirecionamento que seja compatível com o broker. O URI de redirecionamento do intermediário deve incluir o nome do pacote do seu aplicativo e a representação codificada em Base64 da assinatura do seu aplicativo.

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

Você pode usar o keytool para gerar um hash de assinatura codificado em Base64 usando as chaves de assinatura do 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 keytool, use o portal Azure para gerar o URI de redirecionamento:

  1. Entre no Centro de administração do Microsoft Entra como pelo menos Administrador de Aplicativos de Nuvem.
  2. Se você tiver 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 do aplicativo no menu Diretórios + assinaturas.
  3. Navegue até Entra ID>Registros de Aplicativos.
  4. Selecione seu aplicativo e selecione Autenticação>Adicionar uma plataforma>Android.
  5. No painel Configurar seu aplicativo Android que é aberto, insira o hash de assinatura que você gerou anteriormente e um nome de pacote.
  6. Selecione o 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 broker no seu aplicativo, você deve confirmar que configurou o redirecionamento do broker. Por exemplo, inclua o URI de redirecionamento habilitado para broker — e informe que você o registrou — incluindo as seguintes configurações no arquivo de configuração do MSAL:

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

A MSAL se comunica com o agente de duas maneiras:

  • Serviço vinculado ao broker
  • Android AccountManager

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

Se você receber 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 para o aplicativo Microsoft Authenticator e o intune Portal da Empresa.
  • Peça ao usuário para conceder a "READ_CONTACTS" permissão

Verificar a integração do broker

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

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

Você pode 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 abas personalizadas do Chrome para a experiência de autenticação do usuário. Se o aplicativo não estiver usando a autenticação agenciada, ele precisará usar o navegador do sistema em vez da visão da Web nativa para obter o SSO.

Agentes de autorização

Escolher uma estratégia específica para agentes de autorização é importante e representa uma funcionalidade adicional que os aplicativos podem personalizar. É recomendável usar 'WEBVIEW'. Para saber mais sobre outros valores de configuração (consulte Understand the Android MSAL configuration file.

O MSAL suporta autorização usando um WEBVIEW ou o navegador do sistema. A imagem abaixo mostra como fica usando o WEBVIEW ou o navegador do sistema, com ou sem CustomTabs:

Exemplos de logon da MSAL

Implicações de SSO

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

Os aplicativos podem ser integrados à MSAL para usar o BROWSER para autorizar. Ao contrário do WEBVIEW, BROWSER compartilham um repositório de cookies com o navegador padrão do sistema, possibilitando menos logins em sites ou outros apps nativos integrados às Custom Tabs.

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

Note

O MSAL com broker utiliza WebView e fornece SSO para todos os aplicativos que usam a biblioteca MSAL e participam da autenticação via broker. O estado de SSO do broker não é estendido a outros aplicativos que não usam o MSAL.

Visualizador da Web

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

"authorization_user_agent" : "WEBVIEW"

Ao usar o WEBVIEW no aplicativo, o usuário faz login diretamente no aplicativo. Os tokens são mantidos dentro da área restrita do aplicativo e não estão disponíveis fora do jar de cookie do aplicativo. Como resultado, o usuário não pode ter experiência de SSO entre aplicativos, a menos que os aplicativos se integrem ao aplicativo Microsoft Authenticator, ao Intune Portal da Empresa ou ao Link para Windows.

No entanto, WEBVIEW permite personalizar a aparência e o comportamento da interface de login. Consulte o Android WebViews para saber mais sobre como fazer essa personalização.

Navegador

Recomendamos usar WEBVIEW, embora também ofereçamos a opção de usar um navegador e uma estratégia de Custom Tabs. Você pode indicar explicitamente essa estratégia usando a seguinte configuração JSON no arquivo de configuração personalizado:

"authorization_user_agent" : "BROWSER"

Use essa abordagem para fornecer experiência de SSO por meio do navegador do dispositivo. A MSAL usa um jar de cookie compartilhado, que permite que outros aplicativos nativos ou aplicativos Web obtenham 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 uma das amplas matrizes de telefones Android, a MSAL implementa uma heurística de seleção de navegador que tenta fornecer o melhor SSO entre dispositivos.

A MSAL recupera principalmente o navegador padrão do gerenciador de pacotes e verifica se ele está em uma lista testada de navegadores seguros. Caso contrário, a MSAL passa a usar o WebView em vez de iniciar outro navegador não padrão da lista segura. O navegador padrão é escolhido independentemente de dar suporte 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 aplicativo WebView e permitem a personalização básica da interface do usuário. Consulte Custom Tabs no Android para saber mais.

Se não houver pacotes de navegador no dispositivo, o MSAL usa o WebView integrado ao 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 navegadores a seguir foram testados para ver se eles redirecionam corretamente para o "redirect_uri" arquivo de configuração especificado:

Dispositivo Navegador interno Chrome Ópera Microsoft Edge Navegador UC Firefox
Nexus 4 (API 17) passe passe não aplicável não aplicável não aplicável não aplicável
Samsung S7 (API 25) passar1 passe passe passe falha passe
Vivo (API 26) passe passe passe passe passe falha
Pixel 2 (API 26) passe passe passe passe falha passe
Oppo passe não aplicável2 não aplicável não aplicável não aplicável não aplicável
OnePlus (API 25) passe passe passe passe falha passe
Nexus (API 28) passe passe passe passe falha passe
MI passe passe passe passe falha passe

1O navegador interno da Samsung é a Samsung Internet.
2O navegador padrão não pode ser alterado dentro da configuração do dispositivo Oppo.

Próximas Etapas 

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

Para obter mais informações sobre aplicativos de agente, consulte: