public class org.apache.catalina.authenticator.SpnegoAuthenticator extends org.apache.catalina.authenticator.AuthenticatorBase
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.catalina.authenticator.SpnegoAuthenticator
super_class: org.apache.catalina.authenticator.AuthenticatorBase
{
private final org.apache.juli.logging.Log log;
descriptor: Lorg/apache/juli/logging/Log;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final java.lang.String ;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "Negotiate"
private java.lang.String loginConfigName;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private boolean storeDelegatedCredential;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.util.regex.Pattern noKeepAliveUserAgents;
descriptor: Ljava/util/regex/Pattern;
flags: (0x0002) ACC_PRIVATE
private boolean applyJava8u40Fix;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.apache.catalina.authenticator.AuthenticatorBase.<init>:()V
1: aload 0
ldc Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
2: aload 0
ldc "com.sun.security.jgss.krb5.accept"
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.loginConfigName:Ljava/lang/String;
3: aload 0
iconst_1
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.storeDelegatedCredential:Z
4: aload 0
aconst_null
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.noKeepAliveUserAgents:Ljava/util/regex/Pattern;
5: aload 0
iconst_1
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.applyJava8u40Fix:Z
6: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
public java.lang.String getLoginConfigName();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.loginConfigName:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
public void setLoginConfigName(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.loginConfigName:Ljava/lang/String;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
0 2 1 loginConfigName Ljava/lang/String;
MethodParameters:
Name Flags
loginConfigName
public boolean isStoreDelegatedCredential();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.storeDelegatedCredential:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
public void setStoreDelegatedCredential(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.storeDelegatedCredential:Z
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
0 2 1 storeDelegatedCredential Z
MethodParameters:
Name Flags
storeDelegatedCredential
public java.lang.String getNoKeepAliveUserAgents();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.noKeepAliveUserAgents:Ljava/util/regex/Pattern;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: aconst_null
areturn
3: StackMap locals: java.util.regex.Pattern
StackMap stack:
aload 1
invokevirtual java.util.regex.Pattern.pattern:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
1 4 1 p Ljava/util/regex/Pattern;
public void setNoKeepAliveUserAgents(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 2
1: aload 1
invokevirtual java.lang.String.length:()I
ifne 4
2: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.noKeepAliveUserAgents:Ljava/util/regex/Pattern;
3: goto 5
4: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.noKeepAliveUserAgents:Ljava/util/regex/Pattern;
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
0 6 1 noKeepAliveUserAgents Ljava/lang/String;
MethodParameters:
Name Flags
noKeepAliveUserAgents
public boolean getApplyJava8u40Fix();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.applyJava8u40Fix:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
public void setApplyJava8u40Fix(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.apache.catalina.authenticator.SpnegoAuthenticator.applyJava8u40Fix:Z
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
0 2 1 applyJava8u40Fix Z
MethodParameters:
Name Flags
applyJava8u40Fix
protected java.lang.String getAuthMethod();
descriptor: ()Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "SPNEGO"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
protected void initInternal();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
invokespecial org.apache.catalina.authenticator.AuthenticatorBase.initInternal:()V
1: ldc "java.security.krb5.conf"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 1
start local 1 2: aload 1
ifnonnull 9
3: new java.io.File
dup
aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.container:Lorg/apache/catalina/Container;
invokeinterface org.apache.catalina.Container.getCatalinaBase:()Ljava/io/File;
4: ldc "conf/krb5.ini"
5: invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 2
start local 2 6: ldc "java.security.krb5.conf"
7: aload 2
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
8: invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
pop
end local 2 9: StackMap locals: java.lang.String
StackMap stack:
ldc "java.security.auth.login.config"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 10: aload 2
ifnonnull 17
11: new java.io.File
dup
aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.container:Lorg/apache/catalina/Container;
invokeinterface org.apache.catalina.Container.getCatalinaBase:()Ljava/io/File;
12: ldc "conf/jaas.conf"
13: invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 3
start local 3 14: ldc "java.security.auth.login.config"
15: aload 3
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
16: invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
pop
end local 3 17: StackMap locals: java.lang.String
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
2 18 1 krb5Conf Ljava/lang/String;
6 9 2 krb5ConfFile Ljava/io/File;
10 18 2 jaasConf Ljava/lang/String;
14 17 3 jaasConfFile Ljava/io/File;
Exceptions:
throws org.apache.catalina.LifecycleException
protected boolean doAuthenticate(org.apache.catalina.connector.Request, jakarta.servlet.http.HttpServletResponse);
descriptor: (Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=15, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
iconst_1
invokevirtual org.apache.catalina.authenticator.SpnegoAuthenticator.checkForCachedAuthentication:(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;Z)Z
ifeq 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
invokevirtual org.apache.coyote.Request.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
3: ldc "authorization"
invokevirtual org.apache.tomcat.util.http.MimeHeaders.getValue:(Ljava/lang/String;)Lorg/apache/tomcat/util/buf/MessageBytes;
4: astore 3
start local 3 5: aload 3
ifnonnull 11
6: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 8
7: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.catalina.authenticator.SpnegoAuthenticator.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "authenticator.noAuthHeader"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
8: StackMap locals: org.apache.tomcat.util.buf.MessageBytes
StackMap stack:
aload 2
ldc "WWW-Authenticate"
ldc "Negotiate"
invokeinterface jakarta.servlet.http.HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
9: aload 2
sipush 401
invokeinterface jakarta.servlet.http.HttpServletResponse.sendError:(I)V
10: iconst_0
ireturn
11: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.apache.tomcat.util.buf.MessageBytes.toBytes:()V
12: aload 3
invokevirtual org.apache.tomcat.util.buf.MessageBytes.getByteChunk:()Lorg/apache/tomcat/util/buf/ByteChunk;
astore 4
start local 4 13: aload 4
ldc "negotiate "
iconst_0
invokevirtual org.apache.tomcat.util.buf.ByteChunk.startsWithIgnoreCase:(Ljava/lang/String;I)Z
ifne 21
14: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 18
15: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.catalina.authenticator.SpnegoAuthenticator.sm:Lorg/apache/tomcat/util/res/StringManager;
16: ldc "spnegoAuthenticator.authHeaderNotNego"
17: invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
18: StackMap locals: org.apache.tomcat.util.buf.ByteChunk
StackMap stack:
aload 2
ldc "WWW-Authenticate"
ldc "Negotiate"
invokeinterface jakarta.servlet.http.HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
19: aload 2
sipush 401
invokeinterface jakarta.servlet.http.HttpServletResponse.sendError:(I)V
20: iconst_0
ireturn
21: StackMap locals:
StackMap stack:
aload 4
aload 4
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getOffset:()I
bipush 10
iadd
invokevirtual org.apache.tomcat.util.buf.ByteChunk.setOffset:(I)V
22: aload 4
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getBuffer:()[B
23: aload 4
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getOffset:()I
24: aload 4
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getLength:()I
25: invokestatic org.apache.tomcat.util.codec.binary.Base64.decodeBase64:([BII)[B
astore 5
start local 5 26: aload 0
invokevirtual org.apache.catalina.authenticator.SpnegoAuthenticator.getApplyJava8u40Fix:()Z
ifeq 28
27: aload 5
invokestatic org.apache.catalina.authenticator.SpnegoAuthenticator$SpnegoTokenFixer.fix:([B)V
28: StackMap locals: byte[]
StackMap stack:
aload 5
arraylength
ifne 36
29: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 33
30: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.catalina.authenticator.SpnegoAuthenticator.sm:Lorg/apache/tomcat/util/res/StringManager;
31: ldc "spnegoAuthenticator.authHeaderNoToken"
32: invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
33: StackMap locals:
StackMap stack:
aload 2
ldc "WWW-Authenticate"
ldc "Negotiate"
invokeinterface jakarta.servlet.http.HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
34: aload 2
sipush 401
invokeinterface jakarta.servlet.http.HttpServletResponse.sendError:(I)V
35: iconst_0
ireturn
36: StackMap locals:
StackMap stack:
aconst_null
astore 6
start local 6 37: aconst_null
astore 7
start local 7 38: aconst_null
astore 8
start local 8 39: aconst_null
astore 9
start local 9 40: new javax.security.auth.login.LoginContext
dup
aload 0
invokevirtual org.apache.catalina.authenticator.SpnegoAuthenticator.getLoginConfigName:()Ljava/lang/String;
invokespecial javax.security.auth.login.LoginContext.<init>:(Ljava/lang/String;)V
astore 6
41: aload 6
invokevirtual javax.security.auth.login.LoginContext.login:()V
42: goto 59
StackMap locals: org.apache.catalina.authenticator.SpnegoAuthenticator org.apache.catalina.connector.Request jakarta.servlet.http.HttpServletResponse org.apache.tomcat.util.buf.MessageBytes org.apache.tomcat.util.buf.ByteChunk byte[] javax.security.auth.login.LoginContext org.ietf.jgss.GSSContext byte[] java.security.Principal
StackMap stack: javax.security.auth.login.LoginException
43: astore 10
start local 10 44: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.catalina.authenticator.SpnegoAuthenticator.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "spnegoAuthenticator.serviceLoginFail"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
45: aload 10
46: invokeinterface org.apache.juli.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
47: aload 2
48: sipush 500
49: invokeinterface jakarta.servlet.http.HttpServletResponse.sendError:(I)V
50: aload 7
ifnull 54
51: aload 7
invokeinterface org.ietf.jgss.GSSContext.dispose:()V
52: goto 54
StackMap locals: org.apache.catalina.authenticator.SpnegoAuthenticator org.apache.catalina.connector.Request jakarta.servlet.http.HttpServletResponse org.apache.tomcat.util.buf.MessageBytes org.apache.tomcat.util.buf.ByteChunk byte[] javax.security.auth.login.LoginContext org.ietf.jgss.GSSContext byte[] java.security.Principal javax.security.auth.login.LoginException
StackMap stack: org.ietf.jgss.GSSException
53: pop
54: StackMap locals:
StackMap stack:
aload 6
ifnull 58
55: aload 6
invokevirtual javax.security.auth.login.LoginContext.logout:()V
56: goto 58
StackMap locals:
StackMap stack: javax.security.auth.login.LoginException
57: pop
58: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 10 59: StackMap locals:
StackMap stack:
aload 6
invokevirtual javax.security.auth.login.LoginContext.getSubject:()Ljavax/security/auth/Subject;
astore 10
start local 10 60: invokestatic org.ietf.jgss.GSSManager.getInstance:()Lorg/ietf/jgss/GSSManager;
astore 11
start local 11 61: getstatic org.apache.tomcat.util.compat.JreVendor.IS_IBM_JVM:Z
ifeq 64
62: ldc 2147483647
istore 12
start local 12 63: goto 65
end local 12 64: StackMap locals: javax.security.auth.Subject org.ietf.jgss.GSSManager
StackMap stack:
iconst_0
istore 12
start local 12 65: StackMap locals: int
StackMap stack:
aload 11
iload 12
invokedynamic run(Lorg/ietf/jgss/GSSManager;I)Ljava/security/PrivilegedExceptionAction;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
org/apache/catalina/authenticator/SpnegoAuthenticator.lambda$0(Lorg/ietf/jgss/GSSManager;I)Lorg/ietf/jgss/GSSCredential; (6)
()Lorg/ietf/jgss/GSSCredential;
66: astore 13
start local 13 67: aload 11
aload 10
aload 13
invokestatic javax.security.auth.Subject.doAs:(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast org.ietf.jgss.GSSCredential
invokevirtual org.ietf.jgss.GSSManager.createContext:(Lorg/ietf/jgss/GSSCredential;)Lorg/ietf/jgss/GSSContext;
astore 7
68: aload 6
invokevirtual javax.security.auth.login.LoginContext.getSubject:()Ljavax/security/auth/Subject;
new org.apache.catalina.authenticator.SpnegoAuthenticator$AcceptAction
dup
aload 7
aload 5
invokespecial org.apache.catalina.authenticator.SpnegoAuthenticator$AcceptAction.<init>:(Lorg/ietf/jgss/GSSContext;[B)V
invokestatic javax.security.auth.Subject.doAs:(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast byte[]
astore 8
69: aload 8
ifnonnull 85
70: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 74
71: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.catalina.authenticator.SpnegoAuthenticator.sm:Lorg/apache/tomcat/util/res/StringManager;
72: ldc "spnegoAuthenticator.ticketValidateFail"
73: invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
74: StackMap locals: java.security.PrivilegedExceptionAction
StackMap stack:
aload 2
ldc "WWW-Authenticate"
ldc "Negotiate"
invokeinterface jakarta.servlet.http.HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
75: aload 2
sipush 401
invokeinterface jakarta.servlet.http.HttpServletResponse.sendError:(I)V
76: aload 7
ifnull 80
77: aload 7
invokeinterface org.ietf.jgss.GSSContext.dispose:()V
78: goto 80
StackMap locals:
StackMap stack: org.ietf.jgss.GSSException
79: pop
80: StackMap locals:
StackMap stack:
aload 6
ifnull 84
81: aload 6
invokevirtual javax.security.auth.login.LoginContext.logout:()V
82: goto 84
StackMap locals:
StackMap stack: javax.security.auth.login.LoginException
83: pop
84: StackMap locals:
StackMap stack:
iconst_0
ireturn
85: StackMap locals:
StackMap stack:
aload 10
new org.apache.catalina.authenticator.SpnegoAuthenticator$AuthenticateAction
dup
86: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.context:Lorg/apache/catalina/Context;
invokeinterface org.apache.catalina.Context.getRealm:()Lorg/apache/catalina/Realm;
aload 7
aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.storeDelegatedCredential:Z
invokespecial org.apache.catalina.authenticator.SpnegoAuthenticator$AuthenticateAction.<init>:(Lorg/apache/catalina/Realm;Lorg/ietf/jgss/GSSContext;Z)V
87: invokestatic javax.security.auth.Subject.doAs:(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.security.Principal
astore 9
end local 13 end local 12 end local 11 end local 10 88: goto 131
StackMap locals: org.apache.catalina.authenticator.SpnegoAuthenticator org.apache.catalina.connector.Request jakarta.servlet.http.HttpServletResponse org.apache.tomcat.util.buf.MessageBytes org.apache.tomcat.util.buf.ByteChunk byte[] javax.security.auth.login.LoginContext org.ietf.jgss.GSSContext byte[] java.security.Principal
StackMap stack: org.ietf.jgss.GSSException
89: astore 10
start local 10 90: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 92
91: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.catalina.authenticator.SpnegoAuthenticator.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "spnegoAuthenticator.ticketValidateFail"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
aload 10
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
92: StackMap locals: org.ietf.jgss.GSSException
StackMap stack:
aload 2
ldc "WWW-Authenticate"
ldc "Negotiate"
invokeinterface jakarta.servlet.http.HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
93: aload 2
sipush 401
invokeinterface jakarta.servlet.http.HttpServletResponse.sendError:(I)V
94: aload 7
ifnull 98
95: aload 7
invokeinterface org.ietf.jgss.GSSContext.dispose:()V
96: goto 98
StackMap locals:
StackMap stack: org.ietf.jgss.GSSException
97: pop
98: StackMap locals:
StackMap stack:
aload 6
ifnull 102
99: aload 6
invokevirtual javax.security.auth.login.LoginContext.logout:()V
100: goto 102
StackMap locals:
StackMap stack: javax.security.auth.login.LoginException
101: pop
102: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 10 103: StackMap locals: org.apache.catalina.authenticator.SpnegoAuthenticator org.apache.catalina.connector.Request jakarta.servlet.http.HttpServletResponse org.apache.tomcat.util.buf.MessageBytes org.apache.tomcat.util.buf.ByteChunk byte[] javax.security.auth.login.LoginContext org.ietf.jgss.GSSContext byte[] java.security.Principal
StackMap stack: java.security.PrivilegedActionException
astore 10
start local 10 104: aload 10
invokevirtual java.security.PrivilegedActionException.getCause:()Ljava/lang/Throwable;
astore 11
start local 11 105: aload 11
instanceof org.ietf.jgss.GSSException
ifeq 109
106: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 110
107: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.catalina.authenticator.SpnegoAuthenticator.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "spnegoAuthenticator.serviceLoginFail"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
aload 10
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
108: goto 110
109: StackMap locals: java.security.PrivilegedActionException java.lang.Throwable
StackMap stack:
aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.catalina.authenticator.SpnegoAuthenticator.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "spnegoAuthenticator.serviceLoginFail"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
aload 10
invokeinterface org.apache.juli.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
110: StackMap locals:
StackMap stack:
aload 2
ldc "WWW-Authenticate"
ldc "Negotiate"
invokeinterface jakarta.servlet.http.HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
111: aload 2
sipush 401
invokeinterface jakarta.servlet.http.HttpServletResponse.sendError:(I)V
112: aload 7
ifnull 116
113: aload 7
invokeinterface org.ietf.jgss.GSSContext.dispose:()V
114: goto 116
StackMap locals:
StackMap stack: org.ietf.jgss.GSSException
115: pop
116: StackMap locals:
StackMap stack:
aload 6
ifnull 120
117: aload 6
invokevirtual javax.security.auth.login.LoginContext.logout:()V
118: goto 120
StackMap locals:
StackMap stack: javax.security.auth.login.LoginException
119: pop
120: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 11 end local 10 121: StackMap locals: org.apache.catalina.authenticator.SpnegoAuthenticator org.apache.catalina.connector.Request jakarta.servlet.http.HttpServletResponse org.apache.tomcat.util.buf.MessageBytes org.apache.tomcat.util.buf.ByteChunk byte[] javax.security.auth.login.LoginContext org.ietf.jgss.GSSContext byte[] java.security.Principal
StackMap stack: java.lang.Throwable
astore 14
122: aload 7
ifnull 126
123: aload 7
invokeinterface org.ietf.jgss.GSSContext.dispose:()V
124: goto 126
StackMap locals: org.apache.catalina.authenticator.SpnegoAuthenticator org.apache.catalina.connector.Request jakarta.servlet.http.HttpServletResponse org.apache.tomcat.util.buf.MessageBytes org.apache.tomcat.util.buf.ByteChunk byte[] javax.security.auth.login.LoginContext org.ietf.jgss.GSSContext byte[] java.security.Principal top top top top java.lang.Throwable
StackMap stack: org.ietf.jgss.GSSException
125: pop
126: StackMap locals:
StackMap stack:
aload 6
ifnull 130
127: aload 6
invokevirtual javax.security.auth.login.LoginContext.logout:()V
128: goto 130
StackMap locals:
StackMap stack: javax.security.auth.login.LoginException
129: pop
130: StackMap locals:
StackMap stack:
aload 14
athrow
131: StackMap locals: org.apache.catalina.authenticator.SpnegoAuthenticator org.apache.catalina.connector.Request jakarta.servlet.http.HttpServletResponse org.apache.tomcat.util.buf.MessageBytes org.apache.tomcat.util.buf.ByteChunk byte[] javax.security.auth.login.LoginContext org.ietf.jgss.GSSContext byte[] java.security.Principal
StackMap stack:
aload 7
ifnull 135
132: aload 7
invokeinterface org.ietf.jgss.GSSContext.dispose:()V
133: goto 135
StackMap locals:
StackMap stack: org.ietf.jgss.GSSException
134: pop
135: StackMap locals:
StackMap stack:
aload 6
ifnull 139
136: aload 6
invokevirtual javax.security.auth.login.LoginContext.logout:()V
137: goto 139
StackMap locals:
StackMap stack: javax.security.auth.login.LoginException
138: pop
139: StackMap locals:
StackMap stack:
aload 2
ldc "WWW-Authenticate"
new java.lang.StringBuilder
dup
ldc "Negotiate "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
140: aload 8
invokestatic org.apache.tomcat.util.codec.binary.Base64.encodeBase64String:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
141: invokeinterface jakarta.servlet.http.HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
142: aload 9
ifnull 155
143: aload 0
aload 1
aload 2
aload 9
ldc "SPNEGO"
144: aload 9
invokeinterface java.security.Principal.getName:()Ljava/lang/String;
aconst_null
145: invokevirtual org.apache.catalina.authenticator.SpnegoAuthenticator.register:(Lorg/apache/catalina/connector/Request;Ljakarta/servlet/http/HttpServletResponse;Ljava/security/Principal;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
146: aload 0
getfield org.apache.catalina.authenticator.SpnegoAuthenticator.noKeepAliveUserAgents:Ljava/util/regex/Pattern;
astore 10
start local 10 147: aload 10
ifnull 154
148: aload 1
invokevirtual org.apache.catalina.connector.Request.getCoyoteRequest:()Lorg/apache/coyote/Request;
invokevirtual org.apache.coyote.Request.getMimeHeaders:()Lorg/apache/tomcat/util/http/MimeHeaders;
149: ldc "user-agent"
150: invokevirtual org.apache.tomcat.util.http.MimeHeaders.getValue:(Ljava/lang/String;)Lorg/apache/tomcat/util/buf/MessageBytes;
151: astore 11
start local 11 152: aload 11
ifnull 154
aload 10
aload 11
invokevirtual org.apache.tomcat.util.buf.MessageBytes.toString:()Ljava/lang/String;
invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
invokevirtual java.util.regex.Matcher.matches:()Z
ifeq 154
153: aload 2
ldc "Connection"
ldc "close"
invokeinterface jakarta.servlet.http.HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
end local 11 154: StackMap locals: java.util.regex.Pattern
StackMap stack:
iconst_1
ireturn
end local 10 155: StackMap locals:
StackMap stack:
aload 2
sipush 401
invokeinterface jakarta.servlet.http.HttpServletResponse.sendError:(I)V
156: iconst_0
ireturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 157 0 this Lorg/apache/catalina/authenticator/SpnegoAuthenticator;
0 157 1 request Lorg/apache/catalina/connector/Request;
0 157 2 response Ljakarta/servlet/http/HttpServletResponse;
5 157 3 authorization Lorg/apache/tomcat/util/buf/MessageBytes;
13 157 4 authorizationBC Lorg/apache/tomcat/util/buf/ByteChunk;
26 157 5 decoded [B
37 157 6 lc Ljavax/security/auth/login/LoginContext;
38 157 7 gssContext Lorg/ietf/jgss/GSSContext;
39 157 8 outToken [B
40 157 9 principal Ljava/security/Principal;
44 59 10 e Ljavax/security/auth/login/LoginException;
60 88 10 subject Ljavax/security/auth/Subject;
61 88 11 manager Lorg/ietf/jgss/GSSManager;
63 64 12 credentialLifetime I
65 88 12 credentialLifetime I
67 88 13 action Ljava/security/PrivilegedExceptionAction<Lorg/ietf/jgss/GSSCredential;>;
90 103 10 e Lorg/ietf/jgss/GSSException;
104 121 10 e Ljava/security/PrivilegedActionException;
105 121 11 cause Ljava/lang/Throwable;
147 155 10 p Ljava/util/regex/Pattern;
152 154 11 ua Lorg/apache/tomcat/util/buf/MessageBytes;
Exception table:
from to target type
40 42 43 Class javax.security.auth.login.LoginException
51 52 53 Class org.ietf.jgss.GSSException
55 56 57 Class javax.security.auth.login.LoginException
77 78 79 Class org.ietf.jgss.GSSException
81 82 83 Class javax.security.auth.login.LoginException
40 50 89 Class org.ietf.jgss.GSSException
59 76 89 Class org.ietf.jgss.GSSException
85 88 89 Class org.ietf.jgss.GSSException
95 96 97 Class org.ietf.jgss.GSSException
99 100 101 Class javax.security.auth.login.LoginException
40 50 103 Class java.security.PrivilegedActionException
59 76 103 Class java.security.PrivilegedActionException
85 88 103 Class java.security.PrivilegedActionException
113 114 115 Class org.ietf.jgss.GSSException
117 118 119 Class javax.security.auth.login.LoginException
40 50 121 any
59 76 121 any
85 94 121 any
103 112 121 any
123 124 125 Class org.ietf.jgss.GSSException
127 128 129 Class javax.security.auth.login.LoginException
132 133 134 Class org.ietf.jgss.GSSException
136 137 138 Class javax.security.auth.login.LoginException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
request
response
private static org.ietf.jgss.GSSCredential lambda$0(org.ietf.jgss.GSSManager, int);
descriptor: (Lorg/ietf/jgss/GSSManager;I)Lorg/ietf/jgss/GSSCredential;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=6, locals=2, args_size=2
0: aload 0
aconst_null
1: iload 1
2: new org.ietf.jgss.Oid
dup
ldc "1.3.6.1.5.5.2"
invokespecial org.ietf.jgss.Oid.<init>:(Ljava/lang/String;)V
3: iconst_2
4: invokevirtual org.ietf.jgss.GSSManager.createCredential:(Lorg/ietf/jgss/GSSName;ILorg/ietf/jgss/Oid;I)Lorg/ietf/jgss/GSSCredential;
5: areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.Exception
}
SourceFile: "SpnegoAuthenticator.java"
NestMembers:
org.apache.catalina.authenticator.SpnegoAuthenticator$AcceptAction org.apache.catalina.authenticator.SpnegoAuthenticator$AuthenticateAction org.apache.catalina.authenticator.SpnegoAuthenticator$SpnegoTokenFixer
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public AcceptAction = org.apache.catalina.authenticator.SpnegoAuthenticator$AcceptAction of org.apache.catalina.authenticator.SpnegoAuthenticator
public AuthenticateAction = org.apache.catalina.authenticator.SpnegoAuthenticator$AuthenticateAction of org.apache.catalina.authenticator.SpnegoAuthenticator
public SpnegoTokenFixer = org.apache.catalina.authenticator.SpnegoAuthenticator$SpnegoTokenFixer of org.apache.catalina.authenticator.SpnegoAuthenticator