Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 SPNEGO Authenticator é um AccountAuthenticator do Android. Dessa forma, ele deve seguir o padrão descrito em AbstractAccountAuthenticator. Ele deve implementar uma classe de autenticador 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 gravador (por exemplo, com.example.spnego). O tipo de conta deve ser definido para usar customTokens e deve suportar o recurso "SPNEGO" (HttpNegotiateConstants.SPNEGO_FEATURE).
Interface para o Microsoft Edge
O Edge encontra 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 contas do Android, por meio de AbstractAccountManager.getAuthToken em particular. Edge, em org.chromium.net.HttpNegotiateConstants , define mais algumas chaves e valores que são usados nos argumentos para getAuthTokene no pacote de resultados retornado.
argumentos getAuthToken
Quando getAuthToken é chamado, o authTokenType é "SPNEGO:HOSTBASED:<spn>" em que <spn> é a entidade de segurança para a 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 de segurança, mas se o fizerem, usarão um prefixo diferente. Os autenticadores SPNEGO devem marcar o prefixo.
O options pacote contém estas chaves:
- KEY_CALLER_PID
- KEY_CALLER_UID
-
HttpNegotiateConstants.KEY_CAN_DELEGATE- Verdadeiro se a delegação for permitida, falso se não for permitida.
Se essa for a segunda rodada ou a rodada posterior 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, codificado em Base64. -
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 as rodadas.
Pacote de resultados getAuthToken
O pacote de resultados finais de getAuthToken (retornado como o valor de retorno de ou por meio de AccountAuthenticatorResponse) deve conter o nome da conta, o tipo de getAuthTokenconta 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 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 um único usuário principal (conta) fornecido por um único centro de distribuição de chaves.
O autenticador de conta não deve armazenar senhas. Em vez disso, ele deve armazenar TGTs para as entidades de segurança do 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 a 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 ele 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 solicitante usando
context.getPackageManager().getNameForUid()uma chamada semelhante.Isso é necessário para garantir que aplicativos maliciosos 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 a própria marca de assinatura do Android ao obter tokens de autenticação.
A menos que ele esteja integrado ao autenticador de conta, o administrador do sistema ou o usuário precisa ser capaz 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 usadas. 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.
- Não é possível obter as informações da conta 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 o Logcat para pesquisar a marca de 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.
Esse trabalho é licenciado sob uma Licença Attribution 4.0 International da Creative Commons.