Keycloak 公开与机密客户
Posted
技术标签:
【中文标题】Keycloak 公开与机密客户【英文标题】:Keycloak public vs confidental client 【发布时间】:2022-01-16 23:35:06 【问题描述】:我有一个前端和后端应用程序(angular + spring boot)。前端作为静态 Web 内容提供,然后将 REST 调用发送到同一端口上的后端 API。
使用 OpenID 协议的 Keycloak 用于用户身份验证和角色管理。根据需要身份验证的请求,浏览器将重定向到 Keycloak,用户提供用户名和密码,然后将用户角色返回给写入访问令牌的浏览器。
稍后前端会随每个请求发送此访问令牌,后端会在完成请求之前根据 Keycloaks 公钥检查令牌签名。
目前它可以在 Keycloak 中与一个公共客户端正常工作。但我需要切换到机密客户端。
这怎么可能?我的理解是,机密应用程序需要在令牌请求中提供客户端机密,不能将其发送到浏览器...因为它是机密的。
谁能解释一下?
【问题讨论】:
【参考方案1】:您通常倾向于转向 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
【讨论】:
以上是关于Keycloak 公开与机密客户的主要内容,如果未能解决你的问题,请参考以下文章
为啥机密和公共客户端需要应用程序来处理 spring/keycloak 适配器中的会话?