Apa arti izin "MANAGE_ACCOUNTS"?

18

Kadang - kadang saya membaca bahwa MANAGE_ACCOUNTS Izin diperlukan (sebenarnya ini disebut "KONTEN HINZUFÜGEN ODER ENTFERNEN" karena saya memiliki telepon Jerman. Saya kira teks di bawah ini adalah sesuatu seperti "Tambah atau hapus akun, buat akun dan atur kata sandi, gunakan akun di perangkat "dalam bahasa Inggris).

Saya mengajukan pertanyaan ini karena saya ingin menginstal GitHub-App .

Saya pikir saya menemukan pertanyaan yang sangat mirip yang ingin saya sertakan di sini:

  1. Apa artinya mereka dapat membuat akun?
  2. Mengapa Amazon (aplikasi Kindle) / GitHub bahkan membutuhkan ini?
  3. Apakah ada risiko?
Martin Thoma
sumber
Saya juga menemukan penjelasan oleh Guardian, mengapa mereka meminta beberapa izin: guardian.co.uk/mobile/insideguardian/android-app-permissions Tapi saya ingin mendapatkan jawaban yang lebih terperinci, terutama jika menyangkut risiko potensial. .
Martin Thoma

Jawaban:

18

Singkatnya, GitHub menggunakan manajer Sistem Akun internal untuk menyimpan kredensial GitHub Anda. Ini berfungsi sama persis seperti menambahkan akun Google atau akun Exchange. Pada dasarnya, Anda masuk dengan kredensial Anda dan disimpan di Account Manager, yang mencegah Anda dari harus memasukkan kembali kredensial ini lagi di masa depan.

Ini paling berguna ketika kredensial digunakan di beberapa aplikasi karena Anda hanya perlu login sekali. Misalnya, Google Chrome akan mengakses akun Anda melalui Pengelola Akun alih-alih memaksa Anda untuk masuk lagi (dialog kuning yang muncul di bagian bawah menanyakan apakah Anda ingin masuk dengan Akun yang dimiliki secara lokal di ponsel Anda ketika mengunjungi gmail atau yang lain Situs web Google di browser Google Chrome ponsel Anda).

Apa artinya mereka dapat membuat akun?

Mereka dapat membuat akun lokal di ponsel Anda untuk aplikasi mereka (dan hanya aplikasi mereka). Berikut ini contoh daftar di ponsel saya:

Tangkapan layar
Tangkapan layar (Klik gambar untuk varian yang lebih besar)

Mengapa Amazon (aplikasi Kindle) / GitHub bahkan membutuhkan ini?

Ini menyederhanakan kredensial di Android. Ini metode yang disarankan untuk melakukan ini.

Apakah ada risiko?

Seharusnya tidak ada. Jika suatu aplikasi menggunakan Pengelola Akun dan berkata, ingin menggunakan akun Google Anda, maka ia harus secara eksplisit meminta izin kepada Anda karena memerlukan token autorikasi untuk menggunakan akun itu. Lihat info lebih lanjut tentang dokumentasi SDK .

