第 2 章 摘要登录模块
抽象登录模块是抽象的 Java 类,由其他登录模块扩展,以提供常用的功能和配置选项。永远不会直接使用抽象登录模块,但配置选项可用于扩展它们的任何登录模块。
2.1. AbstractServer 登录模块 复制链接链接已复制到粘贴板!
短名称 :AbstractServerLoginModule
全名 : org.jboss.security.auth.spi.AbstractServerLoginModule
AbstractServer Login 模块充当许多登录模块以及多个抽象登录模块的基础类。它实施 JAAS 服务器端登录模块所需的通用功能,并实施 PicketBox 标准主题使用模式来存储身份和角色。
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| principalClass | 完全限定类名称 | org.jboss.security.SimplePrincipal | 主体实施类,其中包含一个构造器,该类将 String 参数用作主体名称。 |
| module | 字符串 | none | 对可用于加载自定义回调/验证器的 jboss-module 的引用. |
| unauthenticatedIdentity | 字符串 | none | 这将定义应当分配给不包含身份验证信息的请求的主名称。这允许未受保护的servlet 在 Jakarta Enterprise Beans 上调用不需要特定角色的方法。此类主体没有关联角色,只能访问与未选中权限约束关联的无安全 Jakarta Enterprise Beans 或 Jakarta Enterprise Beans 方法。如需了解更多详细信息,请参阅 Unauthenticated Identity 部分。 |
| password-stacking | 使用FirstPass 或 false | false | 如需了解更多详细信息,请参阅 Password Stacking 部分。 |
2.1.1. 未经身份验证的身份 复制链接链接已复制到粘贴板!
并非所有请求都以经过身份验证的格式收到。例如,unauthenticatedIdentity 登录模块配置将特定身份 guest 分配给在没有相关身份验证信息发出的请求。这可用于允许未受保护的 servlet 在 Jakarta Enterprise Beans 上调用不需要特定角色的方法。此类主体没有关联角色,因此只能访问与未选中权限约束关联的不受保护的 Jakarta Enterprise Beans 或 Jakarta Enterprise Beans 方法。例如,可在 UsersRoles 和 Remoting Login Modules 中使用此配置选项
2.1.2. 密码堆栈 复制链接链接已复制到粘贴板!
堆栈中可以串联多个登录模块,每一登录模块在身份验证期间提供凭据验证和角色分配。这适用于许多用例,但有时凭据验证和角色分配分散到多个用户管理存储中。
请考虑在中央 LDAP 服务器中管理用户,但应用特定角色存储在应用的关系数据库中的情况。password-stacking 模块选项捕获了这一关系。
要使用密码堆栈,每个登录模块都应将 password-stacking 属性设置为 useFirstPass,它位于 <module-option> 部分中。如果上一配置用于密码堆栈的模块对用户进行了身份验证,所有其他堆栈模块将考虑用户通过身份验证,并且仅尝试为授权步骤提供一组角色。
当 password-stacking 选项设为 useFirstPass 时,此模块首先在属性名 javax.security.auth.login.name 和 javax.security.auth.login.password 下分别在登录模块共享状态映射中查找共享用户名和密码。
如果找到,这些属性将用作主要名称和密码。如果没有找到,则主体名称和密码由此登录模块设置,并分别存储在属性名称 javax.security.auth.login.name 和 javax.security.auth.login.password 下。
使用密码堆栈时,设置所有模块。这可确保考虑所有模块,并有机会为授权流程贡献角色。