mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-14 04:15:04 +00:00
8032832: Applet/browser deadlocks, when IIS integrated authentication is used
Reviewed-by: chegar, weijun
This commit is contained in:
parent
33a7783be5
commit
de4e7722dd
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -31,6 +31,7 @@ import java.net.Authenticator.RequestorType;
|
||||
import java.util.Base64;
|
||||
import java.util.HashMap;
|
||||
import sun.net.www.HeaderParser;
|
||||
import sun.util.logging.PlatformLogger;
|
||||
import static sun.net.www.protocol.http.AuthScheme.NEGOTIATE;
|
||||
import static sun.net.www.protocol.http.AuthScheme.KERBEROS;
|
||||
|
||||
@ -44,6 +45,7 @@ import static sun.net.www.protocol.http.AuthScheme.KERBEROS;
|
||||
class NegotiateAuthentication extends AuthenticationInfo {
|
||||
|
||||
private static final long serialVersionUID = 100L;
|
||||
private static final PlatformLogger logger = HttpURLConnection.getHttpLogger();
|
||||
|
||||
final private HttpCallerInfo hci;
|
||||
|
||||
@ -78,6 +80,31 @@ class NegotiateAuthentication extends AuthenticationInfo {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find out if the HttpCallerInfo supports Negotiate protocol.
|
||||
* @return true if supported
|
||||
*/
|
||||
public static boolean isSupported(HttpCallerInfo hci) {
|
||||
ClassLoader loader = null;
|
||||
try {
|
||||
loader = Thread.currentThread().getContextClassLoader();
|
||||
} catch (SecurityException se) {
|
||||
if (logger.isLoggable(PlatformLogger.Level.FINER)) {
|
||||
logger.finer("NegotiateAuthentication: " +
|
||||
"Attempt to get the context class loader failed - " + se);
|
||||
}
|
||||
}
|
||||
|
||||
if (loader != null) {
|
||||
// Lock on the class loader instance to avoid the deadlock engaging
|
||||
// the lock in "ClassLoader.loadClass(String, boolean)" method.
|
||||
synchronized (loader) {
|
||||
return isSupportedImpl(hci);
|
||||
}
|
||||
}
|
||||
return isSupportedImpl(hci);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find out if the HttpCallerInfo supports Negotiate protocol. In order to
|
||||
* find out yes or no, an initialization of a Negotiator object against it
|
||||
@ -89,7 +116,7 @@ class NegotiateAuthentication extends AuthenticationInfo {
|
||||
*
|
||||
* @return true if supported
|
||||
*/
|
||||
synchronized public static boolean isSupported(HttpCallerInfo hci) {
|
||||
private static synchronized boolean isSupportedImpl(HttpCallerInfo hci) {
|
||||
if (supported == null) {
|
||||
supported = new HashMap <String, Boolean>();
|
||||
cache = new HashMap <String, Negotiator>();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user