keycloak - KEYCLOAK:请求中未提供客户端密码
问题描述
keycloak js 版本 -> ^10.0.2
角度 -> ^7.2.16
密钥斗篷.json
{
"realm": "REALM",
"auth-server-url": "<auth-url>/auth/",
"ssl-required": "external",
"resource": "CLIENT_ID",
"verify-token-audience": true,
"credentials": {
"secret": "CLIENT_SECRET_KEY"
},
"use-resource-role-mappings": true,
"confidential-port": 0,
"policy-enforcer": {}
}
像这样在init中使用
const keycloakAuth = Keycloak('keycloak.json');
keycloakAuth.init({ onLoad: 'login-required', checkLoginIframe: false })
当 keycloak 进行此调用时,<auth-url>/auth/realms/guavus/protocol/openid-connect/token
而不是给出此错误。
{"error":"unauthorized_client","error_description":"请求中未提供客户端密码"}
根据文档从 javascript 适配器中删除了凭据支持
比这个的替代方法是什么以及如何解决这个错误?
解决方案
如果这是一个 Angular 单页应用程序 (SPA),您应该根据 Keycloak 文档使用公共客户端(不会使用客户端密码):
“关于使用客户端应用程序需要注意的重要一点是,客户端必须是公共客户端,因为没有安全的方法将客户端凭据存储在客户端应用程序中。” https://www.keycloak.org/docs/latest/securing_apps/#_javascript_adapter
推荐阅读
- scip - SCIP:孩子vs父母vs兄弟姐妹
- typescript - 条件类型和在 typescript 中推断以减少 redux 样板
- java - 基于spring配置文件导入bean资源
- swift - 如何断言结构符合协议?
- python - 如何使用 BrowserStack Appium 和 Python 创建移动自动化应用程序测试?
- python-3.x - 获取在消息上添加表情符号的用户列表
- scheduling - 活动运行的 iCalendar 重复规则:每两周,周一和周三,活动一天内的每 30 分钟?
- php - PHP - 从连接数组中删除键
- reactjs - 以用户身份从前端下载图像(我有链接)?
- go - 当 NextDecoder 依赖于上一层而不是当前层时,如何正确编写自定义层?