Internet explorer 8 访问自定义weblogic提供程序时出现Internet Explorer错误

Internet explorer 8 访问自定义weblogic提供程序时出现Internet Explorer错误,internet-explorer-8,weblogic-10.x,Internet Explorer 8,Weblogic 10.x,我已经在版本10.3上创建了一个自定义Weblogic安全身份验证提供程序,其中包括一个自定义登录模块来验证用户。作为提供者的一部分,我实现了ServletAuthenticationFilter并添加了一个过滤器。该筛选器充当域中所有应用程序的公共登录页 当我们通过在地址栏中输入任何安全的URL来访问它们时,这在IE和Firefox中工作得很好。但当我们在IE中为链接添加书签时,会发生一件奇怪的事情。如果我单击书签,您将看到我们的登录页面,然后在您成功登录系统后,将显示基本身份验证页面,即使用

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

当我们通过在地址栏中输入任何安全的URL来访问它们时,这在IE和Firefox中工作得很好。但当我们在IE中为链接添加书签时,会发生一件奇怪的事情。如果我单击书签,您将看到我们的登录页面,然后在您成功登录系统后,将显示基本身份验证页面,即使用户已通过身份验证。这在Firefox中从未发生过,只有IE。它也是间歇性的。五分之一的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中都能工作,但在InternetExplorer中却不能。我希望不使用Internet Explorer是一种选择,但它目前是公司的标准。任何帮助或指导都将不胜感激。我已经针对IE6和IE8进行了测试,并在3个不同的环境中部署了自定义提供程序,我仍然可以重现该错误。

我们已经解决了它

修复方法是禁用weblogic服务器上的身份验证Cookie。出于某种原因,Internet Explorer会丢失cookie,导致Weblogic认为会话被黑客攻击。这就是提示进行基本身份验证登录的原因

我们仍然不知道是什么原因导致IE丢失了cookie,但该提供商是针对内部网的,因此修复不会损害我们的整体安全性

我希望这对其他人有帮助