SecurityActorIdResolver.java

package com.project.auth.config.auth.security;

import com.project.auth.application.support.logging.LogSanitizer;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;

import java.security.Principal;

public class SecurityActorIdResolver {

    private static final String ANONYMOUS_PRINCIPAL = "anonymous";

    public String resolve(HttpServletRequest request) {
        Principal principal = request.getUserPrincipal();
        if (principal != null) {
            return LogSanitizer.actorId(principal.getName());
        }

        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if (authentication != null
                && authentication.isAuthenticated()
                && !(authentication instanceof AnonymousAuthenticationToken)) {
            return LogSanitizer.actorId(authentication.getName());
        }

        return LogSanitizer.actorId(ANONYMOUS_PRINCIPAL);
    }
}