我正在尝试使用keycloak执行授权操作。我的安全配置类工作正常,我成功地通过jwt令牌创建了身份验证,并执行了必要的角色Map。这可以通过安全上下文保持器清楚地看到。
我使用的是preauthorize注解,因为其中的权限为空,未提供授权,我得到403。
我还是不明白这怎么可能,你能帮忙吗?
vlf7wbxs1#
经过长时间的挣扎,我找到了解决办法。
@Override protected KeycloakAuthenticationProvider keycloakAuthenticationProvider() { return new KeycloakAuthenticationProvider() { @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { KeycloakAuthenticationToken token = (KeycloakAuthenticationToken) authentication; List<GrantedAuthority> grantedAuthorities = new ArrayList<>(); for (String role : ((KeycloakPrincipal) token.getPrincipal()).getKeycloakSecurityContext().getToken().getRealmAccess().getRoles()) { grantedAuthorities.add(new KeycloakRole(role)); } return new KeycloakAuthenticationToken(token.getAccount(), token.isInteractive(), new SimpleAuthorityMapper().mapAuthorities(grantedAuthorities)); } }; }
我们可以通过在Security配置类中使用以下方法将角色设置为KeycloakAuthenticationToken来实现解决方案。
1条答案
按热度按时间vlf7wbxs1#
经过长时间的挣扎,我找到了解决办法。
我们可以通过在Security配置类中使用以下方法将角色设置为KeycloakAuthenticationToken来实现解决方案。