1.概述
安全性是任何Java应用程序的基本组成部分。此外,我们可以找到许多可以处理安全问题的安全框架。此外,在这些框架中,我们通常使用一些术语,例如主题,主体和用户。
在本教程中,我们将解释安全框架的这些基本概念。另外,我们将显示它们之间的关系和差异。
2.主题Subject
在安全上下文中,主题表示请求的来源。对象是获取有关资源的信息或修改资源的实体。此外,主题还可以是用户,程序,进程,文件,计算机,数据库等。
例如,一个人需要授权对资源和应用程序的访问以认证请求源。在这种情况下,这个人是一个主体。
让我们看一下基于JAAS
框架实现的示例:
Subject subject = loginContext.getSubject();
PrivilegedAction privilegedAction = new ResourceAction();
Subject.doAsPrivileged(subject, privilegedAction, null);
3.Principal
成功通过身份验证后,我们将获得一个填充的主题,该主题具有许多关联的身份,例如角色,社会保险号(SSN)等。换句话说,这些标识符是principal,主题代表它们。
例如,一个人可能具有账号主体(“ 87654-3210”)和其他唯一标识符,从而将其与其他主体区分开。
让我们看看UserPrincipal
并将其添加到Subject:
@Override
public boolean commit() throws LoginException {
if (!loginSucceeded) {
return false;
}
userPrincipal = new UserPrincipal(username);
subject.getPrincipals().add(userPrincipal);
return true;
}
4.用户
通常,用户代表访问资源以执行某些动作或完成工作任务的人。
同样,我们可以将用户用作委托人,另一方面,委托人是分配给用户的身份。 UserPrincipal
是上一节中讨论JAAS
框架中用户的一个很好的例子.
5.主题,Principal和用户之间的区别
如上节所述,我们可以使用委托人来表示同一用户身份的不同方面。它们是主题的子集,而用户是指的是最终用户或交互式运算符的主体的子集。
六,结论
在本教程中,我们讨论了主题,Principal和用户的定义,这些定义在大多数安全框架中都很常见。此外,我们展示了它们之间的区别。
0 评论