O que significa permissão "MANAGE_ACCOUNTS"?

18

De vez em quando, leio que é necessária a permissão MANAGE_ACCOUNTS (na verdade, é chamada de "KONTEN HINZUFÜGEN ODER ENTFERNEN", pois tenho um telefone alemão. Acho que o texto abaixo é algo como "Adicionar ou remover contas, criar contas e definir senhas, use contas no dispositivo "em inglês).

Estou fazendo esta pergunta porque queria instalar o GitHub-App .

Acho que encontrei uma pergunta muito semelhante que gostaria de incluir aqui:

  1. O que significa que eles podem criar contas?
  2. Por que a Amazon (aplicativo Kindle) / GitHub precisaria disso?
  3. Existe algum risco?
Martin Thoma
fonte
Eu também encontrei uma explicação do Guardian, por que eles solicitam algumas permissões: guardian.co.uk/mobile/insideguardian/android-app-permissions Mas eu gostaria de obter uma resposta mais detalhada, especialmente quando se trata de riscos potenciais .
Martin Thoma

Respostas:

18

Em resumo, o GitHub está usando o gerente interno do Sistema de Contas para armazenar suas credenciais do GitHub. Isso funciona exatamente como adicionar uma conta do Google ou uma conta do Exchange. Essencialmente, você está efetuando login com suas credenciais e elas são armazenadas no Gerenciador de Contas, o que impede que você precise digitar essas credenciais novamente no futuro.

Isso é mais útil quando as credenciais são usadas em vários aplicativos, pois você só precisa fazer o login uma vez. Por exemplo, o Google Chrome acessará sua conta por meio do Gerenciador de contas, em vez de forçá-lo a fazer login novamente (a caixa de diálogo amarela exibida na parte inferior perguntando se você deseja fazer login com sua conta localmente mantida no telefone ao visitar o gmail ou outro Site do Google no navegador Google Chrome do seu telefone).

O que significa que eles podem criar contas?

Eles podem criar contas locais no telefone para o aplicativo (e somente o aplicativo). Aqui está um exemplo de uma lista no meu telefone:

Captura de tela
Captura de tela (clique na imagem para obter uma variante maior)

Por que a Amazon (aplicativo Kindle) / GitHub precisaria disso?

Simplifica as credenciais no Android. É o método recomendado para fazer isso.

Existe algum risco?

Não deveria haver. Se um aplicativo usar o AccountManager e disser que deseja usar sua Conta do Google, precisará solicitar explicitamente sua permissão, pois precisa de um token de autenticação para usar essa conta. Veja mais informações na documentação do SDK .

Bryan Denny
fonte
3
Quando não há risco, por que nem todos os aplicativos podem usar o gerenciador de contas por padrão?
Martin Thoma
11
@ Moose é uma boa pergunta. Como desenvolvedor do Android, não tenho experiência no uso do AccountManager, mas acredito que a resposta correta é que tecnicamente permite que você tente acessar qualquer uma das contas listadas no seu telefone (embora ainda deva pedir permissão para permitir o acesso a que conta na primeira utilização, tanto quanto eu sei)
Bryan Denny
11
Acabei de navegar pelos documentos da API. Basicamente, um aplicativo enumera contas existentes e pode filtrá-las por tipo, por exemplo, "todas as contas do Google". Se uma conta estiver faltando, ela criará uma. Essas ações requerem permissões GET_ACCOUNTS e MANAGE_ACCOUNTS. No entanto (!), Nada parece impedir os aplicativos de usar qualquer conta que eles gostem, por exemplo, para se passar por uma conta do Google em vez da sua conta do Github. Aparentemente, os aplicativos podem até obter a senha da conta, se ela estiver armazenada no gerente da conta. Se isso for verdade, há um grande risco para essas permissões. Você precisa confiar totalmente no autor do aplicativo.
deepc
Espere um segundo, @BryanDenny: Você diz que não deve haver riscos. Mas a permissão para "adicionar ou remover contas" não implica que esse aplicativo possa, por exemplo, excluir qualquer conta estabelecida do dispositivo? O que o impede de definir uma senha diferente em outra conta (causando, por exemplo, um "bloqueio" para "muitas tentativas" posteriormente)? Enquanto vejo os requisitos, sinto falta da camada de segurança apontada (por exemplo, o usuário deve confirmar essas alterações de alguma forma ou poder restringi-las a uma determinada conta / tipo). Existe uma coisa dessas? Eu nunca notei nenhum "popup" relacionado ou algo parecido.
Izzy
8

Para gerenciar contas, o Android usa várias permissões; alguns deles são facilmente incompreendidos. Uma explicação muito boa sobre o uso de contas pode ser encontrada, por exemplo, na resposta de Dan sobre a pergunta O que um aplicativo pode fazer com a permissão "USAR CONTAS NO DISPOSITIVO"?. Deixe-me tentar resumir as permissões envolvidas e o que elas significam:

  • GERENTE DE CONTAS : esta permissão está reservada para aplicativos do sistema. Um gerente de contas é o serviço que trabalha nos bastidores e cuida de que tudo funcione conforme o esperado.
  • AUTHENTICATE_ACCOUNTS : um aplicativo que usa essa permissão geralmente fornece uma interface para lidar com um determinado tipo de conta (que não é conhecido pelo sistema Android pré-instalado), como o Dropbox. Conforme enviado, o Android não sabe como fazer login no Dropbox e como lidar com uma conta do Dropbox - portanto, o aplicativo Dropbox fornece o mecanismo. Além disso, um "autenticador de conta" pode restringir as ações que um aplicativo pode executar com a conta (por exemplo, seria possível administrar isso por meio de alguma interface da web oferecida pelo serviço).
  • GET_ACCOUNTS : uma lista de contas disponíveis. Dessa forma, um aplicativo que deseja, por exemplo, usar o Dropbox para armazenamento pode verificar se uma conta adequada está disponível. Ele deve verificar isso antes de usá-lo.
  • MANAGE_ACCOUNTS : A documentação da API não é clara sobre esta permissão. Mas, de acordo com a resposta de Bryans , um aplicativo pode excluir / modificar apenas uma conta que ele próprio criou. Claro que pode criar qualquer nova conta e gerenciar isso.
  • USE_CREDENTIALS : Este aplicativo pode usar as "credenciais" para fazer login em uma conta. Na maioria dos casos, "credenciais" significa apenas que o autenticador correspondente cria um token adequado e o entrega (no entanto, como lidar com isso é deixado para o autenticador). Ao usar uma conta pela primeira vez, o gerente de contas deve garantir que o usuário seja perguntado se ele permite isso. Mais uma vez, a resposta de Dan explica bem essa parte.

Espero ter sido capaz de lançar alguma luz. Isso foi algo que me deixou nervosa também, então levei dois dias para investigar. Se houver algo errado, aponte nos comentários para que eu possa corrigi-lo.

Izzy
fonte