Que signifie l'autorisation "MANAGE_ACCOUNTS"?

18

De temps en temps, je lis que MANAGE_ACCOUNTS Une autorisation est nécessaire (en fait, elle s'appelle "KONTEN HINZUFÜGEN ODER ENTFERNEN" car j'ai un téléphone allemand. Je suppose que le texte ci-dessous est quelque chose comme "Ajouter ou supprimer des comptes, créer des comptes et définir des mots de passe, utiliser comptes sur l'appareil "en anglais).

Je pose cette question parce que je voulais installer l'application GitHub .

Je pense avoir trouvé une question très similaire que j'aimerais inclure ici:

  1. Qu'est-ce que cela signifie qu'ils peuvent créer des comptes?
  2. Pourquoi Amazon (application Kindle) / GitHub en aurait-il même besoin?
  3. Y a-t-il des risques?
Martin Thoma
la source
J'ai également trouvé une explication par le Guardian, pourquoi ils demandent des autorisations: guardian.co.uk/mobile/insideguardian/android-app-permissions Mais je voudrais obtenir une réponse plus détaillée, surtout en ce qui concerne les risques potentiels .
Martin Thoma

Réponses:

18

En bref, GitHub utilise le gestionnaire de système de compte interne pour stocker vos informations d'identification GitHub. Cela fonctionne exactement comme l'ajout d'un compte Google ou d'un compte Exchange. Essentiellement, vous vous connectez avec vos informations d'identification et elles sont stockées dans le gestionnaire de compte, ce qui vous évite d'avoir à ressaisir ces informations d'identification à l'avenir.

Ceci est particulièrement utile lorsque les informations d'identification sont utilisées dans plusieurs applications, car vous ne devez vous connecter qu'une seule fois. Par exemple, Google Chrome accédera à votre compte via le gestionnaire de compte au lieu de vous forcer à vous reconnecter (la boîte de dialogue jaune qui apparaît en bas vous demande si vous souhaitez vous connecter avec votre compte local sur votre téléphone lorsque vous visitez Gmail ou un autre). Site Web Google sur le navigateur Google Chrome de votre téléphone).

Qu'est-ce que cela signifie qu'ils peuvent créer des comptes?

Ils peuvent créer des comptes locaux sur votre téléphone pour leur application (et uniquement leur application). Voici un exemple de liste sur mon téléphone:

Capture d'écran
Capture d'écran (Cliquez sur l'image pour une plus grande variante)

Pourquoi Amazon (application Kindle) / GitHub en aurait-il même besoin?

Il simplifie les informations d'identification dans Android. C'est la méthode recommandée pour ce faire.

Y a-t-il des risques?

Il ne devrait pas y en avoir. Si une application utilise le AccountManager et dit qu'elle souhaite utiliser votre compte Google, elle devra alors vous demander explicitement la permission car elle a besoin d'un jeton d'authentification pour utiliser ce compte. Voir plus d'informations sur la documentation du SDK .

Bryan Denny
la source
3
Lorsqu'il n'y a aucun risque, pourquoi toutes les applications ne sont-elles pas autorisées à utiliser le gestionnaire de compte par défaut?
Martin Thoma
1
@Moose c'est une bonne question. En tant que développeur Android, je n'ai aucune expérience de l'utilisation de AccountManager, mais je pense que la bonne réponse est qu'il vous permet techniquement d'accéder à l' un des comptes répertoriés sur votre téléphone (bien qu'il devrait toujours demander la permission d'autoriser l'accès à ce compte lors de la première utilisation, pour autant que je sache)
Bryan Denny
1
Je viens de parcourir les documents de l'API. Fondamentalement, une application énumère les comptes existants et peut les filtrer par type, par exemple "tous les comptes Google". Si un compte manque, il en créera un. Ces actions nécessitent les autorisations GET_ACCOUNTS et MANAGE_ACCOUNTS. Cependant (!), Rien ne semble empêcher les applications d'utiliser le compte de leur choix, par exemple pour vous faire passer pour un compte Google au lieu de votre compte Github. Apparemment, les applications peuvent même obtenir le mot de passe du compte, s'il a été stocké dans le gestionnaire de compte. Si c'est vrai, il y a un gros risque pour ces autorisations. Vous devez faire entièrement confiance à l'auteur de l'application.
deepc
Attendez une seconde, @BryanDenny: Vous dites qu'il ne devrait y avoir aucun risque. Mais l'autorisation d'ajouter ou de supprimer des comptes n'implique-t-elle pas qu'une telle application pourrait par exemple supprimer un compte établi de l'appareil? Qu'est-ce qui l'empêche de définir un mot de passe différent sur un autre compte (provoquant par exemple un "verrou" pour "trop ​​de tentatives" par la suite)? Pendant que je vois les exigences, je manque la couche de sécurité indiquée (par exemple, l'utilisateur doit confirmer ces changements d'une manière ou d'une autre ou être en mesure de le restreindre à un compte / type donné). Une telle chose existe t elle? Je n'ai jamais remarqué de "popup" ou similaire.
Izzy
8

Pour gérer les comptes, Android utilise plusieurs autorisations; certains d'entre eux sont facilement mal compris. Une très bonne explication sur l' utilisation des comptes peut par exemple être trouvée dans la réponse de Dan à la question Que peut faire une application avec l'autorisation "UTILISER LES COMPTES SUR L'APPAREIL"? . Permettez-moi d'essayer de résumer les autorisations impliquées et ce qu'elles signifient:

  • ACCOUNT_MANAGER : cette autorisation est réservée aux applications système. Un gestionnaire de compte est le service qui travaille en coulisses et veille à ce que tout fonctionne comme prévu.
  • AUTHENTICATE_ACCOUNTS : une application utilisant cette autorisation fournit généralement une interface pour gérer un certain type de compte (qui n'est pas connu du système Android préinstallé), comme Dropbox. À la livraison, Android ne sait pas comment se connecter à Dropbox et comment gérer un compte Dropbox - c'est pourquoi l'application Dropbox fournit le mécanisme. De plus, un "authentificateur de compte" peut restreindre les actions qu'une application peut effectuer avec le compte (il serait donc par exemple possible de l'administrer via une interface Web offerte par le service).
  • GET_ACCOUNTS : Obtenez une liste des comptes disponibles. De cette façon, une application qui souhaite par exemple utiliser Dropbox pour le stockage peut vérifier si un compte approprié est disponible. Il doit le vérifier avant de l'utiliser.
  • MANAGE_ACCOUNTS : la documentation de l'API n'est pas très claire sur cette autorisation. Mais selon la réponse de Bryans , une application ne peut que supprimer / modifier un compte qu'elle a créé elle-même. Bien sûr, il peut créer un nouveau compte et gérer cela.
  • USE_CREDENTIALS : Cette application peut utiliser les "informations d'identification" pour se connecter à un compte. Dans la plupart des cas, les "informations d'identification" signifient simplement que l'authentificateur correspondant crée un jeton approprié et les remet (cependant, la façon de gérer cela est laissée à l'authentificateur). Lorsque vous utilisez un compte pour la première fois, le gestionnaire de compte doit s'assurer que l'utilisateur est invité à autoriser cela. Encore une fois, la réponse de Dan explique bien cette partie.

J'espère avoir pu faire la lumière. C'était aussi quelque chose qui me rendait nerveux, alors j'ai pris deux jours pour creuser. Si je me trompe, veuillez le signaler dans les commentaires afin que je puisse le corriger.

Izzy
la source