Co oznacza zezwolenie „MANAGE_ACCOUNTS”?

18

Raz na jakiś czas czytam to zezwolenie MANAGE_ACCOUNTS jest potrzebne (tak naprawdę nazywa się to „KONTEN HINZUFÜGEN ODER ENTFERNEN”, ponieważ mam niemiecki telefon. Myślę, że poniższy tekst to coś w rodzaju „Dodaj lub usuń konta, utwórz konta i ustaw hasła, użyj konta na urządzeniu ”w języku angielskim).

Zadaję to pytanie, ponieważ chciałem zainstalować aplikację GitHub .

Myślę, że znalazłem bardzo podobne pytanie, które chciałbym tutaj zamieścić:

  1. Co to znaczy, że mogą tworzyć konta?
  2. Dlaczego Amazon (aplikacja Kindle) / GitHub miałaby tego potrzebować?
  3. Czy są jakieś zagrożenia?
Martin Thoma
źródło
Znalazłem również wyjaśnienie Guardiana, dlaczego proszą o pewne uprawnienia: guardian.co.uk/mobile/insideguardian/android-app-permissions Ale chciałbym uzyskać bardziej szczegółową odpowiedź, szczególnie jeśli chodzi o potencjalne ryzyko .
Martin Thoma,

Odpowiedzi:

18

Krótko mówiąc, GitHub korzysta z wewnętrznego menedżera systemu kont do przechowywania poświadczeń GitHub. Działa to dokładnie tak samo, jak dodanie konta Google lub konta Exchange. Zasadniczo logujesz się przy użyciu swoich poświadczeń i są one przechowywane w Menedżerze konta, co zapobiega ponownemu wprowadzaniu tych poświadczeń w przyszłości.

Jest to najbardziej przydatne, gdy poświadczenia są używane w wielu aplikacjach, ponieważ wystarczy zalogować się tylko raz. Na przykład Google Chrome będzie uzyskiwać dostęp do Twojego konta za pomocą Menedżera konta, zamiast zmuszać Cię do ponownego zalogowania (żółte okno dialogowe pojawiające się na dole z pytaniem, czy chcesz zalogować się przy użyciu lokalnego konta na telefonie podczas odwiedzania Gmaila lub innego Witryna Google w przeglądarce Google Chrome w telefonie).

Co to znaczy, że mogą tworzyć konta?

Mogą tworzyć lokalne konta w telefonie dla swoich aplikacji (i tylko ich aplikacji). Oto przykład listy na moim telefonie:

Zrzut ekranu
Zrzut ekranu (kliknij obraz, aby uzyskać większy wariant)

Dlaczego Amazon (aplikacja Kindle) / GitHub miałaby tego potrzebować?

Upraszcza poświadczenia w Androidzie. Jest to zalecana metoda, aby to zrobić.

Czy są jakieś zagrożenia?

Nie powinno być. Jeśli aplikacja korzysta z Menedżera konta i powie, chce użyć konta Google, będzie musiała wyraźnie poprosić Cię o pozwolenie, ponieważ potrzebuje tokena uwierzytelniającego do korzystania z tego konta. Zobacz więcej informacji na temat dokumentacji zestawu SDK .

