Che cosa significa autorizzazione "MANAGE_ACCOUNTS"?


18

Di tanto in tanto leggo che è necessaria l' autorizzazione MANAGE_ACCOUNTS (in realtà si chiama "KONTEN HINZUFÜGEN ODER ENTFERNEN" poiché ho un telefono tedesco. Immagino che il testo qui sotto sia qualcosa come "Aggiungi o rimuovi account, crea account e imposta password, usa account sul dispositivo "in inglese).

Sto ponendo questa domanda perché volevo installare l' app GitHub .

Penso di aver trovato una domanda molto simile che vorrei includere qui:

  1. Cosa significa che possono creare account?
  2. Perché Amazon (app Kindle) / GitHub dovrebbero averne bisogno?
  3. Ci sono dei rischi?

Ho anche trovato una spiegazione da parte del Guardian, perché richiedono alcune autorizzazioni: guardian.co.uk/mobile/insideguardian/android-app-permissions Ma vorrei ottenere una risposta più dettagliata, soprattutto quando si tratta di potenziali rischi .
Martin Thoma,

Risposte:


18

In breve, GitHub utilizza il gestore del sistema di account interno per archiviare le credenziali di GitHub. Funziona esattamente come l'aggiunta di un account Google o di un account Exchange. In sostanza, si accede con le proprie credenziali e queste sono archiviate in Account Manager, il che impedisce di reinserire nuovamente tali credenziali in futuro.

Ciò è molto utile quando le credenziali vengono utilizzate su più applicazioni poiché è necessario effettuare l'accesso una sola volta. Ad esempio, Google Chrome accederà al tuo account tramite Account Manager invece di forzarti ad accedere di nuovo (la finestra di dialogo gialla che si apre in basso ti chiede se vuoi accedere con il tuo account localmente tenuto sul tuo telefono quando visiti gmail o un altro Sito Web di Google sul browser Google Chrome del telefono).

Cosa significa che possono creare account?

Possono creare account locali sul telefono per la loro applicazione (e solo la loro applicazione). Ecco un esempio di un elenco sul mio telefono:

Immagine dello schermo
Schermata (fare clic sull'immagine per una variante più grande)

Perché Amazon (app Kindle) / GitHub dovrebbero averne bisogno?

Semplifica le credenziali in Android. È il metodo consigliato per farlo.

Ci sono dei rischi?

Non dovrebbe esserci. Se un'app utilizza AccountManager e dice, desidera utilizzare il tuo account Google, dovrà richiedere esplicitamente l'autorizzazione in quanto ha bisogno di un token di autenticazione per utilizzare tale account. Ulteriori informazioni sulla documentazione dell'SDK .


3
Quando non vi è alcun rischio, perché ogni APP non è autorizzata a utilizzare l'account manager per impostazione predefinita?
Martin Thoma,

1
@Scegli questa è una buona domanda. Come sviluppatore Android, non ho avuto esperienza con AccountManager, ma credo che la risposta corretta sia che tecnicamente ti consente di tentare di accedere a uno degli account elencati sul tuo telefono (anche se dovrebbe comunque chiedere l'autorizzazione per consentire l'accesso a quell'account al primo utilizzo, per quanto ne so)
Bryan Denny

1
Ho appena sfogliato i documenti API. Fondamentalmente un'app enumera gli account esistenti e può filtrarli per tipo, ad esempio "tutti gli account google". Se manca un account, ne creerebbe uno. Queste azioni richiedono autorizzazioni GET_ACCOUNTS e MANAGE_ACCOUNTS. Tuttavia (!), Nulla sembra impedire alle app di utilizzare qualsiasi account che preferiscono, ad esempio per impersonare te su un account Google anziché sul tuo account github. Apparentemente le app possono persino ottenere la password dell'account, se è stata archiviata in Gestione account. Se questo è vero, c'è un grosso rischio per quelle autorizzazioni. Devi fidarti completamente dell'autore dell'app.
deepc

Aspetta un secondo, @BryanDenny: dici che non dovrebbero esserci rischi. Ma il permesso di "aggiungere o rimuovere account" non implica che un'app di questo tipo possa, ad esempio, eliminare un account stabilito dal dispositivo? Cosa gli impedisce di impostare una password diversa su qualche altro account (causando ad esempio un "blocco" per "troppi tentativi" in seguito)? Mentre vedo i requisiti, mi manca il livello di sicurezza indicato (ad es. L'utente deve confermare tali modifiche in qualche modo o essere in grado di limitarlo a un determinato account / tipo). C'è una cosa del genere? Non ho mai notato alcun "popup" correlato o simile.
Izzy

8

Per gestire gli account, Android utilizza diverse autorizzazioni; alcuni di loro sono facilmente fraintesi. Un'ottima spiegazione sull'uso degli account può essere trovata ad esempio nella risposta di Dan sulla domanda Cosa può fare un'app con l'autorizzazione "UTILIZZARE ACCOUNT SUL DISPOSITIVO"? . Vorrei provare a riassumere le autorizzazioni coinvolte e il loro significato:

  • ACCOUNT_MANAGER : questa autorizzazione è riservata alle app di sistema. Un account manager è il servizio che lavora dietro le quinte e si occupa di tutto come previsto.
  • AUTHENTICATE_ACCOUNTS : un'app che utilizza questa autorizzazione di solito fornisce un'interfaccia per gestire un determinato tipo di account (che non è noto dal sistema Android preinstallato), come Dropbox. Al momento della spedizione, Android non sa come accedere a Dropbox e come gestire un account Dropbox, quindi l'app Dropbox fornisce il meccanismo. Inoltre, un "autenticatore di account" potrebbe limitare le azioni che un'app può eseguire con l'account (quindi sarebbe possibile, ad esempio, amministrarlo tramite un'interfaccia Web offerta dal servizio).
  • GET_ACCOUNTS : ottieni un elenco di account disponibili. In questo modo un'app che desidera ad esempio utilizzare Dropbox per l'archiviazione può verificare se è disponibile un account adatto. Deve verificarlo prima di usarlo.
  • MANAGE_ACCOUNTS : la documentazione dell'API non è così chiara su questa autorizzazione. Ma secondo la risposta di Bryans , un'app può solo cancellare / modificare un account che ha creato da sola. Naturalmente può creare qualsiasi nuovo account e gestirlo.
  • USE_CREDENTIALS : questa app può utilizzare le "credenziali" per accedere a un account. Nella maggior parte dei casi, "credenziali" significa solo che l'autenticatore corrispondente crea un token adeguato e lo consegna (tuttavia, come gestirlo viene lasciato all'autenticatore). Quando si utilizza un account per la prima volta, il gestore dell'account deve assicurarsi che all'utente venga chiesto se lo consente. Ancora una volta, la risposta di Dan spiega bene questa parte.

Spero di essere riuscito a far luce. Anche questo mi ha reso nervoso, quindi ho impiegato due giorni per scavare. Se ho sbagliato qualcosa, segnalalo nei commenti in modo da poterlo correggere.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.