第 2 章 摘要登录模块
抽象登录模块是抽象的 Java 类,由其他登录模块扩展,以提供常用的功能和配置选项。永远不会直接使用抽象登录模块,但配置选项可用于扩展它们的任何登录模块。
2.1. AbstractServer Login Module 复制链接链接已复制到粘贴板!
短名称 :AbstractServerLoginModule
全名 : org.jboss.security.auth.spi.AbstractServerLoginModule
AbstractServer Login 模块充当许多登录模块以及多个抽象登录模块的基础类。它实施 JAAS 服务器端登录模块所需的通用功能,并实施 PicketBox 标准主题使用模式来存储身份和角色。
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 方法。例如,可在 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
下。
使用密码堆栈时,设置所有模块。这可确保考虑所有模块,并有机会为授权流程贡献角色。