PMS权限管理和鉴权过程

PMS权限管理和鉴权过程一 权限的管理基础知识 系统的权限机制分为 权限解析 权限分配 鉴权 动态添加权限 PermissionIn PackageParse Permission 中包含一个对应的 PermissionIn 权限信息的表示 其中包含权限等级的定义 NORMAL DANGER SIGNERATURE 另外实现了序列化 用户于进程间通信 3 BasePermis

一、权限的管理基础知识

  1.系统的权限机制分为:权限解析、权限分配、鉴权、动态添加权限

  2.PermissionInfo :  PackageParser.Permission中包含一个对应的PermissionInfo,权限信息的表示,其中包含权限等级的定义(NORMAL, DANGER, SIGNERATURE),另外实现了序列化,用户于进程间通信

  3. BasePermission : 系统权限的基本表示单元是BasePermission,Settings中维护了一个总的权限映射表mPermissions,所有的权限都会添加到mPermissions列表中,其中key是权限的名字,value是具体的BasePermission实例

  4. PackageParser.Permission : PackageParser.Permission在上面分析PackageParser解析apk过程中有提及过,解析apkAndroidManifest.xml文件中的<permission>标签后得到的权限表示

  5. GrantedPermissions : 类里面定义了一个字符串列表grantedPermissions保存pkg已经被赋予的所有权限

  6. PackageSettingBase : 保存为了如pkgcodePath, resourcePath, signature等信息,同时PackageSettingBaseGrantedPermissions的子类,因为也包含了pkg被赋予的权限列表

   7. PackageSetting : PackageSetting继承了PackageSettingBase类,并新增如PackageParser.PackageSharedUserSetting

  8.  SharedUserSetting :

 

二、接口的介绍以及使用

         1.  updatePermissionsLPw() : 检查无效的permissiontreepermission定义,另外一个就是根据传入的flags是否带有UPDATE_PERMISSIONS_ALL来遍历mPackages包列表来更新所有安装包的权限信息

     2. grantPermissionsLPw() : 管理两个重大的类,安装和运行权限两个大类

 

三、验证权限的过程:

        一般客户端调用checkPermission方法鉴权的流程如下:

  ①Context.java—>public int checkPermission(String permission, int pid, int uid)

  ②ActivityManagerService.java—>public int checkPermission(String permission, int pid, int uid)

  ③ActivityManagerService.java—> checkComponentPermission

  ④ActivityManager.java—>checkComponentPermission

  Root用户(uid=0)和System用户(uid=1000)直接鉴权通过。

  ⑤PackageManagerService.java—>checkUidPermission












 

四、证书的验证

  

 

转载于:https://www.cnblogs.com/liunx1109/p/10792201.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233593.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • thinkCMF—-公共模板的引入

    thinkCMF—-公共模板的引入thinkCMF—-公共模板的引入

    2022年4月20日
    74
  • SQL中的cast()函数「建议收藏」

    SQL中的cast()函数「建议收藏」CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。语法:CAST(expressionASdata_type)expression:任何有效的SQServer表达式。AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。data_type:目标系统所提供的

    2022年4月18日
    173
  • 一个卡片式的ViewPager,带你玩转ViewPager的PageTransformer属性!

    一个卡片式的ViewPager,带你玩转ViewPager的PageTransformer属性!我知道你会用ViewPager,可你在ViewPager中用过Android5.0新控件CardView么?你用过PageTransformer属性吗?搞懂这几个,让你的ViewPager大放异彩!

    2022年7月22日
    13
  • lamp配置多个虚拟站点

    lamp配置多个虚拟站点在同一ip下添加多个域名站点!1.查看ip命令:ifconfig2.添加域名命令:vi/etc/hosts输入域名:如192.168.160.127www.test.com192.168.160.127www.test2.com3.创建要配置站点的文件夹及文件.var/www/test/index.php/var/www/test2/inde…

    2022年6月5日
    28
  • Iocomp.Ultra Pack V5.SP3 for .Net Crack

    Iocomp.Ultra Pack V5.SP3 for .Net CrackIocomp的UltraPack是一套56个控件,用于创建专业仪器应用程序。这些控件是用100%托管代码编写的,Ω578867473支持Microsoft和Borland/CodeGear/Embarcadero开发环境。结合了我们的ProPack和PlotPack。所有控件都是面向对象的,并共享许多公共类以保持一致性、易于使用和相互连接。每个控件都经过优化,以在.Net框架下获得最佳性能,同时仍然使用高级GDI+绘图例程,这大大改善了控件的外观。大多数控件在与应用

    2022年7月25日
    12
  • WebStorm强大的调试JavaScript功能

    WebStorm强大的调试JavaScript功能一、JavaScript的调试目前火狐和Chrome都具备调试JavaScript的功能,而且还是相当的强大。如果纯粹是用浏览器来进行js调试的话,我比较喜欢用火狐。火狐可以安装各种插件,真的是非常适合开发者。不过今天的主角并不是火狐,也不是Chrome,而是号称最智能的JavaScriptIDE:WebStorm。WebStorm是jetbrains公司旗下一款JavaScript开发

    2025年8月14日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号