aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorweijun <none@none>2014-10-14 10:08:32 +0800
committerweijun <none@none>2014-10-14 10:08:32 +0800
commit1a5379cb94bb47d0f6bb27d5a5213c5c07c2076e (patch)
treee1ec18b42b7d66a35c40d3c1706115d8635821bc
parent86d1400a91a8243f3bce6ffc9356e6d0c4739f63 (diff)
8044215: Unable to initiate SpNego using a S4U2Proxy GSSCredential (Krb5ProxyCredential)
Reviewed-by: mullan
-rw-r--r--src/share/classes/sun/security/jgss/krb5/Krb5Context.java7
-rw-r--r--test/sun/security/krb5/auto/S4U2proxy.java6
2 files changed, 10 insertions, 3 deletions
diff --git a/src/share/classes/sun/security/jgss/krb5/Krb5Context.java b/src/share/classes/sun/security/jgss/krb5/Krb5Context.java
index 2230c75e6..e7c9d6f39 100644
--- a/src/share/classes/sun/security/jgss/krb5/Krb5Context.java
+++ b/src/share/classes/sun/security/jgss/krb5/Krb5Context.java
@@ -241,8 +241,11 @@ class Krb5Context implements GSSContextSpi {
* establishment.
*/
public final void requestCredDeleg(boolean value) throws GSSException {
- if (state == STATE_NEW && isInitiator())
- credDelegState = value;
+ if (state == STATE_NEW && isInitiator()) {
+ if (myCred == null || !(myCred instanceof Krb5ProxyCredential)) {
+ credDelegState = value;
+ }
+ }
}
/**
diff --git a/test/sun/security/krb5/auto/S4U2proxy.java b/test/sun/security/krb5/auto/S4U2proxy.java
index dd7d50c38..10e565279 100644
--- a/test/sun/security/krb5/auto/S4U2proxy.java
+++ b/test/sun/security/krb5/auto/S4U2proxy.java
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6355584
+ * @bug 6355584 8044215
* @summary Introduce constrained Kerberos delegation
* @compile -XDignore.symbol.file S4U2proxy.java
* @run main/othervm S4U2proxy krb5
@@ -69,6 +69,10 @@ public class S4U2proxy {
Context p = s.delegated();
p.startAsClient(OneKDC.BACKEND, mech);
+
+ // 8044215: requestCredDeleg is useless and harmless
+ p.x().requestCredDeleg(true);
+
b.startAsServer(mech);
Context.handshake(p, b);