为什么我在jdbcRealm数据库中列出web.xml中的安全角色?
我在Glassfish 3上运行JavaEE 6 Web应用程序。我使用JAAS和jdbcRealm以及默认主体到角色映射。 在我的数据库中,我有用于将用户名映射到其角色的表:
username | role ----------+------- john | admin mary | user
为什么我需要在web.xml
再次列出这些角色?
admin user
没有它, isUserInRole()
总是返回false
。
您不会在web.xml
重新定义安全角色。 您列出它们,以便应用程序服务器知道它们在您的代码中的使用。
部署安全应用程序时,应用程序服务器会读取部署描述符以获取有关安全性配置的信息。 它知道您的应用程序中使用的角色。 然后,应用程序可以使用角色,并期望应用程序服务器能够将它们映射到用户和组(最终再次解析用户,因为用户是安全性最好的构建块)。
说到将角色映射到用户,这就是领域的用武之地。它提供了映射,因此您知道部署描述符中的角色X映射到数据库中的角色X,而角色X又映射到用户A和B.
话虽如此,jdbcRealm使用的数据库具有完全相同的角色,因为它们是应用程序服务器需要映射到应用程序中的角色的用户的密钥。
您在代码和部署描述符中使用的是一组用户的逻辑名称,这些用户通过jdbcRealm提供的映射解析为真实用户。
- JBoss 7.1基于数据库的JAAS身份validation – 身份validation失败
- 在JBoss / JAAS中使用HTTP Request.login
- 使用Primefaces进行j_security_check
- 使用JAAS LdapLoginModule通过ActiveDirectory进行身份validation时遇到FailedLoginException
- 在Android上使用JAAS(Java身份validation和授权服务)
- JBOSS 7有两个上下文。 一个使用SSL Mutual Auth,另一个只使用SSL
- 使用Mockito,如何拦截void方法上的回调对象?
- Java和Kerberos身份validationkrb5.conf与System.setProperty的对比