backend-api поправил стук при анонимном заходе

This commit is contained in:
AKurakin 2023-07-13 14:52:38 +03:00
parent 7612126b9e
commit d9e0a4ada2

View file

@ -3,15 +3,23 @@ package ru.spcex.clearing.backendapi.security;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.adapters.spi.KeycloakAccount;
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;;
import org.springframework.security.core.Authentication;
public class KeycloakUtils {
static Logger log = LoggerFactory.getLogger(KeycloakUtils.class);
/**
* Достать username из Keycloak имплементации Authentication
*/
public static String getUserNameFromAuthentication(Authentication authentication) {
if (authentication == null) return null;
if (!(authentication instanceof KeycloakAuthenticationToken)) { // AnonymousAuthenticationToken
log.trace("Authentication token class {} is not KeycloakAuthenticationToken", authentication.getClass().getName());
return null;
}
KeycloakAuthenticationToken auth = (KeycloakAuthenticationToken) authentication;
if (auth == null) return null;
KeycloakAccount details = (KeycloakAccount) auth.getDetails();
return ((KeycloakPrincipal) details.getPrincipal())
.getKeycloakSecurityContext()