MIDP 2.0标准定义了4个安全域(Security Domain),每一个MIDlet在安装之后,都被分配到其中一个安全与当中。他们是:
- 受限制的第三方域(不被信任的第三方应用程序)
- 无限制的第三方域(被信任的第三方应用程序)
- 运营商保护域
- 手机设备制造商保护域
每一个保护域都有相应的访问受保护(敏感的)API的限制级别。受保护API的访问被划分分为如下几个功能组:
- 网络访问(MIDP标准还定义了底层网络访问权限,但是大多数手机生产商将他们贵为了网络访问类中)
- 消息(MIDP标准还定义了受限制消息组)
- 应用程序自动启动
- 本地连接(如蓝牙/红外等)
- 多媒体录制
- 读取用户数据(包括本地文件和个人信息管理--PIM--数据)
- 写入/修改用户数据(包括本地文件和个人信息管理--PIM--数据)
- 位置服务
- 坐标存储
- 智能卡通讯
- 鉴权
- 通话控制
- 拨打电话
Java标准包括了许多版本的API访问权限的管理:
一个没有进行数字签名的MIDlet会被归为不信任的第三方域,该域中的应用程序会受到最大程度的访问限制。如果一个MIDlet进行了数字签名,那么根据他签名的公钥证书,手机设备将会把它分配到不同的信任安全域中。也就是说如果签名时使用的是信任的第三方安全证书,那么运行时候获得的访问权限将是信任第三方域中的;如果签名时使用的是手机设备制造商安全证书,那么运行时候获得的访问权限将是手机设备生产商域(最高访问权限)中的。其实,在MIDP 2.0的标准规范中还定义了十分复杂的安装时检验机制,更多详情请参考MIDP 2.0的标准规范。
如果你的应用程序通过了Java Verified测试,那么你就可以用UTI根证书进行签名,有了此项签名你的程序将被放置在信任的第三方域中。其他认证机构也提供了可以将MIDlet签名为受信任的第三方程序的证书,他们是:
因为MIDP标准规范提供的安全域策略仅仅是一个推荐规范(recommendation),有的运营商和设备生产商也可以定义自己的安全域与API访问之间的关系,这些标准包括:
其他的普通手机,有时也会对API访问设置不同版本的安全域级别定义