Keycloak KeyClope前端和后端客户端

Keycloak KeyClope前端和后端客户端,keycloak,keycloak-rest-api,Keycloak,Keycloak Rest Api,这与keydepate客户端有关。我的前端连接到公共客户端,后端连接到机密客户端。 我可以登录,获取代码,因为我通过打开“标准流启用”使用response_type=code。 此代码重定向并返回我Idtoken、refreshtoken和token。 现在我需要与后端通信,这是保密的,我想使用我从前端客户端收到的一些值来验证用户 我该怎么做 这是我的前端和后端配置 前端 { "realm": "xyz", "auth-server-

这与keydepate客户端有关。我的前端连接到公共客户端,后端连接到机密客户端。 我可以登录,获取代码,因为我通过打开“标准流启用”使用response_type=code。 此代码重定向并返回我Idtoken、refreshtoken和token。 现在我需要与后端通信,这是保密的,我想使用我从前端客户端收到的一些值来验证用户

我该怎么做

这是我的前端和后端配置

前端

{
   "realm": "xyz",
   "auth-server-url": "http://localhost:8333/auth/",
   "ssl-required": "external",
   "resource": "frontend-app",
   "public-client": true,
   "confidential-port": 0,
   "enable-cors": true
}
后端

keycloak.auth-server-url=http://localhost:8333/auth
keycloak.realm=xyz
keycloak.resource=backend-app
keycloak.principal-attribute=preferred_username
keycloak.bearer-only=true
keycloak.credentials.secret=xxx-xxx-xxx

这可能对某人有所帮助。 我的后端服务是springboot项目,带有spring security KeyDoppeAuthenticationProvider,它对从前端公共客户端接收的令牌进行身份验证

前端呼叫

 axios({
                    method: 'GET',
                    url: '/api/authenticate',
                    headers:{'Authorization': 'Bearer '+keycloak.token+''}

                }).then((r) => {
                    console.log("response",r)
                })
后端调用

@GetMapping("/api/authenticate")
    public ResponseEntity<SecureUserDto> authenticate() {
        String username = SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString();
        User user = userRepository.findWithPrivilegesByUsername(username);

        return ResponseEntity.ok();
    }
@GetMapping(“/api/authenticate”)
公共响应身份验证(){
字符串用户名=SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString();
User User=userRepository.findWithPrivilegesByUsername(用户名);
返回ResponseEntity.ok();
}
但我仍然无法在Key斗篷服务器提供的../token端点的邮递员上正确获取它。 不管怎样,我的工作已经完成了