4

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>

データベースへの接続は正常に機能します。追加したセキュリティ ドメインを使用していないようです。私がそれを解決するのを手伝ってください。ありがとうございました!

4

2 に答える 2

4

次のように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> 
于 2013-11-03T10:49:54.677 に答える
1

standalone.xml のセキュリティ ドメインのデフォルト設定を削除するだけで問題を解決しました。

    <default-security-domain value="other"/>  

私はまだ他のセキュリティドメインを持っています。

于 2017-01-11T13:42:27.817 に答える