public class org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak extends java.lang.Object implements org.apache.isis.core.security.authentication.logout.LogoutHandler
{
private static final org.slf4j.Logger log;
private final org.springframework.web.client.RestTemplate restTemplate;
public void <init>()
{
org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak v;
org.springframework.web.client.RestTemplate v;
v := @this: org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak;
v = new org.springframework.web.client.RestTemplate;
specialinvoke v.<org.springframework.web.client.RestTemplate: void <init>()>();
specialinvoke v.<org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak: void <init>(org.springframework.web.client.RestTemplate)>(v);
return;
}
public void logout()
{
org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak v;
org.springframework.security.core.context.SecurityContext v;
java.lang.Object v;
org.springframework.security.core.Authentication v;
v := @this: org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak;
v = staticinvoke <org.springframework.security.core.context.SecurityContextHolder: org.springframework.security.core.context.SecurityContext getContext()>();
v = interfaceinvoke v.<org.springframework.security.core.context.SecurityContext: org.springframework.security.core.Authentication getAuthentication()>();
if v == null goto label;
v = interfaceinvoke v.<org.springframework.security.core.Authentication: java.lang.Object getPrincipal()>();
specialinvoke v.<org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak: void propagateLogoutToKeycloak(org.springframework.security.oauth.core.oidc.user.OidcUser)>(v);
label:
return;
}
private void propagateLogoutToKeycloak(org.springframework.security.oauth.core.oidc.user.OidcUser)
{
org.springframework.web.util.UriComponentsBuilder v, v;
org.springframework.security.oauth.core.oidc.user.OidcUser v;
java.lang.Object[] v, v, v;
java.net.URL v;
org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak v;
java.lang.String v, v, v;
org.springframework.web.client.RestTemplate v;
boolean v;
org.springframework.security.oauth.core.oidc.OidcIdToken v;
org.slf4j.Logger v, v;
org.springframework.http.HttpStatus v;
org.springframework.http.ResponseEntity v;
v := @this: org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak;
v := @parameter: org.springframework.security.oauth.core.oidc.user.OidcUser;
v = newarray (java.lang.Object)[1];
v = interfaceinvoke v.<org.springframework.security.oauth.core.oidc.user.OidcUser: java.net.URL getIssuer()>();
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("%s/protocol/openid-connect/logout", v);
v = staticinvoke <org.springframework.web.util.UriComponentsBuilder: org.springframework.web.util.UriComponentsBuilder fromUriString(java.lang.String)>(v);
v = newarray (java.lang.Object)[1];
v = interfaceinvoke v.<org.springframework.security.oauth.core.oidc.user.OidcUser: org.springframework.security.oauth.core.oidc.OidcIdToken getIdToken()>();
v = virtualinvoke v.<org.springframework.security.oauth.core.oidc.OidcIdToken: java.lang.String getTokenValue()>();
v[0] = v;
v = virtualinvoke v.<org.springframework.web.util.UriComponentsBuilder: org.springframework.web.util.UriComponentsBuilder queryParam(java.lang.String,java.lang.Object[])>("id_token_hint", v);
v = v.<org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak: org.springframework.web.client.RestTemplate restTemplate>;
v = virtualinvoke v.<org.springframework.web.util.UriComponentsBuilder: java.lang.String toUriString()>();
v = newarray (java.lang.Object)[0];
v = virtualinvoke v.<org.springframework.web.client.RestTemplate: org.springframework.http.ResponseEntity getForEntity(java.lang.String,java.lang.Class,java.lang.Object[])>(v, class "Ljava/lang/String;", v);
v = virtualinvoke v.<org.springframework.http.ResponseEntity: org.springframework.http.HttpStatus getStatusCode()>();
v = virtualinvoke v.<org.springframework.http.HttpStatus: boolean is2xxSuccessful()>();
if v == 0 goto label;
v = <org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Successfully logged out in Keycloak");
goto label;
label:
v = <org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Could not propagate logout to Keycloak");
label:
return;
}
public boolean isHandlingCurrentThread()
{
org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak v;
v := @this: org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak;
return 1;
}
public void <init>(org.springframework.web.client.RestTemplate)
{
org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak v;
org.springframework.web.client.RestTemplate v;
v := @this: org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak;
v := @parameter: org.springframework.web.client.RestTemplate;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak: org.springframework.web.client.RestTemplate restTemplate> = v;
return;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/isis/security/keycloak/handler/LogoutHandlerForKeycloak;");
<org.apache.isis.security.keycloak.handler.LogoutHandlerForKeycloak: org.slf4j.Logger log> = v;
return;
}
}