Java 主体、使用者和委托人之间的含义和区别是什么?
在安全框架的上下文中,一些术语通常出现在主题、用户和主体,我无法找到它们之间的明确定义和区别Java 主体、使用者和委托人之间的含义和区别是什么?,java,spring-security,terminology,security,Java,Spring Security,Terminology,Security,在安全框架的上下文中,一些术语通常出现在主题、用户和主体,我无法找到它们之间的明确定义和区别 那么,这些术语的确切含义是什么?为什么需要区分主语和主语 当应用程序使用JAAS时 验证以验证 用户(或其他实体,例如 服务),将主题创建为 结果。本主题的目的是 表示经过身份验证的用户A 主题由一组 主体,其中每个主体 表示该用户的标识。 例如,一个主题可以有一个 姓名校长(“苏珊·史密斯”)和 社会保险号码负责人 (“987-65-4321”),因此 区分这个主题和其他主题 科目 主题是请求服务的实
那么,这些术语的确切含义是什么?为什么需要区分主语和主语 当应用程序使用JAAS时 验证以验证 用户(或其他实体,例如 服务),将主题创建为 结果。本主题的目的是 表示经过身份验证的用户A 主题由一组 主体,其中每个主体 表示该用户的标识。 例如,一个主题可以有一个 姓名校长(“苏珊·史密斯”)和 社会保险号码负责人 (“987-65-4321”),因此 区分这个主题和其他主题 科目
主题是请求服务的实体。它可以是用户或进程。可能这就是为什么选择名称Subject而不是user 当主体试图访问服务时,必须首先对该主体进行身份验证。成功的身份验证以加载该主题的安全主体结束。例如,在基于角色的访问控制系统中,经过身份验证(登录)的用户通常有两个主体-userId和roleId。在这种系统中,为角色和用户指定了特权(即谁可以访问什么)。在授权期间(即检查是否应允许请求的服务),安全系统将检查两个主体的可访问性
因此,从授权的角度来看,主体是允许或不允许访问的实际实体。Subject只是一个包含一些主体的用户/线程/进程 这些是分层的,就像属、种和个体是分层的一样
- 主题在安全上下文中,主题是请求访问对象的任何实体。这些通用术语用于表示请求访问的对象和请求所针对的对象。当您登录到应用程序时,您是主体,而应用程序是对象。当有人敲门时,访客是请求访问的主体,而您的家是请求访问的对象
- 主体-由帐户、角色或其他唯一标识符表示的主体子集。当我们到达实现细节的级别时,主体是我们在访问控制列表中使用的唯一键。它们可能代表人工用户、自动化、应用程序、连接等
- 用户-主体的子集,通常指人工操作员。随着时间的推移,“用户”或“用户ID”这两个词通常与“帐户”互换,因此两者之间的区别越来越模糊。然而,当您需要区分作为主体的广泛类别和作为以非确定性方式驱动事务的交互操作符的子集时,“用户”是正确的词
正如T.Rob所解释的,Subject是请求访问对象的任何实体。从这一点开始,我在javax.security.auth.Subject代码上找到了一条注释,我发现它非常有用且易于理解: “受试者可能具有多个身份。每个身份都是