Share via


Gravar um Autenticador SPNEGO para o Microsoft Edge no Android

Terceiros podem habilitar a autenticação SPNEGO no Microsoft Edge para Android. Para fornecer essa autenticação, eles devem fornecer um Autenticador SPNEGO. Este artigo descreve a interface entre o Edge e o Autenticador SPNEGO.

Introdução

O Autenticador SPNEGO é fornecido por um Serviço Android. O autenticador deve ser incorporado em um aplicativo, fornecido por terceiros, instalado no dispositivo do usuário. O aplicativo é responsável por gerenciar todas as contas usadas para autenticação SPNEGO e por toda a comunicação com o servidor SPNEGO.

O Autenticador SPNEGO é uma conta do AndroidAuthenticator. Como tal, ele deve seguir o padrão descrito em AbstractAccountAuthenticator. Ele deve implementar uma classe autenticadora derivada de AbstractAccountAuthenticator.

O Autenticador SPNEGO deve definir um novo tipo de conta. O nome do tipo de conta deve ser derivado do nome de domínio do escritor (por exemplo, com.example.spnego). O tipo de conta deve ser definido para usar customTokens e deve dar suporte ao recurso "SPNEGO" (HttpNegotiateConstants.SPNEGO_FEATURE).

Interface para o Microsoft Edge

O Edge localiza o autenticador SPNEGO por meio do tipo de conta android que ele fornece. O tipo de conta definido pelo autenticador é passado para o Edge por meio da política AuthAndroidNegotiateAccountType .

A interface para o Edge é por meio da estrutura de gerenciamento de conta android, por meio de AbstractAccountManager.getAuthToken em particular. O Edge, em org.chromium.net.HttpNegotiateConstants define mais algumas chaves e valores que são usados nos argumentos para getAuthTokene no pacote de resultados retornados.

argumentos getAuthToken

Quando getAuthToken é chamado, o authTokenType é "SPNEGO:HOSTBASED:<spn>" em que <spn> é a entidade principal da solicitação. Essa sempre será uma entidade de segurança baseada em host na implementação atual. Versões futuras podem permitir outros tipos de entidades, mas, se o fizerem, usarão um prefixo diferente. Os Autenticadores SPNEGO devem marcar o prefixo.

O options pacote contém estas chaves:

Se essa for a segunda ou última rodada de uma sequência de autenticação de várias rodadas, ela também conterá as chaves a seguir.

  • HttpNegotiateConstants.KEY_INCOMING_AUTH_TOKEN - O token de entrada do cabeçalho WWW-Authenticate, Base64 codificado.
  • HttpNegotiateConstants.KEY_SPNEGO_CONTEXT - O contexto SPNEGO fornecido pelo autenticador na rodada anterior. O Microsoft Edge trata esse pacote como um objeto opaco e simplesmente o preserva entre rodadas.

pacote de resultados getAuthToken

O pacote de resultado final do getAuthToken (retornado como o valor de retorno de , ou por meio da getAuthTokenAccountAuthenticatorResponse) deve conter o nome da conta, o tipo de conta e o token, conforme definido na documentação do Android. Além disso, o pacote deve conter estas chaves:

  • HttpNegotiateConstants.KEY_SPNEGO_RESULT – o código de resultado do SPNEGO. Esse deve ser um dos valores definidos em HttpNegotiateConstants.
  • HttpNegotiateConstants.KEY_SPNEGO_CONTEXT – um contexto a ser retornado ao autenticador na próxima rodada de autenticação. Isso só será necessário se a autenticação estiver incompleta.

Recomendações de implementação

As recomendações a seguir devem ser consideradas ao implementar um autenticador SPNEGO.

  • Cada conta fornecida por um Autenticador de Conta SPNEGO deve corresponder a uma única entidade de usuário (conta) fornecida por um único centro de distribuição de chave.

  • O autenticador de conta não deve armazenar senhas. Em vez disso, ele deve armazenar TGTs para as entidades de usuário e exigir que os usuários insiram novamente suas senhas (ou outros dados de autenticação) quando o TGT expirar.

  • O autenticador de conta deve manter uma lista de aplicativos autorizados (ou assinaturas de aplicativo) para cada conta e recusar-se a fornecer tokens de serviço para outros aplicativos. A lista de aplicativos autorizados pode ser:

    • Integrado ao autenticador de conta.
    • Configurável pelo administrador do sistema.
    • Configurável pelo usuário. Nesse caso, o autenticador de conta pode optar por permitir que o usuário autorize novos aplicativos dinamicamente quando solicitar acesso pela primeira vez.

    O autenticador pode obter o uid do aplicativo de chamada usando o campo KEY_CALLER_UID do pacote de opções e identificar o aplicativo de solicitação usando context.getPackageManager().getNameForUid() ou chamada semelhante.

    Isso é necessário para garantir que aplicativos mal-intencionados executados pelo usuário não possam usar as credenciais do usuário para acessar serviços de maneiras não intencionais. Isso é importante porque o uso da opção de tokens personalizados (conforme descrito anteriormente) desabilita o próprio marcar de assinatura do Android ao obter tokens de auth.

  • A menos que seja incorporado ao autenticador de conta, o administrador do sistema ou o usuário precisam ser capazes de configurar o local do centro de distribuição de chaves.

Códigos de erro exibidos no Microsoft Edge

Além dos códigos de erro que podem ser encaminhados do aplicativo autenticador, os seguintes erros podem ser exibidos ao tentar autenticar uma solicitação:

  • ERR_MISSING_AUTH_CREDENTIALS: as informações da conta não podem ser utilizáveis. Ele pode ser gerado por qualquer um dos seguintes motivos.
    • O usuário não fez logon no aplicativo autenticador e nenhuma conta qualificada foi encontrada.
    • As informações da conta não podem ser obtidas porque o aplicativo atual não tem as permissões necessárias.
    • Há mais de uma conta qualificada e não podemos obter uma seleção do usuário.
  • ERR_UNEXPECTED: ocorreu um erro inesperado e a solicitação foi encerrada.
  • ERR_MISCONFIGURED_AUTH_ENVIRONMENT: a autenticação não pode ser concluída devido a alguns problemas na configuração do aplicativo. Algumas permissões podem estar ausentes.

Use Logcat para pesquisar a marca cr_net_auth no log do sistema para obter mais informações sobre a causa desses erros.

Usar o autenticador com o Microsoft Edge

O Edge usa várias políticas para controlar o uso da autenticação SPNEGO. Para habilitar a autenticação SPNEGO, o AuthServerAllowList deve ser configurado e o AuthAndroidNegotiateAccountType deve corresponder ao tipo de conta fornecido pelo autenticador SPNEGO.

Licença de conteúdo

Observação

Partes desta página são modificações baseadas no trabalho criado e compartilhado pela Chromium.org e usadas de acordo com os termos descritos na Licença Pública Creative Commons Atribuição 4.0 Internacional. A página original pode ser encontrada aqui.

Licença Creative Commons
Esse trabalho é licenciado sob uma Licença Attribution 4.0 International da Creative Commons.

Consulte também