我使用 JSF、EJB 和 JAAS 和 JBoss 7.1.1Final 创建了一个 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>

但是,我收到的异常(exception)是:



我也尝试过这种配置:
<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>

与数据库的连接工作正常。
好像没有使用我添加的安全域。
请帮我解决它。
谢谢!

最佳答案

我通过像这样配置我的 standalone.xml 解决了它:

<security-domain name="other" cache-type="default">
                    <authentication>
                        <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
                            <module-option name="dsJndiName" value="java:jboss/datasources/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>

并删除所有安全域,除了其他之外,登录模块在其他安全域下并且还像这样更改了jboss-web.xml:
 <security-domain>other</security-domain>

关于security - 在 JBoss 7.1.1Final 中添加新的安全域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19745472/

10-10 14:46