1

LdapLoginModule に裏打ちされた、JBoss 7 の Web アプリケーションでフォームベースの認証を使用しています。

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected Resources</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>ldap</realm-name>
    <form-login-config>
        <form-login-page>login.html</form-login-page>
        <form-error-page>login.html</form-error-page>
    </form-login-config>
</login-config>

/ にアクセスすると login.html に送られ、無効なパスワードを入力すると /j_security_check に送られます。/ に送信されたにもかかわらず正しいパスワードを入力すると、ブラウザーに次のエラーが表示されます。

HTTP Status 403 - Access to the requested resource has been denied

ログイン フォームのネゴシエーションに成功した後、index.html へのアクセスが拒否されるのはなぜですか? ログ出力の兆候はありません。

4

1 に答える 1

1

これは、ロールベースの認証にかかっているようです。現在、次の web.xml で動作しています (2.3 ではなく 2.5 の web-app として):

<security-role>
    <role-name>*</role-name>
</security-role>
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected Resources</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>ldap</realm-name>
    <form-login-config>
        <form-login-page>/login.html</form-login-page>
        <form-error-page>/login.html</form-error-page>
    </form-login-config>
</login-config>

そして、次の JBoss ログイン モジュール:

<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required">
    <module-option name="java.naming.provider.url" value="ldap://localhost:389"/>
    <module-option name="java.naming.security.authentication" value="simple"/>
    <module-option name="bindDN" value="cn=Manager,dc=domain,dc=com"/>
    <module-option name="baseCtxDN" value="ou=people,dc=domain,dc=com"/>
    <module-option name="baseFilter" value="(cn={0})"/>
    <module-option name="bindCredential" value="password"/>
    <module-option name="principalDNPrefix" value="cn="/>
    <module-option name="principalDNSuffix" value=",ou=people,dc=domain,dc=com"/>
    <module-option name="rolesCtxDN" value="ou=groups,dc=domain,dc=com"/>
    <module-option name="uidAttributeID" value="uid"/>
    <module-option name="matchOnUserDN" value="true"/>
    <module-option name="roleAttributeID" value="cn"/>
    <module-option name="roleAttributeIsDN" value="false"/>
    <module-option name="roleRecursion" value="-1"/>
    <module-option name="roleFilter" value="(member={1})"/>
    <module-option name="allowEmptyPasswords" value="false"/>
    <module-option name="Context.REFERRAL" value="follow"/>
    <module-option name="throwValidateError" value="true"/>
</login-module>
于 2012-10-20T18:52:26.887 に答える