簡體   English   中英

如何使用 Keycloak 在 Spring 引導中獲取當前登錄用戶?

[英]How to get the current logged in user in Spring Boot with Keycloak?

我使用 Keycloak 在 Spring Boot 中保護了一個應用程序,我正在嘗試獲取當前登錄用戶的名稱。

按照這個問題的答案,我嘗試了:

public Optional<String> getCurrentUserLogin() {

    SecurityContext securityContext = SecurityContextHolder.getContext();

    return Optional.ofNullable(securityContext.getAuthentication())
            .map(authentication -> {

                if (authentication.getPrincipal() instanceof KeycloakPrincipal) {
                    KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>)  authentication.getPrincipal();
                            return kp.getKeycloakSecurityContext().getIdToken().getPreferredUsername();
                } 
                return null;
            });
}

但沒有運氣。 它給了我一個關於未經檢查的演員的警告,但它不起作用!

如何讓用戶使用 Keycloak 登錄?

僅使用 class KeycloakPrincipal ,給出警告

參數化 class 'KeycloakPrincipal' 的原始使用

但它有效!

[...]
if (authentication.getPrincipal() instanceof KeycloakPrincipal) {
    KeycloakPrincipal principal = (KeycloakPrincipal) authentication.getPrincipal();
    return principal.getName();
[...]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM