Keycloak 问题无法在仅承载模式下交换代码以获得授权
Posted
技术标签:
【中文标题】Keycloak 问题无法在仅承载模式下交换代码以获得授权【英文标题】:Keycloak issue Cannot exchange code for grant in bearer-only mode 【发布时间】:2022-01-04 17:50:10 【问题描述】:我是 keycloak 的新手,正在尝试使用 keycloak 设置基于角色的身份验证 使用Nodejs,但每次我使用领域中确实存在的正确用户名和密码登录时,我都会遇到此仅持有人授权问题。我已经尝试了所有解决方案,甚至检查了 Keycloak 上的访问类型是否为 Bearer-only 但不是机密尝试将 Bearer-only 设置为 true 和 false 但对我没有任何效果
"realm": "realm_name",
"auth-server-url": "Keycloak_auth_url",
"ssl-required": "none",
"resource": "resource",
"verify-token-audience": false,
"public-client":true,
"grant_type":"password",
"credentials":
"secret": secret_credentials
,
"confidential-port": 0,
"policy-enforcer": ,
"scope":"openid"
这是我的 keycloak.json 文件
app.get("/", keycloak.protect(), function (req, res)
console.log(req)
) 这是我保护路线的简单功能
【问题讨论】:
【参考方案1】:您将客户端配置为使用密码授予,它不使用身份验证代码。使用此授权,客户端通过将其客户端凭据与资源所有者凭据一起发布到授权服务器来获取访问令牌和可选的刷新令牌。
根据您的客户的应用类型,选择相应的授权类型。
尽管如此,根本不应该使用密码授权,OAuth 2.0 当前最佳实践的最新更新表明。见https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics-18
【讨论】:
以上是关于Keycloak 问题无法在仅承载模式下交换代码以获得授权的主要内容,如果未能解决你的问题,请参考以下文章
Keycloak 注销不适用于公开 REST 服务的“仅承载”应用程序
(Xamarin iOS):ExecutionEngineException - 在仅 aot 模式下运行时尝试 JIT 编译方法