第 2 章 摘要登录模块


抽象登录模块是抽象的 Java 类,由其他登录模块扩展,以提供常用的功能和配置选项。永远不会直接使用抽象登录模块,但配置选项可用于扩展它们的任何登录模块。

2.1. AbstractServer Login Module

短名称 :AbstractServerLoginModule

全名 : org.jboss.security.auth.spi.AbstractServerLoginModule

AbstractServer Login 模块充当许多登录模块以及多个抽象登录模块的基础类。它实施 JAAS 服务器端登录模块所需的通用功能,并实施 PicketBox 标准主题使用模式来存储身份和角色。

Expand
选项类型默认值描述

principalClass

完全限定类名称

org.jboss.security.SimplePrincipal

主体实施类,其中包含一个构造器,该类将 String 参数用作主体名称。

module

字符串

none

对可用于加载自定义回调/验证器的 jboss-module 的引用.

unauthenticatedIdentity

字符串

none

这将定义应当分配给不包含身份验证信息的请求的主名称。这允许未受保护的servlet 在 EJB 上调用不需要特定角色的方法。此类主体没有关联的角色,只能访问与未选中的权限约束关联的不受保护的 EJB 或 EJB 方法。如需了解更多详细信息,请参阅 Unauthenticated Identity 部分。

password-stacking

useFirstPass or false

false

详情请查看 Password Stacking 部分。

2.1.1. 未经身份验证的身份

并非所有请求都以经过身份验证的格式收到。例如,unauthenticatedIdentity 登录模块配置将特定身份 guest 分配给在没有相关身份验证信息发出的请求。这可用于允许未受保护的 servlet 在不需要特定角色的 EJB 上调用方法。此类主体没有关联的角色,因此只能访问与未选中权限约束关联的不受保护的 EJB 或 EJB 方法。例如,可在 UsersRolesRemoting Login Modules 中使用此配置选项

2.1.2. 密码堆栈

堆栈中可以串联多个登录模块,每一登录模块在身份验证期间提供凭据验证和角色分配。这适用于许多用例,但有时凭据验证和角色分配分散到多个用户管理存储中。

请考虑在中央 LDAP 服务器中管理用户,但应用特定角色存储在应用的关系数据库中的情况。password-stacking 模块选项捕获了这一关系。

要使用密码堆栈,每个登录模块都应将 password-stacking 属性设置为 useFirstPass,它位于 <module-option> 部分中。如果上一配置用于密码堆栈的模块对用户进行了身份验证,所有其他堆栈模块将考虑用户通过身份验证,并且仅尝试为授权步骤提供一组角色。

当 password-stacking 选项设为 useFirstPass 时,此模块首先在属性名 javax.security.auth.login.namejavax.security.auth.login.password 下分别在登录模块共享状态映射中查找共享用户名和密码。

如果找到,这些属性将用作主要名称和密码。如果没有找到,则主体名称和密码由此登录模块设置,并分别存储在属性名称 javax.security.auth.login.namejavax.security.auth.login.password 下。

注意

使用密码堆栈时,设置所有模块。这可确保考虑所有模块,并有机会为授权流程贡献角色。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat