Habilite o SSO entre aplicativos no Android usando o MSAL

O logon único (SSO) permite que os usuários insiram suas credenciais apenas uma vez e que essas credenciais funcionem automaticamente entre aplicativos.

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

Neste tutorial, você aprenderá como configurar os SDKs usados pelo seu aplicativo para fornecer SSO aos seus clientes.

Pré-requisitos

Este procedimento pressupõe que você saiba como:

  • Provisione seu aplicativo. Para obter mais informações, consulte as instruções para criar um aplicativo no tutorial do Android
  • Integre a sua aplicação com o MSAL para Android

Métodos para SSO

Há duas maneiras de os aplicativos que usam o MSAL para Android alcançarem o SSO:

  • Através de uma aplicação de corretagem

  • Através do navegador do sistema

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

SSO através de autenticação intermediada

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 organizacionais de Acesso Condicional. A integração com um corretor oferece os seguintes benefícios:

  • SSO do dispositivo
  • Acesso condicional para:
    • Proteção de Aplicações do Intune
    • Registro de dispositivo (ingresso no local de trabalho)
    • Gestão de Dispositivos Móveis
  • Gerenciamento de conta em todo o dispositivo
    • via Android AccountManager & Configurações da conta
    • "Conta de trabalho" - tipo de conta personalizada

No Android, o Agente de Autenticação da Microsoft é um componente incluído nos aplicativos Microsoft Authenticator e Portal da Empresa do Intune.

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

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

Instalando aplicativos que hospedam um broker

Os aplicativos de hospedagem de corretores podem ser instalados pelo proprietário do dispositivo a partir de 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:

  • Registado (local de trabalho associado) e/ou
  • Inscritos na Gestão de Dispositivos ou
  • Inscrito na Proteção de Aplicações do Intune

Se um dispositivo ainda não tiver um aplicativo de agente instalado, o MSAL instruirá o usuário a instalá-lo 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 broker

Quando um broker é instalado

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

A instalação de um broker não exige que o usuário entre novamente. Somente quando o usuário precisa resolver uma MsalUiRequiredException vontade a próxima solicitação vai para o corretor. MsalUiRequiredException pode ser jogado por vários motivos, e precisa ser resolvido interativamente. Por exemplo:

  • O utilizador alterou a palavra-passe associada à sua conta.
  • A conta do usuário não atende mais a uma política de Acesso Condicional.
  • O utilizador revogou o seu consentimento para que a aplicação fosse associada à sua conta.

Vários corretores - Se vários corretores estiverem instalados em um dispositivo, o corretor que foi instalado primeiro é sempre o corretor ativo. Apenas um único corretor pode estar ativo em um dispositivo.

Quando um broker é desinstalado

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

Se o Portal da Empresa do Intune estiver instalado e estiver 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. Depois que eles entrarem novamente, o aplicativo Microsoft Authenticator se tornará o agente ativo.

Integração com um corretor

Gerar um URI de redirecionamento para um broker

Gorjeta

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

Você deve registrar um URI de redirecionamento que seja compatível com o corretor. O URI de redirecionamento para o broker 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 keytool para gerar um hash de assinatura codificado em Base64 usando as chaves de assinatura do seu aplicativo e, em seguida, gerar seu 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, utilize o portal do Azure para gerar o URI de redirecionamento:

  1. Entre no centro de administração do Microsoft Entra como pelo menos um administrador de aplicativos na 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é Registros do aplicativo Identity>Applications>.
  4. Selecione seu aplicativo e, em seguida, selecione Autenticação>Adicionar uma plataforma>Android.
  5. No painel Configurar a aplicação Android aberto, introduza o Hash de assinatura que gerou anteriormente e o Nome do 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 o MSAL para usar um broker

Para usar um broker em seu aplicativo, você deve atestar que configurou o redirecionamento do broker. Por exemplo, inclua o URI de redirecionamento habilitado para o broker e indique 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 comunica com o corretor de duas formas:

  • Serviço vinculado ao corretor
  • Gestor de Conta Android

A MSAL primeiro usa o serviço vinculado ao broker porque chamar esse serviço não requer nenhuma permissão do Android. Se a ligação ao serviço associado falhar, a MSAL utiliza a API AccountManager do Android. A MSAL só o faz se a sua aplicação já tiver recebido a "READ_CONTACTS" permissão.

Se você receber um com código "BROKER_BIND_FAILURE"de MsalClientException erro, então há duas opções:

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

Verificar a integração do broker

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

  1. No seu dispositivo Android, conclua uma solicitação usando o corretor.
  2. Nas definições do seu dispositivo Android, procure uma conta recém-criada correspondente à conta com a qual se autenticou. A conta deve ser do tipo Conta de trabalho.

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

SSO através do navegador do sistema

As aplicações Android têm a opção de utilizar o navegador do sistema ou os WEBVIEWseparadores personalizados do Chrome para a experiência do utilizador de autenticação. Se o aplicativo não estiver usando autenticação intermediada, ele precisará usar o navegador do sistema em vez da visualização web nativa para obter o SSO.

Agentes de autorização

Escolher uma estratégia específica para agentes de autorização é importante e representa funcionalidades adicionais que os aplicativos podem personalizar. Recomendamos o uso de 'WEBVIEW'. Para saber mais sobre outros valores de confguração (consulte Compreender o arquivo de configuração MSAL do Android.

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 CustomTabs ou sem CustomTabs:

MSAL login examples

Implicações da SSO

Se o aplicativo usar uma WEBVIEW estratégia sem se integrar com a autenticação intermediada em 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 com o MSAL para usar o BROWSER para autorizar. Ao contrário do WEBVIEW, partilhe um jar de cookies com o browser do sistema predefinido, BROWSER permitindo menos entradas com aplicações Web ou outras aplicações nativas que tenham sido integradas com separadores personalizados.

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

Nota

MSAL com broker utiliza WebView e fornece Single Sign-On (SSO) para todos os aplicativos que consomem a biblioteca MSAL e participam da autenticação intermediada. O estado SSO do broker não é estendido a outros aplicativos que não usam MSAL.

Visualização da Web

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

"authorization_user_agent" : "WEBVIEW"

Ao usar o aplicativo no WEBVIEW, o usuário entra diretamente no aplicativo. Os tokens são mantidos dentro da sandbox do aplicativo e não estão disponíveis fora do jar de cookies 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 Autenticador ou ao Portal da Empresa.

No entanto, WEBVIEW fornece a capacidade de personalizar a aparência da interface do usuário de entrada. Consulte Android WebViews para saber mais sobre como fazer essa personalização.

Browser

Recomendamos o uso do 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 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 da Web alcancem 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 gamas de telefones Android, a MSAL implementa uma heurística de seleção de navegador que tenta fornecer o melhor SSO entre dispositivos.

O 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 recorre ao uso do Webview em vez de iniciar outro navegador não padrão da lista segura. O navegador padrão é escolhido independentemente de suportar guias personalizadas. Se o navegador oferecer 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 Separadores personalizados no Android para saber mais.

Se não houver pacotes de navegador no dispositivo, a MSAL usará o aplicativo WebView. 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 ver se redirecionam corretamente para o "redirect_uri" especificado no arquivo de configuração:

Dispositivo Navegador integrado Chrome Opera Microsoft Edge UC Browser Firefox
Nexo 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) Passe1 passe passe passe reprovado passe
Vivo (API 26) passe passe passe passe passe reprovado
Pixel 2 (API 26) passe passe passe passe reprovado 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 reprovado passe
Nexo (API 28) passe passe passe passe reprovado passe
MI passe passe passe passe reprovado passe

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

Próximos passos

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.