1

我们已将应用程序从 Glassfish 移植到 JBOSS AS 7。我们使用 JDBCRealm 和基于 JAAS 表单的身份验证。问题是 AS 7 在提交表单时使用 ISO-8955-1 编码。我们的所有其他表单都遇到了这个问题,但我们通过将 servlet 过滤器转换为 UTF-8 解决了这个问题,这个解决方案是推荐的解决方法https://bugzilla.redhat.com/show_bug.cgi?id=832235

在基于表单的身份验证期间,我们不能在两者之间放置过滤器,因此身份验证失败。任何已知的解决方法?

使用的用户名:user%&;/()=?`\*^ÄÅÖ_:;: -+}][{€$£@8ks6fje739ajf6 但您可以看到它包含不正确的字符。

17:16:59,601 DEBUG [org.apache.tomcat.util.http.Cookies] (http--127.0.0.1-9443-5) Cookies: Parsing b[]: JSESSIONID=FbiZG09BOiprQfUMTmdirSrq.undefined
17:16:59,603 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] (http--127.0.0.1-9443-5) Security checking request POST /j_security_check
17:16:59,604 DEBUG [org.apache.tomcat.util.http.Parameters] (http--127.0.0.1-9443-5) Set encoding to ISO-8859-1
17:16:59,604 DEBUG [org.apache.tomcat.util.http.Parameters] (http--127.0.0.1-9443-5) Set query string encoding to ISO-8859-1
17:16:59,604 DEBUG [org.apache.tomcat.util.http.Parameters] (http--127.0.0.1-9443-5) Start processing with input [j_username=user%25%26%2F%28%29%3D%3F%60%5C%5C*%5E%C3%84%C3%85%C3%96_%3A%3B%3A+-%2B%5C%7D%5D%5B%7B%E2%82%AC%24%C2%A3%408ks6fje739ajf6&j_password=admin]
17:16:59,605 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] (http--127.0.0.1-9443-5) Authenticating username 'user%&/()=?`\\*^���_:;: -+\}][{�$£@8ks6fje739ajf6'
4

2 回答 2

2

最后....解决方法是在Tomcat中配置org.apache.catalina.authenticator.FormAuthenticator使用UTF-8。经过一番苦苦寻找如何在 AS 7.1.1 中配置它后,我发现您在 jboss-web.xml 中像这样配置它

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <security-domain>MySecurityDomain</security-domain>
    <valve>
        <class-name>org.apache.catalina.authenticator.FormAuthenticator</class-name>
        <param>
            <param-name>characterEncoding</param-name>
            <param-value>UTF-8</param-value>
        </param>
    </valve>
</jboss-web>
于 2013-04-29T13:02:24.307 回答
0

请按照此分步指南进行操作,并告诉我们它是否对您有用。 http://amatya.net/blog/implementing-security-with-jaas-in-jboss-as-7/

于 2012-10-30T13:01:48.660 回答