Bryan Denny
sumber
3
Ketika tidak ada risiko, mengapa tidak setiap APP diizinkan untuk menggunakan manajer akun secara default?
Martin Thoma
1
@ Pilih itu pertanyaan yang bagus. Sebagai pengembang Android, saya tidak memiliki pengalaman menggunakan AccountManager, tetapi saya percaya jawaban yang benar adalah secara teknis Anda dapat mencoba mengakses akun apa pun yang tercantum di ponsel Anda (meskipun masih harus meminta izin untuk mengizinkan akses ke akun itu pada penggunaan pertama, sejauh yang saya tahu)
Bryan Denny
1
Saya baru saja melihat-lihat dokumen API. Pada dasarnya sebuah aplikasi akan menghitung akun yang ada dan mungkin memfilternya berdasarkan jenis, misalnya "semua akun google". Jika sebuah akun hilang, itu akan membuatnya. Tindakan ini memerlukan izin GET_ACCOUNTS dan MANAGE_ACCOUNTS. Namun (!), Sepertinya tidak ada yang membatasi aplikasi untuk menggunakan akun apa pun yang mereka suka, mis. Untuk menyamar sebagai Anda di akun google alih-alih akun github Anda. Rupanya aplikasi bahkan bisa mendapatkan kata sandi akun, jika disimpan di pengelola akun. Jika itu benar, ada risiko besar untuk izin tersebut. Anda harus sepenuhnya mempercayai pembuat aplikasi.
deepc
Tunggu sebentar, @BryanDenny: Anda bilang seharusnya tidak ada risiko. Tetapi tidak izin untuk "menambah atau menghapus account" menyiratkan seperti sebuah aplikasi bisa misalnya menghapus setiap akun yang didirikan dari perangkat? Apa yang mencegahnya menetapkan kata sandi yang berbeda pada beberapa akun lain (misalnya menyebabkan "kunci" untuk "terlalu banyak upaya" di kemudian hari)? Sementara saya melihat persyaratannya, saya kehilangan lapisan keamanan yang ditunjukkan (misalnya pengguna harus mengkonfirmasi perubahan tersebut, atau dapat membatasinya ke akun / jenis tertentu). Apakah ada hal seperti itu? Saya tidak pernah memperhatikan "popup" terkait atau sejenisnya.
Izzy
8

Untuk mengelola akun, Android menggunakan beberapa izin; beberapa dari mereka mudah disalahpahami. Penjelasan yang sangat baik tentang penggunaan akun dapat ditemukan dalam jawaban Dan pada pertanyaan. Apa yang bisa dilakukan aplikasi dengan izin "GUNAKAN AKUN PADA PERANGKAT"? . Biarkan saya mencoba meringkas izin yang terlibat dan apa artinya:

  • ACCOUNT_MANAGER : Izin ini dicadangkan untuk aplikasi sistem. Account-manager adalah layanan yang bekerja di belakang layar dan menjaga semuanya berjalan seperti yang diharapkan.
  • AUTHENTICATE_ACCOUNTS : Aplikasi yang menggunakan izin ini biasanya menyediakan antarmuka untuk menangani jenis akun tertentu (yang tidak dikenal oleh sistem Android yang sudah diinstal sebelumnya), seperti Dropbox. Saat dikirim, Android tidak tahu cara masuk ke Dropbox dan bagaimana cara berurusan dengan akun Dropbox - sehingga aplikasi Dropbox menyediakan mekanisme. Selain itu, "autentikator akun" mungkin membatasi tindakan yang dapat dilakukan suatu aplikasi dengan akun tersebut (jadi, misalnya, dimungkinkan untuk mengelola ini melalui beberapa antarmuka web yang ditawarkan oleh layanan).
  • GET_ACCOUNTS : Dapatkan daftar akun yang tersedia. Dengan cara ini aplikasi yang ingin mis menggunakan Dropbox untuk penyimpanan dapat memeriksa apakah akun pas tersedia. Ini harus memverifikasi ini sebelum menggunakannya.
  • MANAGE_ACCOUNTS : Dokumentasi API tidak begitu jelas tentang izin ini. Tetapi menurut jawaban Bryans , aplikasi hanya dapat menghapus / memodifikasi akun yang dibuatnya sendiri. Tentu saja dapat membuat akun baru, dan mengelolanya.
  • USE_CREDENTIALS : Aplikasi ini dapat menggunakan "kredensial" untuk masuk ke akun. Dalam kebanyakan kasus, "kredensial" hanya berarti autentikator yang sesuai menciptakan token yang pas dan menyerahkannya (meskipun, bagaimana cara menangani yang diserahkan ke autentikator). Saat menggunakan akun untuk pertama kalinya, Manajer Akun harus memastikan pengguna ditanya apakah dia mengizinkan ini. Sekali lagi, jawaban Dan menjelaskan bagian ini dengan baik.

Saya harap saya bisa menjelaskan. Ini adalah sesuatu yang membuat saya gugup juga, jadi saya butuh dua hari untuk menggali. Jika ada yang salah, harap tunjukkan di komentar agar saya dapat memperbaikinya.

Izzy
sumber