权限“ MANAGE_ACCOUNTS”是什么意思?


18

偶尔我读到需要MANAGE_ACCOUNTS权限(实际上,因为我有德语电话,所以它被称为“ KONTENHINZUFÜGENODER ENTFERNEN”。我猜下面的文字是“添加或删除帐户,创建帐户和设置密码,使用设备上的“帐户”)。

我问这个问题是因为我想安装GitHub-App

我想我发现了一个非常相似的问题,我想在这里包括:

  1. 他们可以创建帐户是什么意思?
  2. 为什么亚马逊(Kindle应用程序)/ GitHub甚至需要这个?
  3. 有没有风险?

我还找到了《卫报》的解释,为什么他们要求一些权限:guardian.co.uk/mobile/insideguardian/android-app-permissions但我想获得更详细的答案,尤其是在涉及潜在风险时。
Martin Thoma 2013年

Answers:


18

简而言之,GitHub正在使用内部帐户系统管理器来存储您的GitHub凭据。这与添加Google帐户或Exchange帐户完全相同。本质上,您使用凭据登录,并且它们存储在“帐户管理器”中,这使您不必在将来再次输入这些凭据。

当在多个应用程序中使用凭据时,这非常有用,因为您只需登录一次。例如,谷歌浏览器将通过帐户管理器访问您的帐户,而不是强迫您再次登录(底部弹出的黄色对话框,询问您是否要在访问gmail或其他帐户时使用手机上的本地帐户登录手机的Google Chrome浏览器上的Google网站)。

他们可以创建帐户是什么意思?

他们可以在您的手机上为他们的应用程序(只有他们的应用程序)创建本地帐户。这是我手机上的列表示例:

屏幕截图
屏幕截图(点击图片可查看大图)

为什么亚马逊(Kindle应用程序)/ GitHub甚至需要这个?

它简化了Android中的凭据。这是推荐的方法。

有没有风险?

应该没有。如果某个应用使用AccountManager并说要使用您的Google帐户,则它必须明确要求您许可,因为它需要使用身份验证令牌才能使用该帐户。请参阅SDK文档中的更多信息


3
在没有风险的情况下,为什么默认情况下不允许每个APP使用帐户管理器?
马丁·托马

1
@Moose是个好问题。作为一名Android开发人员,我使用AccountManager的经验为零,但我相信正确的答案是,从技术上讲,它可以让您尝试访问手机上列出的任何帐户(尽管它仍应征得许可才能允许访问据我所知,首次使用该帐户)
Bryan Denny

1
我刚刚浏览了API文档。基本上,一个应用会枚举现有帐户,并且可以按类型过滤它们,例如“所有Google帐户”。如果一个帐户丢失,它将创建一个。这些操作需要权限GET_ACCOUNTS和MANAGE_ACCOUNTS。但是(!),似乎没有什么限制应用程序使用其喜欢的任何帐户的功能,例如,以Google帐户而不是github帐户模拟您。显然,应用程序甚至可以获取帐户密码(如果该密码存储在帐户管理器中)。如果是这样,则这些权限存在很大的风险。您必须完全信任应用程序作者。
Deepc

等等,@ BryanDenny:您说应该没有风险。但是“添加或删除帐户”权限是否意味着这样的应用程序可以例如从设备中删除任何已建立的帐户?是什么防止它在其他帐户上设置不同的密码(例如,稍后导致“锁定”,导致“尝试次数过多”)?当我看到要求时,我错过了指出的安全层(例如,用户必须以某种方式确认此类更改,或者能够将其限制为给定的帐户/类型)。有这样的事吗?我从没注意到任何相关的“弹出窗口”之类的东西。
伊齐

8

为了管理帐户,Android使用了几种权限。其中一些很容易被误解。例如,可以在Dan关于问题的答案中找到有关使用帐户的很好的解释,使用“使用设备上的帐户”权限,应用程序可以做什么?。让我尝试总结所涉及的权限及其含义:

  • ACCOUNT_MANAGER:此权限保留给系统应用程序使用。客户经理是在幕后工作的服务,并确保一切按预期进行。
  • AUTHENTICATE_ACCOUNTS:使用此权限的应用程序通常会提供一个界面来处理某些帐户类型(预装的Android系统不知道),例如Dropbox。出厂时,Android不知道如何登录到Dropbox以及如何处理Dropbox帐户-因此,Dropbox应用程序提供了该机制。另外,“帐户身份验证器”可能会限制应用程序可以使用该帐户执行的操作(因此,例如可以通过该服务提供的某些Web界面对此进行管理)。
  • GET_ACCOUNTS:获取可用帐户列表。这样,例如想要使用Dropbox进行存储的应用程序可以检查合适的帐户是否可用。它必须在使用前进行验证。
  • MANAGE_ACCOUNTS:关于此权限的API文档尚不清楚。但是根据Bryans的回答,应用程序只能删除/修改自己创建的帐户。当然,它可以创建任何新帐户并进行管理。
  • USE_CREDENTIALS:此应用程序可以使用“凭据”登录帐户。在大多数情况下,“凭证”仅表示相应的身份验证者创建一个合适的令牌并将其交给(尽管,如何处理仍留给身份验证者)。首次使用帐户时,客户经理应确保询问用户是否允许这样做。再次,丹的答案很好地解释了这一部分。

我希望我能有所启发。这也让我感到紧张,所以我花了两天时间来研究它。如果我做错了什么,请在评论中指出,以便我纠正。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.