Was bedeutet die Berechtigung "MANAGE_ACCOUNTS"?

18

Hin und wieder habe ich gelesen, dass die MANAGE_ACCOUNTS-Berechtigung erforderlich ist (eigentlich heißt sie "KONTEN HINZUFÜGEN ODER ENTFERNEN", da ich ein deutsches Telefon besitze. Der folgende Text lautet vermutlich "Konten hinzufügen oder entfernen, Konten erstellen und Passwörter festlegen, verwenden" Konten auf dem Gerät "auf Englisch).

Ich stelle diese Frage, weil ich die GitHub-App installieren wollte .

Ich denke, ich habe eine sehr ähnliche Frage gefunden, die ich hier aufnehmen möchte:

  1. Was bedeutet es, dass sie Konten erstellen können?
  2. Warum würde Amazon (Kindle App) / GitHub das überhaupt brauchen?
  3. Gibt es irgendwelche Risiken?
Martin Thoma
quelle
Ich habe auch eine Erklärung vom Guardian gefunden, warum er um einige Berechtigungen gebeten hat: guardian.co.uk/mobile/insideguardian/android-app-permissions Aber ich würde gerne eine detailliertere Antwort bekommen, insbesondere wenn es um potenzielle Risiken geht .
Martin Thoma

Antworten:

18

Kurz gesagt, GitHub verwendet den internen Account-System-Manager, um Ihre GitHub-Anmeldeinformationen zu speichern. Dies funktioniert genauso wie das Hinzufügen eines Google-Kontos oder eines Exchange-Kontos. Im Wesentlichen melden Sie sich mit Ihren Anmeldeinformationen an und diese werden im Account Manager gespeichert, sodass Sie diese Anmeldeinformationen in Zukunft nicht mehr erneut eingeben müssen.

Dies ist am nützlichsten, wenn die Anmeldeinformationen für mehrere Anwendungen verwendet werden, da Sie sich nur einmal anmelden müssen. Beispielsweise greift Google Chrome über den Kontomanager auf Ihr Konto zu, anstatt Sie zu zwingen, sich erneut anzumelden (das gelbe Dialogfeld, das unten angezeigt wird und Sie fragt, ob Sie sich bei einem Besuch von Google Mail oder einem anderen Konto auf Ihrem Telefon mit Ihrem lokalen Konto anmelden möchten) Google-Website im Google Chrome-Browser Ihres Telefons).

Was bedeutet es, dass sie Konten erstellen können?

Sie können auf Ihrem Telefon lokale Konten für ihre Anwendung (und nur für ihre Anwendung) erstellen. Hier ist ein Beispiel für eine Liste auf meinem Handy:

Bildschirmfoto
Screenshot (Bild anklicken für größere Variante)

Warum würde Amazon (Kindle App) / GitHub das überhaupt brauchen?

Es vereinfacht Anmeldeinformationen in Android. Dies ist die empfohlene Methode.

Gibt es irgendwelche Risiken?

Es sollte nicht geben. Wenn eine App den AccountManager verwendet und Ihr Google-Konto verwenden möchte, muss sie Sie explizit um Erlaubnis bitten, da sie ein Authentifizierungstoken zur Verwendung dieses Kontos benötigt. Weitere Informationen finden Sie in der SDK-Dokumentation .

