如何使用 Spring Security 和 Keycloak OAuth2/OIDC 添加自定义 UserDetails 类

lat*_*ell 5 spring-security keycloak

我正在使用 SpringBoot org.keycloak:keycloak-spring-security-adapter:6.0.1,目前正在通过以下方式访问用户详细信息,例如“family_name”

String familyName = ((KeycloakAuthenticationToken)auth).account.keycloakSecurityContext.idToken.familyName
String employeeId = ((KeycloakAuthenticationToken)auth).account.keycloakSecurityContext.idToken.otherClaims["employeeId"]
Run Code Online (Sandbox Code Playgroud)

现在我想要一个 CustomUser 类,以便我可以通过更优雅的方式访问所有属性(OIDC 以及一些自定义声明)

 CustomUser u = ((CustomUser) auth).details
 String employeeId = u.employeeId
Run Code Online (Sandbox Code Playgroud)

我应该把映射放在哪里CustomUser?类UserDetailsMapper在这里不起作用,或者?应该AuthenticationProvider.authenticate()通过设置来完成吗authentication.details = <some subclass of KeycloakAccount>