在单个java线程中启用多个安全管理器
假设有一个java线程,其中加载了由多方提供的类。这些提供程序是否可以指定自己的安全管理器和策略s.t。它们可以限制这些提供程序之间的访问?您只能将一个在单个java线程中启用多个安全管理器,java,security,Java,Security,假设有一个java线程,其中加载了由多方提供的类。这些提供程序是否可以指定自己的安全管理器和策略s.t。它们可以限制这些提供程序之间的访问?您只能将一个SecurityManager设置为安全管理器 线程与Java中的安全性关系不大。对象在线程之间传递,因此使用基于线程的访问模型没有多大意义 在Java中,每个类都会被分配一个ProtectionDomain,从而获得一组权限(这些权限在某种意义上可能是“动态的”,但在大多数情况下,它实际上是常量)。当要求安全管理器检查权限时,它将委托给Acce
SecurityManager
设置为安全管理器
线程与Java中的安全性关系不大。对象在线程之间传递,因此使用基于线程的访问模型没有多大意义
在Java中,每个类都会被分配一个
ProtectionDomain
,从而获得一组权限(这些权限在某种意义上可能是“动态的”,但在大多数情况下,它实际上是常量)。当要求安全管理器检查权限时,它将委托给AccessController
,后者将检查堆栈上的每个活动ProtectionDomain
。实际上,您需要将代码与多方隔离,但各方都可以拥有自己的ProtectionDomain
,从而拥有权限。@erickson是的,但ProtectionDomain
中唯一重要的方法是暗示。如果您想知道ProtectionDomain
是否应该允许权限,请调用该方法,而不是尝试获取属性并执行一些明显非OO(错误)的代码。