Bryan Denny
źródło
3
Kiedy nie ma ryzyka, dlaczego każda aplikacja nie może domyślnie korzystać z menedżera konta?
Martin Thoma,
1
@Mose to dobre pytanie. Jako twórca Androida nie miałem doświadczenia w korzystaniu z AccountManager, ale uważam, że poprawną odpowiedzią jest to, że technicznie pozwala to na próbę uzyskania dostępu do któregokolwiek z kont wymienionych w telefonie (chociaż nadal powinien prosić o pozwolenie na dostęp do to konto przy pierwszym użyciu, o ile mi wiadomo)
Bryan Denny
1
Właśnie przejrzałem dokumenty API. Zasadniczo aplikacja wylicza istniejące konta i może je filtrować według typu, np. „Wszystkie konta google”. Jeśli konta brakuje, utworzy je. Te działania wymagają uprawnień GET_ACCOUNTS i MANAGE_ACCOUNTS. Jednak (!) Nic nie wydaje się ograniczać aplikacji do korzystania z dowolnego konta, które im się podoba, np. Do podszywania się pod Ciebie na koncie Google zamiast na koncie github. Najwyraźniej aplikacje mogą nawet uzyskać hasło do konta, jeśli zostało zapisane w menedżerze kont. Jeśli to prawda, dla tych uprawnień istnieje duże ryzyko. Musisz w pełni zaufać autorowi aplikacji.
deepc
Chwileczkę, @BryanDenny: Mówisz, że nie powinno być żadnego ryzyka. Ale czy zezwolenie na „dodawanie lub usuwanie kont” nie sugeruje, że taka aplikacja mogłaby np. Usuwać wszelkie ustanowione konta z urządzenia? Co uniemożliwia ustawienie innego hasła na innym koncie (powodując np. „Blokadę” późniejszych „zbyt wielu prób”)? Chociaż widzę wymagania, brakuje mi wskazanej warstwy bezpieczeństwa (np. Użytkownik musi jakoś potwierdzić takie zmiany lub być w stanie ograniczyć je do określonego konta / typu). Czy jest coś takiego? Nigdy nie zauważyłem żadnego „wyskakującego okienka” lub podobnego.
Izzy
8

Do zarządzania kontami Android używa kilku uprawnień; niektóre z nich są łatwo niezrozumiane. Bardzo dobre wyjaśnienie dotyczące korzystania z kont można znaleźć np. W odpowiedzi Dana na pytanie Co może zrobić aplikacja z uprawnieniem „KORZYSTAJ Z KONTA NA URZĄDZENIU”? . Pozwól mi spróbować podsumować związane z nimi uprawnienia i ich znaczenie:

  • ACCOUNT_MANAGER : To uprawnienie jest zastrzeżone dla aplikacji systemowych. Account manager to usługa działająca za kulisami i dbająca o to, aby wszystko działało zgodnie z oczekiwaniami.
  • AUTHENTICATE_ACCOUNTS : Aplikacja korzystająca z tego uprawnienia zazwyczaj zapewnia interfejs do obsługi określonego typu konta (który nie jest znany z zainstalowanego systemu Android), takiego jak Dropbox. W chwili zakupu system Android nie wie, jak zalogować się do Dropbox i jak postępować z kontem Dropbox - więc aplikacja Dropbox zapewnia ten mechanizm. Ponadto „osoba uwierzytelniająca konto” może ograniczyć działania, które aplikacja może wykonywać na koncie (więc można by np. Zarządzać tym za pomocą interfejsu sieciowego oferowanego przez usługę).
  • GET_ACCOUNTS : Uzyskaj listę dostępnych kont. W ten sposób aplikacja, która chce np. Użyć Dropbox do przechowywania, może sprawdzić, czy dostępne jest odpowiednie konto. Musi to zweryfikować przed użyciem.
  • ZARZĄDZAJ KONTO : Dokumentacja API nie jest tak jasna na temat tego uprawnienia. Ale zgodnie z odpowiedzią Bryansa aplikacja może usuwać / modyfikować tylko utworzone przez siebie konto. Oczywiście może utworzyć nowe konto i nim zarządzać.
  • USE_CREDENTIALS : Ta aplikacja może używać „danych logowania” do logowania się na konto. W większości przypadków „dane uwierzytelniające” oznaczają po prostu, że odpowiedni wystawca uwierzytelnienia tworzy odpowiedni token i przekazuje go dalej (jednak, jak sobie z tym poradzić, pozostawia się wystawcy). Podczas korzystania z konta po raz pierwszy Menedżer konta powinien upewnić się, że użytkownik zostanie zapytany, czy zezwala na to. Ponownie odpowiedź Dana dobrze wyjaśnia tę część.

Mam nadzieję, że udało mi się rzucić trochę światła. To mnie też denerwowało, więc zajęło mi to dwa dni. Jeśli coś jest nie tak, proszę zaznaczyć to w komentarzach, abym mógł to naprawić.

Izzy
źródło