为什么Java EE安全性中的名称“领域”和“主体”?

时间:2012-04-18 17:40:59

标签: java security java-ee

为什么选择名称“领域”的东西似乎(至少对我而言)是一组安全约束和允许访问的用户。我可能错了。如果我把它翻译成我的母语,我会发现它是一个“王国,领土”。我不明白。

  

Principal:可以通过身份验证进行身份验证的实体   在企业中部署的安全服务中的协议。一个   通过使用主体名称并通过身份验证来识别主体   使用身份验证数据。

和校长一样,没有任何意义,因为我母亲的事情变得更加难以理解。有人可以解释一下吗?

http://docs.oracle.com/javaee/6/tutorial/doc/bnbxj.html

1 个答案:

答案 0 :(得分:13)

这里使用“领域”这个词作为集合的空间类比 - 事物可以在一个集合内部或不在内部,与一个王国相同。安全“领域”是一个集合,使得该集合中的所有内容都受到相同规则的影响,但来自该区域之外的事物被视为外来的,可疑的或者对该领域内的事物具有不完全访问权限。 / p>

要了解这可能如何运作,请考虑一座中世纪城堡。城堡里面的人被认为比外面的人更忠于国王,因此安全集中在防止外面的敌人进入。在城堡内,有一个只允许最信任的保留,以及安全机制(警卫和大门)限制从城堡其他地方进入保护区。


您可能会在安全文献中看到“安全域”和“信任域”等术语。这些是说“领域”的其他方式。


“委托人”是指可以授予或拒绝授权的人。它可以是用户,角色,机器等。它是权限矩阵中的“主要”(第一或最重要)实体。

“校长”是(IIRC)与“王子”这个词有关,用于可以行使重要但不是无限权威的事物。

OP中引用的定义混淆了“认证”和“授权”,这是一个常见的错误。想想王子在需要授权的限制范围内行使权力。特别是在Java-EE中,主体涉及IBAC(或类似RBAC的相关方案),但该术语在安全性文献中的使用更广泛,其方式与是否进行身份验证有关,而与授权是否无关。发生的情况。


一个可能的混淆来源:您可能认为王子应该统治公国,但这里的类比分解。在封建的欧洲,也许王子和公国之间存在1:1的关系(一种领域),但是委托人和领域之间没有1:1的关系。给定的领域不一定由任何特定的委托人统治。