class CustomReactiveAuthorizationServiceIntrospector implements ReactiveOpaqueTokenIntrospector {
    @Override
    public Mono<OAuth2AuthenticatedPrincipal> introspect(String accessTokenValue) {
        return Mono.just(accessTokenValue)
                .map(AuthUtils::checkAccessTokenToAuth)
                .map(this::convertClaimsSet)
                .onErrorMap((e) -> !(e instanceof OAuth2IntrospectionException), this::onError);
    }

    private OAuth2AuthenticatedPrincipal convertClaimsSet(OAuth2Authorization authorization) {<FILL_FUNCTION_BODY>}

    private OAuth2IntrospectionException onError(Throwable ex) {
        return new OAuth2IntrospectionException(ex.getMessage(), ex);
    }
}

        Map<String, Object> claims = new HashMap<>();
        Collection<GrantedAuthority> authorities = new ArrayList<>();

        claims.put(SecurityConstants.CLIENT_ID, authorization.getRegisteredClientId());
        claims.putAll(authorization.getAttributes());

        Authentication authentication = (Authentication)authorization.getAttributes().get(Principal.class.getName());
        if (authentication != null) {
            authorities.addAll(authentication.getAuthorities());
        }

        return new OAuth2IntrospectionAuthenticatedPrincipal(authorization.getPrincipalName(), claims, authorities);
    
<no_super_class>