Bryan Denny
quelle
3
Warum darf nicht jede APP standardmäßig den Account Manager verwenden, wenn kein Risiko besteht?
Martin Thoma
1
@ Elch, das ist eine gute Frage. Als Android Entwickler habe ich null Erfahrung mit der Accountmanager hatte, aber ich glaube , die richtige Antwort ist , dass es können Sie technisch zuzugreifen versuchen jede Konten auf dem Telefon aufgeführt von der (obwohl es immer noch um Erlaubnis fragen sollten Zugang zu ermöglichen das Konto bei der ersten Verwendung, soweit ich weiß)
Bryan Denny
1
Ich habe gerade die API-Dokumente durchgesehen. Grundsätzlich würde eine App vorhandene Konten auflisten und diese nach Typ filtern, z. B. "Alle Google-Konten". Wenn ein Konto fehlt, würde es eines erstellen. Diese Aktionen erfordern die Berechtigungen GET_ACCOUNTS und MANAGE_ACCOUNTS. Allerdings (!) Scheint nichts die Apps daran zu hindern, ein beliebiges Konto zu verwenden, z. B. um sich auf einem Google-Konto anstelle Ihres Github-Kontos auszugeben. Anscheinend können Apps sogar das Account-Passwort bekommen, wenn es im Account-Manager gespeichert wurde. Wenn dies zutrifft, besteht ein großes Risiko für diese Berechtigungen. Sie müssen dem Autor der App voll vertrauen.
Deepc
Warten Sie eine Sekunde, @BryanDenny: Sie sagen, es sollte keine Risiken geben. Bedeutet die Berechtigung zum Hinzufügen oder Entfernen von Konten jedoch nicht, dass eine solche App beispielsweise ein eingerichtetes Konto vom Gerät löschen kann ? Was hindert es daran, ein anderes Passwort für ein anderes Konto festzulegen (was zB später eine "Sperre" für "zu viele Versuche" verursacht)? Während ich die Anforderungen sehe, vermisse ich, dass auf die Sicherheitsschicht hingewiesen wird (z. B. muss der Benutzer solche Änderungen irgendwie bestätigen oder kann sie auf ein bestimmtes Konto / einen bestimmten Typ beschränken). Gibt es so etwas? Ich habe nie ein ähnliches "Popup" oder ähnliches bemerkt.
Izzy
8

Zum Verwalten von Konten verwendet Android mehrere Berechtigungen. Einige von ihnen werden leicht missverstanden. Eine sehr gute Erklärung zur Verwendung von Konten finden Sie z. B. in Dans Antwort auf die Frage Was kann eine App mit der Berechtigung "KONTEN AUF DEM GERÄT VERWENDEN" tun? . Lassen Sie mich versuchen, die damit verbundenen Berechtigungen und ihre Bedeutung zusammenzufassen:

  • ACCOUNT_MANAGER : Diese Berechtigung ist für System-Apps reserviert. Ein Account Manager ist der Service, der hinter den Kulissen arbeitet und dafür sorgt, dass alles wie erwartet funktioniert.
  • AUTHENTICATE_ACCOUNTS : Eine App, die diese Berechtigung verwendet, bietet normalerweise eine Schnittstelle für einen bestimmten Kontotyp (der dem vorinstallierten Android-System nicht bekannt ist), z. B. Dropbox. Im Auslieferungszustand weiß Android nicht, wie man sich bei Dropbox anmeldet und wie man mit einem Dropbox-Konto umgeht - daher bietet die Dropbox-App den Mechanismus. Zusätzlich kann ein "Kontoauthentifizierer" die Aktionen einschränken, die eine App mit dem Konto ausführen kann (so wäre es beispielsweise möglich, dies über eine vom Dienst angebotene Webschnittstelle zu verwalten).
  • GET_ACCOUNTS : Ruft eine Liste der verfügbaren Konten ab. Auf diese Weise kann eine App, die Dropbox zum Speichern verwenden möchte, überprüfen, ob ein passender Account verfügbar ist. Dies muss vor der Verwendung überprüft werden.
  • MANAGE_ACCOUNTS : Die API-Dokumentation enthält keine eindeutigen Informationen zu dieser Berechtigung. Laut Bryans Antwort kann eine App jedoch nur ein Konto löschen / ändern, das sie selbst erstellt hat. Natürlich kann es jedes neue Konto erstellen und verwalten.
  • USE_CREDENTIALS : Diese App verwendet möglicherweise die "Anmeldeinformationen", um sich bei einem Konto anzumelden. In den meisten Fällen bedeutet "Anmeldeinformationen" nur, dass der entsprechende Authentifikator ein passendes Token erstellt und dieses übergibt (wie man damit umgeht, bleibt jedoch dem Authentifikator überlassen). Wenn Sie ein Konto zum ersten Mal verwenden, die Account Manager sollten sicherstellen , wird der Benutzer gefragt , ob er dies erlaubt. Wieder erklärt Dans Antwort diesen Teil gut.

Ich hoffe, ich konnte etwas Licht ins Dunkel bringen. Das machte mich auch nervös und ich brauchte zwei Tage, um mich damit auseinanderzusetzen. Wenn ich etwas falsch gemacht habe, machen Sie bitte in den Kommentaren darauf aufmerksam, damit ich es korrigieren kann.

Izzy
quelle