【问题标题】:Internet Explorer buggy when accessing a custom weblogic provider访问自定义 weblogic 提供程序时 Internet Explorer 错误
【发布时间】:2010-06-16 00:53:48
【问题描述】:

我在 10.3 版上创建了一个自定义 Weblogic 安全身份验证提供程序,其中包括一个用于验证用户的自定义登录模块。作为提供者的一部分,我实现了 ServletAuthenticationFilter 并添加了一个过滤器。过滤器充当域内所有应用程序的通用登录页面。

当我们通过在地址栏中输入任何安全 URL 来访问它们时,这在 IE 和 Firefox 中运行良好。但是当我们在 IE 中为链接添加书签时,会发生奇怪的事情。如果我单击书签,您将看到我们的登录页面,然后在您成功登录系统后,即使用户已经通过身份验证,也会显示基本身份验证页面。这在 Firefox 中永远不会发生,只有 IE 才会发生。也是断断续续的。 5 次中有 1 次 IE 将正确重定向并且不显示基本身份验证窗口。 Firefox 和 Opera 每次都会正确重定向。我们捕获了响应头并比较了成功和失败,它们是相同的。

final boolean isAuthenticated = authenticateUser(userName, password, req);

        // Send user on to the original URL
        if (isAuthenticated) {
            res.sendRedirect(targetURL);
            return;
        }

如您所见,一旦用户通过身份验证,我就会重定向到原始 URL。有没有我错过的步骤? authenticateUser() 方法逐字取自 Oracle 文档中的示例。

private boolean authenticateUser(final String userName, final String password, HttpServletRequest request) {

    boolean results;

    try {
        ServletAuthentication.login(new CallbackHandler() {

            @Override
            public void handle(Callback[] callbacks)
                    throws IOException, UnsupportedCallbackException {

                for (Callback callback : callbacks) {
                    if (callback instanceof NameCallback) {
                        NameCallback nameCallback = (NameCallback) callback;
                        nameCallback.setName(userName);
                    }

                    if (callback instanceof PasswordCallback) {
                        PasswordCallback passwordCallback = (PasswordCallback) callback;
                        passwordCallback.setPassword(password.toCharArray());
                    }
                }
            }
        }, request);
        results = true;
    } catch (LoginException e) {
        results = false;
    }

    return results;

我在这里问这个问题是因为我不知道问题出在 Weblogic 配置还是代码上。如果这个问题更适合 ServerFault,请告诉我,我会在那里发布。

奇怪的是,它每次都可以在 Firefox 和 Opera 中运行,但不能在 Internet Explorer 中运行。我希望不使用 Internet Explorer 是一种选择,但它目前是公司的标准。任何帮助或方向将不胜感激。我已经针对 IE 6 和 8 进行了测试,并在 3 个不同的环境中部署了自定义提供程序,但我仍然可以重现该错误。

【问题讨论】:

    标签: internet-explorer-8 weblogic-10.x


    【解决方案1】:

    我们想通了。

    修复是禁用 weblogic 服务器上的身份验证 cookie。由于某种原因,Internet Explorer 会丢失 cookie,从而导致 Weblogic 认为会话被黑客入侵。这就是提示基本身份验证登录的原因。

    我们仍然不知道是什么导致 IE 丢失了 cookie,但此提供程序用于 Intranet,因此修复不会损害我们的整体安全性。

    我希望这对其他人有帮助。

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 2011-03-13
      相关资源
      最近更新 更多