jboss-web.xml中principal-name的定义、来源及用户关联配置咨询
关于JBoss中
principal-name的疑问解答 1. principal-name具体指什么?
简单来说,<principal-name>是JBoss用来把**安全角色(security-role)**和具体认证主体(可以是普通用户、系统服务账户等)绑定的配置项。它的核心作用就是明确:哪些主体(用户/账户)能够拥有这个<security-role>定义的权限。
拿你给出的配置举例:
<security-role> <role-name>anz_beleg_detail</role-name> <principal-name>APP-UKVLEI_AENDERUNG</principal-name> <principal-name>APP-UKVLEI_AUSKUNFT</principal-name> <principal-name>APP-UKVLEI_EINGABE</principal-name> <principal-name>APP-UKVLEI_FREIGABE</principal-name> </security-role>
这里就是把anz_beleg_detail这个角色,直接分配给了这四个以APP-开头的系统账户——意味着这四个账户登录后,会自动拥有该角色对应的所有权限。
2. principal-name的定义位置在哪里?
- 你看到的
<principal-name>本身,是直接定义在Web应用的jboss-web.xml文件里的<security-role>标签内部,和<role-name>同级。 - 而这些
principal-name对应的主体(用户/账户本身),是定义在JBoss服务器的**安全域(Security Domain)**配置中:- 如果你用的是独立模式,配置文件通常是
standalone.xml;域模式则是domain.xml。 - 安全域里会关联具体的用户存储:比如属性文件(
users.properties存用户名密码、roles.properties存用户角色)、数据库、LDAP目录等。你需要先在这些存储中创建对应的账户,才能让<principal-name>的映射生效。
- 如果你用的是独立模式,配置文件通常是
3. 登录用户对应的principal-name在哪里指定?
用户登录时对应的principal-name,本质就是用户的认证标识:
- 如果是普通用户名密码登录,那就是用户输入的用户名;
- 如果是证书认证、服务账户认证,那就是证书里的主体名称,或者预先配置的服务账户ID。
这个标识是由你配置的认证机制(比如FORM表单认证、BASIC基础认证)在用户登录过程中生成的,并且需要和jboss-web.xml里的<principal-name>完全匹配,同时在安全域的用户存储中存在该用户,才能让用户获得对应的角色权限。
内容的提问来源于stack exchange,提问作者Alex Mi
相关产品推荐
相关产品推荐

