Authorization Services Programming Guide 学习
来源:互联网 发布:淘宝二手买到假货 编辑:程序博客网 时间:2024/05/19 02:04
Authorization Services Programming Guide
1. Concept
Mac OS X kernel从BSD发展而来,继承了*nix下经典的user-adn-owner-security模型。相比CLI,苹果的界面需要更为复杂的授权机制。于是他引入了Security Server这个核心服务。
Mac OS X是多用户环境,Authorization的过程其实就是用户身份切换。首先你需要创建一个authorization reerence,它相当于本地应用程序的一个令牌。然后先Security Server申请一个authorization session,申请时可以指定需要什么样的权限等,当验证成功后,在Security Server会有一个session,它也是有一定的超时。最后,你拿着这个令牌就能够调用一些Authorization Services function.
2. 应用场景
通常,有三种应用场景会涉及到authorization
1. Self-Restricted Applications
这类程序常常在界面中有一个锁的图标,主要是用来验证用户操作可信度。打个比方,在QQ登陆后,如果你要改密码,那么它会要求你先输入一遍密码,目的就是防止他人趁你上厕所时偷改你的密码(开玩笑了)。使用系统的验证方法当然要比自己写的可靠得多。
2. Factored Applications
无一例外,这类程序都要执行某个操作,且必须是管理员的身份。它将创建一个新的进程,称之为helper tools。验证的过程通常是在主程序里做,再把令牌由特殊的方式传递给helper tools。尽管在helper tools里验证逻辑也正常,但缺陷是验证显示的路径和图标是help tools的,并且键盘焦点也会有问题。
helper tools常常是需要root权限的,关于提权也有不同的方法
方法一:主程序让helper tools以root为ruser方式运行起来。缺点是,如果有恶意程序把这个helper tools替换了,后果很严重。
方法二:helper tools设置了setuid bit以便自己能够改变到root这是*nuix常用的方法,安全性也比较好。当然,前期工作会稍微麻烦点,因为需要把owner设为root,而且复制是setuid bit不会重新设置。因此,可能需要用户重新安装。
方法三:利用主进程传入的external令牌来提升(用方法一来运行自己)。这种方式安全性高,操作性强。推荐使用。
3. Installers
安装程序只运行一次,故危险性会少很多。这时多采用场景2的第一种方式,一般用脚本就可以做到。
3. Rights
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Courier; color: #3366cc}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Courier; color: #666666}span.s1 {color: #666666}span.s2 {color: #3366cc}
1. Concept
Mac OS X kernel从BSD发展而来,继承了*nix下经典的user-adn-owner-security模型。相比CLI,苹果的界面需要更为复杂的授权机制。于是他引入了Security Server这个核心服务。
Mac OS X是多用户环境,Authorization的过程其实就是用户身份切换。首先你需要创建一个authorization reerence,它相当于本地应用程序的一个令牌。然后先Security Server申请一个authorization session,申请时可以指定需要什么样的权限等,当验证成功后,在Security Server会有一个session,它也是有一定的超时。最后,你拿着这个令牌就能够调用一些Authorization Services function.
2. 应用场景
通常,有三种应用场景会涉及到authorization
1. Self-Restricted Applications
这类程序常常在界面中有一个锁的图标,主要是用来验证用户操作可信度。打个比方,在QQ登陆后,如果你要改密码,那么它会要求你先输入一遍密码,目的就是防止他人趁你上厕所时偷改你的密码(开玩笑了)。使用系统的验证方法当然要比自己写的可靠得多。
2. Factored Applications
无一例外,这类程序都要执行某个操作,且必须是管理员的身份。它将创建一个新的进程,称之为helper tools。验证的过程通常是在主程序里做,再把令牌由特殊的方式传递给helper tools。尽管在helper tools里验证逻辑也正常,但缺陷是验证显示的路径和图标是help tools的,并且键盘焦点也会有问题。
helper tools常常是需要root权限的,关于提权也有不同的方法
方法一:主程序让helper tools以root为ruser方式运行起来。缺点是,如果有恶意程序把这个helper tools替换了,后果很严重。
方法二:helper tools设置了setuid bit以便自己能够改变到root这是*nuix常用的方法,安全性也比较好。当然,前期工作会稍微麻烦点,因为需要把owner设为root,而且复制是setuid bit不会重新设置。因此,可能需要用户重新安装。
方法三:利用主进程传入的external令牌来提升(用方法一来运行自己)。这种方式安全性高,操作性强。推荐使用。
3. Installers
安装程序只运行一次,故危险性会少很多。这时多采用场景2的第一种方式,一般用脚本就可以做到。
3. Rights
创建令牌时,一个很重要的参数即为申请运行的right。它是一个类java包格式的字符串(带命名空间语义),在申请时,会在Policy Database中寻找对应的提升需求。比如,如果要运行helper tools,则是system.privilege.admin。下面是一些预定义的权限
#define kAuthorizationEnvironmentUsername "username" //指定某一用户登陆
#define kAuthorizationEnvironmentPassword "password"
#define kAuthorizationEnvironmentShared "shared"
#define kAuthorizationRightExecute "system.privilege.admin"
#define kAuthorizationEnvironmentPrompt "prompt"
#define kAuthorizationEnvironmentIcon "icon"
- Authorization Services Programming Guide 学习
- Audio Queue Services Programming Guide
- Location Services and Maps Programming Guide 纪录
- The .NET Developer's Guide to Directory Services Programming
- 文档学习:Table View Programming Guide
- 《OpenGLES 2.0 Programming Guide》学习笔记
- 个人Core Animation Programming Guide 学习笔记
- 《OpenGLES 2.0 Programming Guide》学习笔记
- 《OpenGLES 2.0 Programming Guide》学习笔记
- 学习笔记- AVFoundation Programming Guide - 概括
- 学习笔记- AVFoundation Programming Guide - Using Assets
- 学习笔记- AVFoundation Programming Guide - Playback
- 学习笔记- AVFoundation Programming Guide - Editing
- 音频队列服务编程指南(Audio Queue Services Programming Guide)(一)
- 音频队列服务编程指南(Audio Queue Services Programming Guide)(二)
- 音频队列服务编程指南(Audio Queue Services Programming Guide)(三)
- 音频队列服务编程指南(Audio Queue Services Programming Guide)(二)
- 音频队列服务编程指南(Audio Queue Services Programming Guide)(一)
- rails Open Flash Chart图表(brown_zhang)
- 如何解决“重复定义”
- ProtoBuf 笔记
- 套的资料
- pycharm's code
- Authorization Services Programming Guide 学习
- 文本框自动补全,ajax autoComplete
- 集电极开路输出OC门(讲的最明白的一篇文章)
- Java 打开文件夹(Windows文件夹)
- 用fileUpload上传flv格式问件解决方法
- C语言的那些小秘密之函数的调用关系
- 怎么修改android 2.3系统中自带的通讯录contacts
- Multiple DocumentRoot on Apache on Win7
- C# 向 ListView 控件添加搜索功能