安全性快速概述
为了解 Liberty 中安全性的基本工作流程,详细介绍了一些常见安全性术语以及示例。
安全性关键术语
- 认证
- 认证确认用户的身份。最常用的认证形式是用户名和密码,例如通过基本认证或者用于 Web 应用程序的表单登录。认证用户时,请求源在运行时表示为 Subject 对象。
- 权限
- 权限决定用户是否具有系统中特定角色的访问权。Java™ EE 模型使用主体集、角色和角色映射来确定是否允许访问。
- 角色
- 在 Java EE 应用程序中定义了角色。系统预定义了一些角色(例如,管理员角色)。另一些角色由应用程序开发者定义。在 Java EE 中,根据主体集在应用程序中承担的角色来授予或拒绝主体集角色访问权。
- 主体集
- 主体集是常规术语,也是 Java 对象:javax.security.auth.Subject。通常,术语主体集表示系统中的活动实体,例如系统上的用户,甚至是系统进程自身。
安全性工作流示例
以下示例说明了在用户请求访问资源时如何应用安全性。例如,用户 Bob 想要访问 servlet myWebApp。请参阅 Liberty 安全性入门中的代码样本。
下列条件必须成立,才能访问 servlet myWebApp:
如果 Bob 无法登录系统,或者 Bob 不在 testing 角色中,那么将拒绝对 servlet myWebApp 进行访问。- Bob 必须能登录系统,因为 servlet 是受保护的。
- Bob 必须在 testing 角色中,因为 servlet 已使用部署描述符中的 auth-constraint 元素进行限制。
另一个用户 Alice 可登录系统,因为 Alice 是有效用户。但 Alice 不在 testing 角色中。Alice 登录时,会显示 HTTP 403 错误(拒绝/禁止访问)。