You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:57:45