我使用 JBoss 7.1.1Final 使用 JSF、EJB 和 JAAS 创建了一个 Web 应用程序。我正在尝试为登录添加一个安全域,所以我像这样编辑了 META-INF/jboss-web.xml:
<jboss-web>
<context-root>A3App</context-root>
<!-- Realm that will be used -->
<security-domain>A3AppRealm</security-domain> // Also tried with java:/jaas/A3AppRealm
</jboss-web>
我的standalone.xml 的安全域部分如下所示:(我只添加了第一个安全域并禁用了其他安全域)
<subsystem xmlns="urn:jboss:domain:security:1.1">
<security-domains>
<security-domain name="A3AppRealm" cache-type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="dsJndiName" value="CrudDSS"/>
<module-option name="principalsQuery" value="select password from users where email=?"/>
<module-option name="rolesQuery" value="select role, 'Roles' from users u where u.email=?"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Disabled" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="RealmUsersRoles" flag="required">
<module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/>
<module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>
<module-option name="realm" value="ApplicationRealm"/>
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="jboss-web-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
</security-domains>
</subsystem>
但是,我收到的例外是:
安全域 other 已被禁用。所有身份验证都将失败。请检查您的配置以确保这是预期的。
我也试过这个配置:
<subsystem xmlns="urn:jboss:domain:security:1.0">
<security-domains>
<security-domain name="A3AppRealm" cache-type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="dsJndiName" value="CrudDSS"/>
<module-option name="principalsQuery" value="select password from users where email=?"/>
<module-option name="rolesQuery" value="select role, 'Roles' from users u where u.email=?"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Disabled" flag="required"/>
</authentication>
</security-domain>
</security-domains>
</subsystem>
与数据库的连接工作正常。好像没有使用我添加的安全域。请帮我解决它。谢谢!