public class io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl implements io.vertx.ext.auth.oauth2.OAuth2RBAC
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl
super_class: java.lang.Object
{
private static final io.vertx.core.json.JsonObject EMPTY_JSON;
descriptor: Lio/vertx/core/json/JsonObject;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
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.oauth2.OAuth2Options options;
descriptor: Lio/vertx/ext/auth/oauth2/OAuth2Options;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new io.vertx.core.json.JsonObject
dup
getstatic java.util.Collections.EMPTY_MAP:Ljava/util/Map;
invokespecial io.vertx.core.json.JsonObject.<init>:(Ljava/util/Map;)V
putstatic io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.EMPTY_JSON:Lio/vertx/core/json/JsonObject;
1: new io.vertx.core.json.JsonArray
dup
getstatic java.util.Collections.EMPTY_LIST:Ljava/util/List;
invokespecial io.vertx.core.json.JsonArray.<init>:(Ljava/util/List;)V
putstatic io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.EMPTY_ARRAY:Lio/vertx/core/json/JsonArray;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(io.vertx.ext.auth.oauth2.OAuth2Options);
descriptor: (Lio/vertx/ext/auth/oauth2/OAuth2Options;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 1
ifnonnull 3
2: new java.lang.IllegalArgumentException
dup
ldc "options is a required argument"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl io.vertx.ext.auth.oauth2.OAuth2Options
StackMap stack:
aload 0
aload 1
putfield io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.options:Lio/vertx/ext/auth/oauth2/OAuth2Options;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/vertx/ext/auth/oauth2/rbac/impl/KeycloakRBACImpl;
0 5 1 options Lio/vertx/ext/auth/oauth2/OAuth2Options;
MethodParameters:
Name Flags
options
public void isAuthorized(io.vertx.ext.auth.oauth2.AccessToken, java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Boolean>>);
descriptor: (Lio/vertx/ext/auth/oauth2/AccessToken;Ljava/lang/String;Lio/vertx/core/Handler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokeinterface io.vertx.ext.auth.oauth2.AccessToken.accessToken:()Lio/vertx/core/json/JsonObject;
astore 4
start local 4 1: aload 4
ifnonnull 4
2: aload 3
ldc "AccessToken is not a valid JWT"
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/String;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
3: return
4: StackMap locals: io.vertx.core.json.JsonObject
StackMap stack:
aload 2
ldc ":"
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
astore 5
start local 5 5: aload 5
arraylength
iconst_1
if_icmpne 8
6: aload 3
aload 0
aload 4
aload 0
getfield io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.options:Lio/vertx/ext/auth/oauth2/OAuth2Options;
invokevirtual io.vertx.ext.auth.oauth2.OAuth2Options.getClientID:()Ljava/lang/String;
aload 5
iconst_0
aaload
invokevirtual io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.hasApplicationRole:(Lio/vertx/core/json/JsonObject;Ljava/lang/String;Ljava/lang/String;)Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
7: return
8: StackMap locals: java.lang.String[]
StackMap stack:
ldc "realm"
aload 5
iconst_0
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 11
9: aload 3
aload 0
aload 4
aload 5
iconst_1
aaload
invokevirtual io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.hasRealmRole:(Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
10: return
11: StackMap locals:
StackMap stack:
aload 3
aload 0
aload 4
aload 5
iconst_0
aaload
aload 5
iconst_1
aaload
invokevirtual io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.hasApplicationRole:(Lio/vertx/core/json/JsonObject;Ljava/lang/String;Ljava/lang/String;)Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
12: return
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 13 0 this Lio/vertx/ext/auth/oauth2/rbac/impl/KeycloakRBACImpl;
0 13 1 user Lio/vertx/ext/auth/oauth2/AccessToken;
0 13 2 authority Ljava/lang/String;
0 13 3 handler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Boolean;>;>;
1 13 4 accessToken Lio/vertx/core/json/JsonObject;
5 13 5 parts [Ljava/lang/String;
Signature: (Lio/vertx/ext/auth/oauth2/AccessToken;Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Boolean;>;>;)V
MethodParameters:
Name Flags
user
authority
handler
private boolean hasApplicationRole(io.vertx.core.json.JsonObject, java.lang.String, java.lang.String);
descriptor: (Lio/vertx/core/json/JsonObject;Ljava/lang/String;Ljava/lang/String;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
3: ldc "resource_access"
getstatic io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.EMPTY_JSON:Lio/vertx/core/json/JsonObject;
invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)Lio/vertx/core/json/JsonObject;
4: aload 2
invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
5: astore 4
start local 4 6: aload 4
ifnonnull 8
7: iconst_0
ireturn
8: StackMap locals: io.vertx.core.json.JsonObject
StackMap stack:
aload 4
9: ldc "roles"
getstatic io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.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;
10: aload 3
invokevirtual io.vertx.core.json.JsonArray.contains:(Ljava/lang/Object;)Z
11: ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lio/vertx/ext/auth/oauth2/rbac/impl/KeycloakRBACImpl;
0 12 1 accessToken Lio/vertx/core/json/JsonObject;
0 12 2 appName Ljava/lang/String;
0 12 3 roleName Ljava/lang/String;
6 12 4 appRoles Lio/vertx/core/json/JsonObject;
MethodParameters:
Name Flags
accessToken
appName
roleName
private boolean hasRealmRole(io.vertx.core.json.JsonObject, java.lang.String);
descriptor: (Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
3: ldc "realm_access"
getstatic io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.EMPTY_JSON:Lio/vertx/core/json/JsonObject;
invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)Lio/vertx/core/json/JsonObject;
4: ldc "roles"
getstatic io.vertx.ext.auth.oauth2.rbac.impl.KeycloakRBACImpl.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;
5: aload 2
invokevirtual io.vertx.core.json.JsonArray.contains:(Ljava/lang/Object;)Z
6: ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/vertx/ext/auth/oauth2/rbac/impl/KeycloakRBACImpl;
0 7 1 accessToken Lio/vertx/core/json/JsonObject;
0 7 2 roleName Ljava/lang/String;
MethodParameters:
Name Flags
accessToken
roleName
}
SourceFile: "KeycloakRBACImpl.java"