如何在 Servlet 中获取用户角色?

Vee*_*era 2 java authentication jboss

我使用 Jbos AS 5 和 DatabaseServerLoginModule 进行授权。我已将我的应用程序策略定义为(仅作为示例,而不是实际代码):

<application-policy name = "jbossmq">
  <authentication>
    <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
       flag = "required">
       <module-option name = "unauthenticatedIdentity">guest</module-option>
       <module-option name = "dsJndiName">java:/MyDatabaseDS</module-option>
       <module-option name = "principalsQuery">SELECT PASSWD FROM JMS_USERS WHERE USERID=?</module-option>
       <module-option name = "rolesQuery">SELECT ROLEID, 'Roles' FROM JMS_ROLES WHERE USERID=?</module-option>
    </login-module>
  </authentication>
</application-policy>
Run Code Online (Sandbox Code Playgroud)

一旦用户被成功授权,我如何从我的 servlet 中检索用户角色?在上面的代码片段中,角色是从数据库中选择的,但它们存储在哪里?在会议中!?如果是,在哪些会话变量下?

另外,是否可以在 JBoss 中结合使用 LDAP 身份验证和数据库授权?

dav*_* a. 5

克林顿基本上是对的

boolean HttpServletRequest.isUserInRole(String role)
Run Code Online (Sandbox Code Playgroud)

方法可用于检查用户是否分配了特定角色。但是,此方法旨在检查应用程序(在 EAR 的描述符中,application.xml 中)定义的 J2EE 角色。

在部署期间,或者通过在 EAR 文件中打包特定于 AS 的描述符,您需要指定应用程序服务器的用户角色(这些您在登录模块中设置为主体)到 J2EE 应用程序的映射。角色。