Что означает разрешение «MANAGE_ACCOUNTS»?

18

Время от времени я читал, что необходимо разрешение MANAGE_ACCOUNTS (на самом деле оно называется «KONTEN HINZUFÜGEN ODER ENTFERNEN», так как у меня есть немецкий телефон. Я думаю, что текст ниже выглядит как «Добавить или удалить учетные записи, создать учетные записи и установить пароли, использовать учетные записи на устройстве "на английском языке".

Я задаю этот вопрос, потому что я хотел установить GitHub-App .

Я думаю, что нашел очень похожий вопрос, который я хотел бы включить сюда:

  1. Что это значит, что они могут создавать учетные записи?
  2. Зачем Amazon (приложение Kindle) / GitHub это вообще нужно?
  3. Есть ли риски?
Мартин Тома
источник
Я также нашел объяснение от Guardian, почему они запрашивают некоторые разрешения: guardian.co.uk/mobile/insideguardian/android-app-permissions Но я хотел бы получить более подробный ответ, особенно когда речь идет о потенциальных рисках ,
Мартин Тома

Ответы:

18

Короче говоря, GitHub использует внутренний менеджер системы учетных записей для хранения ваших учетных данных GitHub. Это работает точно так же, как при добавлении учетной записи Google или учетной записи Exchange. По сути, вы входите в систему со своими учетными данными, и они хранятся в диспетчере учетных записей, что предотвращает необходимость повторного ввода этих учетных данных в будущем.

Это наиболее полезно, когда учетные данные используются в нескольких приложениях, поскольку вам нужно войти в систему только один раз. Например, Google Chrome получит доступ к вашей учетной записи через менеджер учетных записей, а не заставит вас снова войти в систему (в нижней части всплывающее диалоговое окно с желтым диалоговым окном, спрашивающее, хотите ли вы войти в свою локальную учетную запись на своем телефоне при посещении Gmail или другого сайта). Веб-сайт Google в браузере Google Chrome вашего телефона).

Что это значит, что они могут создавать учетные записи?

Они могут создавать локальные учетные записи на вашем телефоне для своего приложения (и только их приложения). Вот пример списка на моем телефоне:

Скриншот
Снимок экрана (щелкните изображение, чтобы увеличить его)

Зачем Amazon (приложение Kindle) / GitHub это вообще нужно?

Это упрощает учетные данные в Android. Это рекомендуемый способ сделать это.

Есть ли риски?

Там не должно быть. Если приложение использует AccountManager и, скажем, хочет использовать вашу учетную запись Google, то оно должно будет явно запросить у вас разрешение, поскольку для использования этой учетной записи требуется токен авторизации. Смотрите больше информации в документации SDK .

Брайан Денни
источник
3
Когда нет риска, почему не каждому приложению разрешено использовать менеджер по умолчанию?
Мартин Тома
1
@ Лось, это хороший вопрос. Как разработчик Android, у меня был нулевой опыт использования AccountManager, но я считаю, что правильный ответ заключается в том, что он технически позволяет вам пытаться получить доступ к любой из учетных записей, перечисленных на вашем телефоне (хотя он все равно должен запрашивать разрешение на доступ к насколько я знаю, этот аккаунт при первом использовании)
Bryan Denny
1
Я только что просмотрел документы API. По сути, приложение будет перечислять существующие учетные записи и может фильтровать их по типу, например, «все учетные записи Google». Если учетная запись отсутствует, она будет создана. Эти действия требуют разрешения GET_ACCOUNTS и MANAGE_ACCOUNTS. Однако (!), Кажется, ничто не мешает приложениям использовать любую учетную запись, которая им нравится, например, чтобы выдать себя за вас в учетной записи Google вместо вашей учетной записи github. Видимо приложения могут даже получить пароль учетной записи, если он был сохранен в диспетчере учетных записей. Если это правда, существует большой риск для этих разрешений. Вы должны полностью доверять автору приложения.
Deepc
Подождите секунду, @BryanDenny: Вы говорите, что не должно быть никаких рисков. Но не означает ли разрешение «добавлять или удалять учетные записи», что такое приложение может, например, удалить любую установленную учетную запись с устройства? Что мешает ему установить другой пароль для какой-либо другой учетной записи (вызывая, например, «блокировку» для «слишком большого количества попыток» в дальнейшем)? Несмотря на то, что я вижу требования, мне не хватает указанного уровня безопасности (например, пользователь должен как-то подтвердить такие изменения или иметь возможность ограничить его определенной учетной записью / типом). Что-то подобное существует? Я никогда не замечал связанных «всплывающих окон» или чего-то подобного.
Иззи
8

Для управления учетными записями Android использует несколько разрешений; некоторые из них легко понять неправильно. Очень хорошее объяснение использования учетных записей можно найти, например, в ответе Дэна на вопрос. Что может делать приложение с разрешением «ИСПОЛЬЗОВАТЬ СЧЕТА НА УСТРОЙСТВЕ»? , Позвольте мне попытаться суммировать соответствующие разрешения и их значение:

  • ACCOUNT_MANAGER : это разрешение зарезервировано для системных приложений. Аккаунт-менеджер - это сервис, который работает за кулисами и следит за тем, чтобы все работало как положено.
  • AUTHENTICATE_ACCOUNTS : приложение, использующее это разрешение, обычно предоставляет интерфейс для работы с определенным типом учетной записи (который не известен в предустановленной системе Android), например Dropbox. При поставке Android не знает, как войти в Dropbox и как обращаться с учетной записью Dropbox - поэтому приложение Dropbox предоставляет механизм. Кроме того, «аутентификатор учетной записи» может ограничивать действия, которые приложение может выполнять с учетной записью (поэтому, например, можно было бы управлять этим через некоторый веб-интерфейс, предлагаемый службой).
  • GET_ACCOUNTS : получить список доступных аккаунтов. Таким образом, приложение, которое хочет, например, использовать Dropbox для хранения, может проверить, доступна ли подходящая учетная запись. Он должен проверить это перед использованием.
  • MANAGE_ACCOUNTS : документация API не совсем ясна в отношении этого разрешения. Но, согласно ответу Брайана , приложение может удалять / изменять только созданную им учетную запись. Конечно, он может создать любую новую учетную запись и управлять этим.
  • USE_CREDENTIALS : это приложение может использовать «учетные данные» для входа в учетную запись. В большинстве случаев «учетные данные» просто означают, что соответствующий аутентификатор создает подходящий токен и передает его (хотя способ аутентификации остается за аутентификатором). При первом использовании учетной записи менеджер учетной записи должен убедиться, что пользователя спрашивают, разрешает ли он это. Опять же, ответ Дэна хорошо объясняет эту часть.

Я надеюсь, что смог пролить немного света. Это было чем-то, что заставляло меня нервничать, поэтому я потратил два дня, чтобы в этом разобраться. Если я ошибся, укажите это в комментариях, чтобы я мог это исправить.

Иззи
источник