安卓应用安全指南 5.3.3 将内部账户添加到账户管理器 高级话题
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_ACCOUNTS 或USE_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 及更高版本中无法找到。
安卓应用安全指南 5.3.3 将内部账户添加到账户管理器 高级话题相关推荐
- 安卓应用安全指南 5.3.2 将内部账户添加到账户管理器 规则书
5.3.2 将内部账户添加到账户管理器 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY- ...
- 安卓应用安全指南 5.3.1 将内部账户添加到账户管理器 示例代码
5.3.1 将内部账户添加到账户管理器 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY ...
- 安卓应用安全指南 4.4.3 创建/使用服务高级话题
安卓应用安全指南 4.4.3 创建/使用服务高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC ...
- 安卓应用安全指南 4.6.3 处理文件 高级话题
安卓应用安全指南 4.6.3 处理文件 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY ...
- 安卓应用安全指南 4.6.2 处理文件 规则书
安卓应用安全指南 4.6.2 处理文件 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY- ...
- 安卓应用安全指南 4.6.1 处理文件 示例代码
安卓应用安全指南 4.6.1 处理文件 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY ...
- 安卓应用安全指南 4.5.2 使用 SQLite 规则书
安卓应用安全指南 4.5.2 使用 SQLite 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:C ...
- 安卓应用安全指南 4.5.1 使用 SQLite 示例代码
安卓应用安全指南 4.5.1 使用 SQLite 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议: ...
- 安卓应用安全指南 4.4.2 创建/使用服务 规则书
安卓应用安全指南 4.4.2 创建/使用服务 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC ...
最新文章
- 信息系统项目管理师优秀论文:项目进度管理
- emqx使用webhook数据持久化到mysql
- gradle 项目打包成多个jar包_自从用完 Gradle 后,有点嫌弃 Maven 了!
- 打开新经济大门 淘宝直播如何打造最有价值的直播平台?
- socket编程详解,转自http://www.sme-cn.com:82/archives/669
- win7 IIS7 HTTP 错误 404.2 - Not Found的解决方法
- SQL2005安装出错
- c花体复制_可复制花体字大全?
- msf生成windows后门程序
- [Hi3751V350][Android9.0] 调试笔记 --- 添加并设置默认系统字库
- Java使用itextpdf实现为已有的pdf文件添加水印
- Solidity简单例子-代理投票
- PDF文件如何在线分割
- C语言 系统调用操作内核信号集
- 实现财务自由 之 A 股上市公司的年报(年度财报)查阅查看、下载地址、以及下载的方法
- 给 iOS 开发者的 Flutter 指南(上)
- 习题 8-28 打结(Knots, ACM/ICPC ACM/ICPC Jakarta 2012, UVa1624)
- matlab分式多项式化简,有理分式多项式法模态参数识别
- 找回生命本源的力量,走上生命觉醒的旅程
- decode函数的用法(decode函数的用法python二进制)
热门文章
- (73)Verilog HDL系统函数和任务:$monitor
- (61)Verilog HDL模块例化Verilog模块
- System verilog随机系统函数$urandom_range使用方法
- Xilinx PLL IP核功能仿真
- keepalived java,keepalived 安装及使用
- 填坑-关于SysTick定时器
- 生产者消费者模型、信号量、线程池以及单例模式的实现
- hive對於數據是懶加載的_hive 安装 文档
- c 语言输入n个数求和,c++---天梯赛---N个数求和
- mysql的记录操作的日志文件_MySql 的操作日志 历史记录