安卓应用安全指南 5.3.3 将内部账户添加到账户管理器 高级话题

简介: 5.3.3 将内部账户添加到账户管理器 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.05.3.3.1 账户管理和权限的使用要使用AccountManager类的每种方法,都需要在应用的AndroidManifest.xml中分别声明使用相应的权限。

5.3.3 将内部账户添加到账户管理器 高级话题

原书:Android Application Secure Design/Secure Coding Guidebook

译者:飞龙

协议:CC BY-NC-SA 4.0

5.3.3.1 账户管理和权限的使用

要使用AccountManager类的每种方法,都需要在应用的AndroidManifest.xml中分别声明使用相应的权限。 表 5.3-1 显示了权限和方法的对应关系。

表 5.3-1 账户管理器的函数以及权限

账户管理器提供的函数
权限 方法
AUTHENTICATE_ACCOUNTS(只有由认证器的相同密钥签名的软件包才可以使用。) getPassword()
getUserData()
addAccountExplicitly()
peekAuthToken()
setAuthToken()
setPassword()
setUserData()
renameAccount()
GET_ACCOUNTS getAccounts()
getAccountsByType()
getAccountsByTypeAndFeatures()
addOnAccountsUpdatedListener()
hasFeatures()
MANAGE_ACCOUNTS getAuthTokenByFeatures()
addAccount()
removeAccount()
clearPassword()
updateCredentials()
editProperties()
confirmCredentials()
USE_CREDENTIALS getAuthToken()
blockingGetAuthToken()
MANAGE_ACCOUNTSUSE_CREDENTIALS invalidateAuthToken()

在使用需要AUTHENTICATE_ACCOUNTS权限的方法组的情况下,存在软件包的签名密钥以及权限相关的限制。 具体来说,提供认证器的包的签名密钥,和使用方法的应用的包的签名密钥应该是相同的。 因此,在分发使用方法组的应用时,除了认证器之外,必须使用AUTHENTICATE_ACCOUNTS权限,并且应使用认证器的相同密钥进行签名。

在 Android Studio 的开发阶段,由于固定的调试密钥库可能会被某些 Android Studio 项目共享,开发人员可能只考虑权限而不考虑签名,来实现和测试帐户管理器。 特别是,对于对每个应用使用不同签名密钥的开发人员来说,因为这种限制,在选择用于应用的密钥时要非常小心。 此外,由于AccountManager获得的数据包含敏感信息,因此需要小心处理,来减少泄漏或未授权使用的风险。

5.3.3.2 在 Android 4.0.x 中,用户应用和认证器应用的签名密钥不同时发生的异常

认证令牌获取功能是由开发者密钥签发的用户应用所需的,它不同于认证器应用的签名密钥。通过显示 认证令牌许可证屏幕(GrantCredentialsPermissionActivity),AccountManager验证用户是否授予认证令牌的使用权。但是 Android 4.0.x 的 Android 框架中存在一个错误,只要AccountManager打开此屏幕,就会发生异常并且应用被强制关闭 。 (图5.3-3)。 错误的详细信息,请参阅 https://code.google.com/p/android/issues/detail?id=23421。 这个 bug 在 Android 4.1.x 及更高版本中无法找到。

相关文章
|
6月前
|
数据安全/隐私保护 Android开发 iOS开发
解决第三方邮箱APP登陆QQ、163邮箱无法验证账户名或密码的问题(IOS、MacOS、Windows、Android)
解决第三方邮箱APP登陆QQ、163邮箱无法验证账户名或密码的问题(IOS、MacOS、Windows、Android)
108 0
|
Android开发
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(三)
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(三)
120 0
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(三)
|
Android开发
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(二)
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(二)
283 0
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(二)
|
Android开发
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(一)
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(一)
246 0
|
Android开发
【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账户同步 | 源码资源 )(三)
【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账户同步 | 源码资源 )(三)
385 0
|
Android开发
【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账户同步 | 源码资源 )(二)
【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账户同步 | 源码资源 )(二)
341 0
|
Android开发
【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账户同步 | 源码资源 )(一)
【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账户同步 | 源码资源 )(一)
144 0
|
Java 区块链 Android开发
怎样在android中用web3j查询账户状态?
我按照官网的文件说明查询一个智能合约的情况。但我得不到想要的结果,这是我的代码: Web3j web3j = Web3jFactory.
1654 0
|
安全 Android开发 API
安卓应用安全指南 4.4.3 创建/使用服务高级话题
安卓应用安全指南 4.4.3 创建/使用服务高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 4.4.3.1 导出属性和意图过滤器设置的组合(在服务情况下) 我们已经本指南中解释了如何在实现四种服务类型:私有服务,公共服务,伙伴服务和内部服务。
1012 0
|
存储 安全 数据库
安卓应用安全指南 4.5.3 使用 SQLite 高级话题
安卓应用安全指南 4.5.3 使用 SQLite 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 4.5.3.1 在 SQL 语句的LIKE断言中使用通配符时,应该实现转义过程 当所使用的字符串包含LIKE断言的通配符(%,_),作为占位符的输入值时,除非处理正确,否则它将用作通配符,因此必须根据需要事先转义处理。
1555 0