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. Melhora a experiência do utilizador e melhora a segurança, reduzindo o número de palavras-passe que os utilizadores precisam de gerir, diminuindo o risco de fadiga da palavra-passe e vulnerabilidades associadas.
A plataforma de identidade da Microsoft e a Biblioteca de Autenticação da Microsoft (MSAL) ajudam você a habilitar o SSO em seu conjunto de aplicativos. Ao habilitar o recurso do Broker, 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:
- Configure a sua aplicação. 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 autenticação única (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 (associação ao ambiente de trabalho)
- Gestão de Dispositivos Móveis
- Gerenciamento de conta em todo o dispositivo
- via Gestor de Contas do Android & Configurações da conta
- "Conta de trabalho" - tipo de conta personalizada
No Android, o Agente de Autenticação da Microsoft é um componente incluído nas aplicações Microsoft Authenticator, Portal de Empresa do Intune e Link to Windows.
O diagrama a seguir ilustra a relação entre seu aplicativo, o MSAL e os agentes de autenticação da Microsoft.
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 o dispositivo com os requisitos acima mencionados ainda não tiver um aplicativo de corretor instalado, a MSAL instruirá o usuário a instalar um assim que o aplicativo tentar obter um token interativamente. O aplicativo conduzirá 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 a conta da Microsoft, a instalação do aplicativo Broker não será 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
é que a próxima solicitação será enviada ao 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, a MSAL identificará o corretor ativo por conta própria para concluir o processo de autenticação
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 Microsoft Authenticator, o Portal da Empresa do Intune ou o Link to Windows forem desinstalados, o usuário poderá ser solicitado a entrar novamente.
Integração com um corretor
Gerar um URI de redirecionamento para um broker
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:
- Entre no centro de administração do Microsoft Entra como pelo menos um administrador de aplicativos na nuvem.
- 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.
- Navegue até Identidade>Aplicações>Registros de Aplicações.
- Selecione a sua aplicação e, em seguida, selecione Autenticação>Adicionar uma plataforma>Android.
- No painel Configurar a aplicação Android aberto, introduza o Hash de assinatura que gerou anteriormente e o Nome do pacote.
- 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 tanto o URI de redirecionamento habilitado para o broker como indique que o registou, incluindo as seguintes definições no seu ficheiro de configuração do MSAL:
"redirect_uri" : "<yourbrokerredirecturi>",
"broker_redirect_uri_registered": true
Exceções relacionadas ao corretor
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 tu receberes um MsalClientException
com o código de erro "BROKER_BIND_FAILURE"
, 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:
- No seu dispositivo Android, conclua uma solicitação usando o corretor.
- 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 WEBVIEW
, o navegador do sistema ou os separadores personalizados do Chrome para a experiência de autenticação do utilizador. 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 configuração (consulte Compreender o arquivo de configuração MSAL do Android.
MSAL suporta autorização utilizando um WEBVIEW
, ou o navegador do sistema operativo. A imagem abaixo mostra como fica usando o WEBVIEW
, ou o navegador do sistema com CustomTabs ou sem CustomTabs:
Implicações da SSO
Se a aplicação usar uma WEBVIEW
estratégia sem se integrar com a autenticação intermediada na sua aplicação, os utilizadores não terão uma experiência de sessão única em todo o dispositivo ou entre aplicações nativas e aplicações web.
Os aplicativos podem ser integrados com o MSAL para usar o BROWSER
para autorizar. Ao contrário do WEBVIEW, BROWSER
partilha um jar de cookies com o browser do sistema predefinido, permitindo menos inícios de sessão 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, o Portal da Empresa do Intune ou o Link to Windows, 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 todas as aplicações que consomem a biblioteca MSAL e participam na autenticação intermediada. O estado de SSO do broker não se estende a outras aplicações que não utilizam MSAL.
WebView
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 aplicativo Microsoft Authenticator, ao Portal da Empresa do Intune ou ao Link to Windows.
No entanto, WEBVIEW
permite personalizar a aparência da interface de início de sessão. Consulte Android WebViews para saber mais sobre como fazer essa personalização.
Navegador
Recomendamos o uso do WEBVIEW, mas também oferecemos a opção de usar um 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. Veja 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 | falhar | passe |
Vivo (API 26) | passe | passe | passe | passe | passe | falhar |
Pixel 2 (API 26) | passe | passe | passe | passe | falhar | 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 | falhar | passe |
Nexo (API 28) | passe | passe | passe | passe | falhar | passe |
MI | passe | passe | passe | passe | falhar | 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.
Para obter mais informações sobre aplicativos de corretagem, vá para as seguintes páginas: