public class io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl implements io.vertx.ext.auth.jwt.JWTAuth
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl
super_class: java.lang.Object
{
private static final io.vertx.core.json.JsonArray EMPTY_ARRAY;
descriptor: Lio/vertx/core/json/JsonArray;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final io.vertx.ext.auth.impl.jose.JWT jwt;
descriptor: Lio/vertx/ext/auth/impl/jose/JWT;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String permissionsClaimKey;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final io.vertx.ext.auth.JWTOptions jwtOptions;
descriptor: Lio/vertx/ext/auth/JWTOptions;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final java.util.Collection<java.lang.String> SPECIAL_KEYS;
descriptor: Ljava/util/Collection;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Collection<Ljava/lang/String;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: new io.vertx.core.json.JsonArray
dup
invokespecial io.vertx.core.json.JsonArray.<init>:()V
putstatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.EMPTY_ARRAY:Lio/vertx/core/json/JsonArray;
1: iconst_4
anewarray java.lang.String
dup
iconst_0
ldc "access_token"
aastore
dup
iconst_1
ldc "exp"
aastore
dup
iconst_2
ldc "iat"
aastore
dup
iconst_3
ldc "nbf"
aastore
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
putstatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.SPECIAL_KEYS:Ljava/util/Collection;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(io.vertx.core.Vertx, io.vertx.ext.auth.jwt.JWTAuthOptions);
descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/auth/jwt/JWTAuthOptions;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new io.vertx.ext.auth.impl.jose.JWT
dup
invokespecial io.vertx.ext.auth.impl.jose.JWT.<init>:()V
putfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
2: aload 0
aload 2
invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getPermissionsClaimKey:()Ljava/lang/String;
putfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.permissionsClaimKey:Ljava/lang/String;
3: aload 0
aload 2
invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getJWTOptions:()Lio/vertx/ext/auth/JWTOptions;
putfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
4: aload 2
invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getKeyStore:()Lio/vertx/ext/auth/KeyStoreOptions;
astore 3
start local 3 5: aload 3
ifnull 29
6: aload 3
invokevirtual io.vertx.ext.auth.KeyStoreOptions.getProvider:()Ljava/lang/String;
ifnonnull 9
7: aload 3
invokevirtual io.vertx.ext.auth.KeyStoreOptions.getType:()Ljava/lang/String;
invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;)Ljava/security/KeyStore;
astore 4
start local 4 8: goto 10
end local 4 9: StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions
StackMap stack:
aload 3
invokevirtual io.vertx.ext.auth.KeyStoreOptions.getType:()Ljava/lang/String;
aload 3
invokevirtual io.vertx.ext.auth.KeyStoreOptions.getProvider:()Ljava/lang/String;
invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;
astore 4
start local 4 10: StackMap locals: java.security.KeyStore
StackMap stack:
ldc Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
dup
astore 5
monitorenter
11: aload 1
invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
aload 3
invokevirtual io.vertx.ext.auth.KeyStoreOptions.getPath:()Ljava/lang/String;
invokeinterface io.vertx.core.file.FileSystem.readFileBlocking:(Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
astore 6
start local 6 12: aconst_null
astore 7
aconst_null
astore 8
13: new java.io.ByteArrayInputStream
dup
aload 6
invokeinterface io.vertx.core.buffer.Buffer.getBytes:()[B
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
astore 9
start local 9 14: aload 4
aload 9
aload 3
invokevirtual io.vertx.ext.auth.KeyStoreOptions.getPassword:()Ljava/lang/String;
invokevirtual java.lang.String.toCharArray:()[C
invokevirtual java.security.KeyStore.load:(Ljava/io/InputStream;[C)V
15: aload 9
ifnull 21
aload 9
invokevirtual java.io.InputStream.close:()V
goto 21
StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.security.KeyStore java.lang.Class io.vertx.core.buffer.Buffer java.lang.Throwable java.lang.Throwable java.io.InputStream
StackMap stack: java.lang.Throwable
16: astore 7
aload 9
ifnull 17
aload 9
invokevirtual java.io.InputStream.close:()V
end local 9 StackMap locals:
StackMap stack:
17: aload 7
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
18: astore 8
aload 7
ifnonnull 19
aload 8
astore 7
goto 20
StackMap locals:
StackMap stack:
19: aload 7
aload 8
if_acmpeq 20
aload 7
aload 8
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
20: aload 7
athrow
end local 6 21: StackMap locals:
StackMap stack:
aload 5
monitorexit
22: goto 25
StackMap locals:
StackMap stack: java.lang.Throwable
23: aload 5
monitorexit
24: athrow
25: StackMap locals:
StackMap stack:
aload 4
aload 3
invokevirtual io.vertx.ext.auth.KeyStoreOptions.getPassword:()Ljava/lang/String;
aload 3
invokevirtual io.vertx.ext.auth.KeyStoreOptions.getPasswordProtection:()Ljava/util/Map;
invokestatic io.vertx.ext.auth.impl.jose.JWK.load:(Ljava/security/KeyStore;Ljava/lang/String;Ljava/util/Map;)Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 28
StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.security.KeyStore top java.util.Iterator
StackMap stack:
26: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.vertx.ext.auth.impl.jose.JWK
astore 5
start local 5 27: aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
aload 5
invokevirtual io.vertx.ext.auth.impl.jose.JWT.addJWK:(Lio/vertx/ext/auth/impl/jose/JWK;)Lio/vertx/ext/auth/impl/jose/JWT;
pop
end local 5 28: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 26
end local 4 29: StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions
StackMap stack:
aload 2
invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getPubSecKeys:()Ljava/util/List;
astore 4
start local 4 30: aload 4
ifnull 35
31: aload 2
invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getPubSecKeys:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 34
StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.util.List top java.util.Iterator
StackMap stack:
32: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.vertx.ext.auth.PubSecKeyOptions
astore 5
start local 5 33: aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
new io.vertx.ext.auth.impl.jose.JWK
dup
aload 5
invokespecial io.vertx.ext.auth.impl.jose.JWK.<init>:(Lio/vertx/ext/auth/PubSecKeyOptions;)V
invokevirtual io.vertx.ext.auth.impl.jose.JWT.addJWK:(Lio/vertx/ext/auth/impl/jose/JWK;)Lio/vertx/ext/auth/impl/jose/JWT;
pop
end local 5 34: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 32
35: StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.util.List
StackMap stack:
aload 2
invokevirtual io.vertx.ext.auth.jwt.JWTAuthOptions.getJwks:()Ljava/util/List;
astore 5
start local 5 36: aload 5
ifnull 44
37: aload 5
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 40
StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions java.util.List java.util.List top java.util.Iterator
StackMap stack:
38: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.vertx.core.json.JsonObject
astore 6
start local 6 39: aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
new io.vertx.ext.auth.impl.jose.JWK
dup
aload 6
invokespecial io.vertx.ext.auth.impl.jose.JWK.<init>:(Lio/vertx/core/json/JsonObject;)V
invokevirtual io.vertx.ext.auth.impl.jose.JWT.addJWK:(Lio/vertx/ext/auth/impl/jose/JWK;)Lio/vertx/ext/auth/impl/jose/JWT;
pop
end local 6 40: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 38
end local 5 end local 4 41: goto 44
StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.core.Vertx io.vertx.ext.auth.jwt.JWTAuthOptions io.vertx.ext.auth.KeyStoreOptions
StackMap stack: java.lang.Exception
42: astore 4
start local 4 43: new java.lang.RuntimeException
dup
aload 4
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 4 44: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 45 0 this Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
0 45 1 vertx Lio/vertx/core/Vertx;
0 45 2 config Lio/vertx/ext/auth/jwt/JWTAuthOptions;
5 45 3 keyStore Lio/vertx/ext/auth/KeyStoreOptions;
8 9 4 ks Ljava/security/KeyStore;
10 29 4 ks Ljava/security/KeyStore;
12 21 6 keystore Lio/vertx/core/buffer/Buffer;
14 17 9 in Ljava/io/InputStream;
27 28 5 key Lio/vertx/ext/auth/impl/jose/JWK;
30 41 4 keys Ljava/util/List<Lio/vertx/ext/auth/PubSecKeyOptions;>;
33 34 5 pubSecKey Lio/vertx/ext/auth/PubSecKeyOptions;
36 41 5 jwks Ljava/util/List<Lio/vertx/core/json/JsonObject;>;
39 40 6 jwk Lio/vertx/core/json/JsonObject;
43 44 4 e Ljava/lang/Exception;
Exception table:
from to target type
14 15 16 any
13 18 18 any
11 22 23 any
23 24 23 any
5 41 42 Class java.security.KeyStoreException
5 41 42 Class java.io.IOException
5 41 42 Class io.vertx.core.file.FileSystemException
5 41 42 Class java.security.cert.CertificateException
5 41 42 Class java.security.NoSuchAlgorithmException
5 41 42 Class java.security.NoSuchProviderException
MethodParameters:
Name Flags
vertx
config
public void authenticate(io.vertx.core.json.JsonObject, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.User>>);
descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
new io.vertx.ext.auth.authentication.TokenCredentials
dup
aload 1
ldc "jwt"
invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial io.vertx.ext.auth.authentication.TokenCredentials.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.authenticate:(Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
0 2 1 authInfo Lio/vertx/core/json/JsonObject;
0 2 2 resultHandler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;
Signature: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;)V
MethodParameters:
Name Flags
authInfo
resultHandler
public void authenticate(io.vertx.ext.auth.authentication.Credentials, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.ext.auth.User>>);
descriptor: (Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
checkcast io.vertx.ext.auth.authentication.TokenCredentials
astore 3
start local 3 1: aload 3
aconst_null
invokevirtual io.vertx.ext.auth.authentication.TokenCredentials.checkValid:(Ljava/lang/Object;)V
2: aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
aload 3
invokevirtual io.vertx.ext.auth.authentication.TokenCredentials.getToken:()Ljava/lang/String;
invokevirtual io.vertx.ext.auth.impl.jose.JWT.decode:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
astore 4
start local 4 3: aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
ifnull 11
4: aload 4
ldc "aud"
invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
instanceof java.lang.String
ifeq 7
5: new io.vertx.core.json.JsonArray
dup
invokespecial io.vertx.core.json.JsonArray.<init>:()V
aload 4
ldc "aud"
ldc ""
invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual io.vertx.core.json.JsonArray.add:(Ljava/lang/Object;)Lio/vertx/core/json/JsonArray;
astore 5
start local 5 6: goto 8
end local 5 7: StackMap locals: io.vertx.ext.auth.authentication.TokenCredentials io.vertx.core.json.JsonObject
StackMap stack:
aload 4
ldc "aud"
getstatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.EMPTY_ARRAY:Lio/vertx/core/json/JsonArray;
invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;Lio/vertx/core/json/JsonArray;)Lio/vertx/core/json/JsonArray;
astore 5
start local 5 8: StackMap locals: io.vertx.core.json.JsonArray
StackMap stack:
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
aload 5
invokevirtual io.vertx.core.json.JsonArray.getList:()Ljava/util/List;
invokestatic java.util.Collections.disjoint:(Ljava/util/Collection;Ljava/util/Collection;)Z
ifeq 11
9: aload 2
new java.lang.StringBuilder
dup
ldc "Invalid JWT audience. expected: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
invokestatic io.vertx.core.json.Json.encode:(Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
10: return
end local 5 11: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
invokevirtual io.vertx.ext.auth.JWTOptions.getIssuer:()Ljava/lang/String;
ifnull 15
12: aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
invokevirtual io.vertx.ext.auth.JWTOptions.getIssuer:()Ljava/lang/String;
aload 4
ldc "iss"
invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 15
13: aload 2
ldc "Invalid JWT issuer"
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
14: return
15: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
aload 4
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
invokevirtual io.vertx.ext.auth.impl.jose.JWT.isScopeGranted:(Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Z
ifne 18
16: aload 2
ldc "Invalid JWT token: missing required scopes."
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
17: return
18: StackMap locals:
StackMap stack:
aload 0
aload 3
invokevirtual io.vertx.ext.auth.authentication.TokenCredentials.getToken:()Ljava/lang/String;
aload 4
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.permissionsClaimKey:Ljava/lang/String;
invokevirtual io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.createUser:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/ext/auth/User;
astore 5
start local 5 19: aload 5
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
invokevirtual io.vertx.ext.auth.JWTOptions.getLeeway:()I
invokeinterface io.vertx.ext.auth.User.expired:(I)Z
ifeq 23
20: aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwtOptions:Lio/vertx/ext/auth/JWTOptions;
invokevirtual io.vertx.ext.auth.JWTOptions.isIgnoreExpiration:()Z
ifne 23
21: aload 2
ldc "Invalid JWT token: missing required scopes."
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
22: return
23: StackMap locals: io.vertx.ext.auth.User
StackMap stack:
aload 2
aload 5
invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
end local 5 end local 4 end local 3 24: goto 27
StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl io.vertx.ext.auth.authentication.Credentials io.vertx.core.Handler
StackMap stack: java.lang.RuntimeException
25: astore 3
start local 3 26: aload 2
aload 3
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
end local 3 27: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
0 28 1 credentials Lio/vertx/ext/auth/authentication/Credentials;
0 28 2 resultHandler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;
1 24 3 authInfo Lio/vertx/ext/auth/authentication/TokenCredentials;
3 24 4 payload Lio/vertx/core/json/JsonObject;
6 7 5 target Lio/vertx/core/json/JsonArray;
8 11 5 target Lio/vertx/core/json/JsonArray;
19 24 5 user Lio/vertx/ext/auth/User;
26 27 3 e Ljava/lang/RuntimeException;
Exception table:
from to target type
0 10 25 Class java.lang.RuntimeException
11 14 25 Class java.lang.RuntimeException
15 17 25 Class java.lang.RuntimeException
18 22 25 Class java.lang.RuntimeException
23 24 25 Class java.lang.RuntimeException
Signature: (Lio/vertx/ext/auth/authentication/Credentials;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/ext/auth/User;>;>;)V
MethodParameters:
Name Flags
credentials
resultHandler
public java.lang.String generateToken(io.vertx.core.json.JsonObject, io.vertx.ext.auth.JWTOptions);
descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual io.vertx.core.json.JsonObject.copy:()Lio/vertx/core/json/JsonObject;
astore 3
start local 3 1: aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getPermissions:()Ljava/util/List;
ifnull 3
aload 3
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.permissionsClaimKey:Ljava/lang/String;
invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
ifne 3
2: aload 3
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.permissionsClaimKey:Ljava/lang/String;
new io.vertx.core.json.JsonArray
dup
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getPermissions:()Ljava/util/List;
invokespecial io.vertx.core.json.JsonArray.<init>:(Ljava/util/List;)V
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
3: StackMap locals: io.vertx.core.json.JsonObject
StackMap stack:
aload 0
getfield io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.jwt:Lio/vertx/ext/auth/impl/jose/JWT;
aload 3
aload 2
invokevirtual io.vertx.ext.auth.impl.jose.JWT.sign:(Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Ljava/lang/String;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
0 4 1 claims Lio/vertx/core/json/JsonObject;
0 4 2 options Lio/vertx/ext/auth/JWTOptions;
1 4 3 _claims Lio/vertx/core/json/JsonObject;
MethodParameters:
Name Flags
claims
options final
private static io.vertx.core.json.JsonArray getJsonPermissions(io.vertx.core.json.JsonObject, java.lang.String);
descriptor: (Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "/"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 2
1: aload 0
aload 1
invokestatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.getNestedJsonValue:(Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
areturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
aconst_null
invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;Lio/vertx/core/json/JsonArray;)Lio/vertx/core/json/JsonArray;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 jwtToken Lio/vertx/core/json/JsonObject;
0 3 1 permissionsClaimKey Ljava/lang/String;
MethodParameters:
Name Flags
jwtToken
permissionsClaimKey
private io.vertx.ext.auth.User createUser(java.lang.String, io.vertx.core.json.JsonObject, java.lang.String);
descriptor: (Ljava/lang/String;Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/ext/auth/User;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokestatic io.vertx.ext.auth.User.fromToken:(Ljava/lang/String;)Lio/vertx/ext/auth/User;
astore 4
start local 4 1: aload 4
invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
2: ldc "accessToken"
aload 2
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
3: aload 2
aload 4
invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
iconst_4
anewarray java.lang.String
dup
iconst_0
ldc "exp"
aastore
dup
iconst_1
ldc "iat"
aastore
dup
iconst_2
ldc "nbf"
aastore
dup
iconst_3
ldc "sub"
aastore
invokestatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.copyProperties:(Lio/vertx/core/json/JsonObject;Lio/vertx/core/json/JsonObject;[Ljava/lang/String;)V
4: aload 2
invokevirtual io.vertx.core.json.JsonObject.fieldNames:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 6
goto 8
StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl java.lang.String io.vertx.core.json.JsonObject java.lang.String io.vertx.ext.auth.User top java.util.Iterator
StackMap stack:
5: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 5
start local 5 6: getstatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.SPECIAL_KEYS:Ljava/util/Collection;
aload 5
invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
ifne 8
7: aload 4
invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
aload 5
aload 2
aload 5
invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
end local 5 8: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
9: aload 4
invokeinterface io.vertx.ext.auth.User.attributes:()Lio/vertx/core/json/JsonObject;
10: ldc "rootClaim"
ldc "accessToken"
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
11: aload 2
aload 3
invokestatic io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.getJsonPermissions:(Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
astore 5
start local 5 12: aload 5
ifnull 19
13: aload 5
invokevirtual io.vertx.core.json.JsonArray.iterator:()Ljava/util/Iterator;
astore 7
goto 18
StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl java.lang.String io.vertx.core.json.JsonObject java.lang.String io.vertx.ext.auth.User io.vertx.core.json.JsonArray top java.util.Iterator
StackMap stack:
14: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
astore 6
start local 6 15: aload 6
instanceof java.lang.String
ifeq 18
16: aload 6
checkcast java.lang.String
astore 8
start local 8 17: aload 4
invokeinterface io.vertx.ext.auth.User.authorizations:()Lio/vertx/ext/auth/authorization/Authorizations;
ldc "jwt-authentication"
aload 8
invokestatic io.vertx.ext.auth.authorization.PermissionBasedAuthorization.create:(Ljava/lang/String;)Lio/vertx/ext/auth/authorization/PermissionBasedAuthorization;
invokeinterface io.vertx.ext.auth.authorization.Authorizations.add:(Ljava/lang/String;Lio/vertx/ext/auth/authorization/Authorization;)Lio/vertx/ext/auth/authorization/Authorizations;
pop
end local 8 end local 6 18: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
19: StackMap locals: io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl java.lang.String io.vertx.core.json.JsonObject java.lang.String io.vertx.ext.auth.User io.vertx.core.json.JsonArray
StackMap stack:
aload 4
areturn
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 20 0 this Lio/vertx/ext/auth/jwt/impl/JWTAuthProviderImpl;
0 20 1 accessToken Ljava/lang/String;
0 20 2 jwtToken Lio/vertx/core/json/JsonObject;
0 20 3 permissionsClaimKey Ljava/lang/String;
1 20 4 result Lio/vertx/ext/auth/User;
6 8 5 key Ljava/lang/String;
12 20 5 jsonPermissions Lio/vertx/core/json/JsonArray;
15 18 6 item Ljava/lang/Object;
17 18 8 permission Ljava/lang/String;
RuntimeVisibleAnnotations:
java.lang.Deprecated()
MethodParameters:
Name Flags
accessToken
jwtToken
permissionsClaimKey
private static void copyProperties(io.vertx.core.json.JsonObject, io.vertx.core.json.JsonObject, java.lang.String[]);
descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/core/json/JsonObject;[Ljava/lang/String;)V
flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
ifnull 7
aload 1
ifnull 7
1: aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 6
StackMap locals: io.vertx.core.json.JsonObject io.vertx.core.json.JsonObject java.lang.String[] top int int java.lang.String[]
StackMap stack:
2: aload 6
iload 4
aaload
astore 3
start local 3 3: aload 0
aload 3
invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
ifeq 5
aload 1
aload 3
invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
ifne 5
4: aload 1
aload 3
aload 0
aload 3
invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
end local 3 5: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
6: iload 4
iload 5
if_icmplt 2
7: StackMap locals: io.vertx.core.json.JsonObject io.vertx.core.json.JsonObject java.lang.String[]
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 source Lio/vertx/core/json/JsonObject;
0 8 1 target Lio/vertx/core/json/JsonObject;
0 8 2 keys [Ljava/lang/String;
3 5 3 key Ljava/lang/String;
MethodParameters:
Name Flags
source
target
keys
private static io.vertx.core.json.JsonArray getNestedJsonValue(io.vertx.core.json.JsonObject, java.lang.String);
descriptor: (Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 1
ldc "/"
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
astore 2
start local 2 1: aconst_null
astore 3
start local 3 2: iconst_0
istore 4
start local 4 3: goto 13
4: StackMap locals: java.lang.String[] io.vertx.core.json.JsonObject int
StackMap stack:
iload 4
ifne 7
5: aload 0
aload 2
iload 4
aaload
invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
astore 3
6: goto 12
StackMap locals:
StackMap stack:
7: iload 4
aload 2
arraylength
iconst_1
isub
if_icmpne 10
8: aload 3
ifnull 12
9: aload 3
aload 2
iload 4
aaload
invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
areturn
10: StackMap locals:
StackMap stack:
aload 3
ifnull 12
11: aload 3
aload 2
iload 4
aaload
invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
astore 3
12: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
13: iload 4
aload 2
arraylength
if_icmplt 4
end local 4 14: aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 jwtToken Lio/vertx/core/json/JsonObject;
0 15 1 permissionsClaimKey Ljava/lang/String;
1 15 2 keys [Ljava/lang/String;
2 15 3 obj Lio/vertx/core/json/JsonObject;
3 14 4 i I
MethodParameters:
Name Flags
jwtToken
permissionsClaimKey
}
SourceFile: "JWTAuthProviderImpl.java"