【问题标题】:Keycloak frontend and backend clientsKeycloak 前端和后端客户端
【发布时间】:2021-01-01 06:14:32
【问题描述】:

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

我该怎么做?

这是我的前端和后端配置

前端

{
   "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

this is from realm setting

【问题讨论】:

    标签: keycloak keycloak-rest-api


    【解决方案1】:

    这可能对某人有所帮助。 我的后端服务是带有 spring security keycloakAuthenticationProvider 的 springboot 项目,它确实验证了从前端公共客户端接收到的令牌。

    从前端调用

     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();
        }
    

    但我仍然无法在 keycloak 服务器提供的 ../token 端点上的邮递员上得到它。 反正我的工作已经完成了。

    【讨论】:

      猜你喜欢
      • 2019-10-26
      • 2017-11-28
      • 2018-08-12
      • 2020-11-05
      • 2019-04-06
      • 2017-06-02
      • 2023-02-04
      • 1970-01-01
      • 2019-04-05
      相关资源
      最近更新 更多