Keycloak public vs 机密客户端

Keycloak public vs confidental client

我有一个前端和后端应用程序(angular + spring 启动)。前端作为静态 Web 内容提供服务,然后将 REST 调用发送到同一端口上的后端 API。

采用OpenID协议的Keycloak用于用户身份验证和角色管理。根据需要身份验证的请求,浏览器被重定向到 Keycloak,用户提供用户名和密码,然后用户角色返回到写入访问令牌的浏览器。

稍后前端在每个请求中发送此访问令牌,后端在完成请求之前根据 Keycloaks public 密钥检查令牌签名。

目前它在 Keycloak 中与一个 public 客户端一起工作正常。但我必须切换到机密客户端。

这怎么可能?我的理解是机密申请需要token请求中的client secret,不能发给浏览器...因为是secret。

有人可以解释一下吗?

您通常倾向于转向 BFF 模式以更好地保护您的 SPA 应用程序,这样您就不必直接在 SPA 应用程序中处理令牌。

请在此处阅读有关 SPA 模式的更多信息:

The BFF Pattern (Backend for Frontend): An Introduction

这个视频也很好地介绍了您必须做的事情:

alert‘OAuth 2 0’; // The impact of XSS on OAuth 2 0 in SPAs