代表客户端验证密钥斗篷不记名令牌
Posted
技术标签:
【中文标题】代表客户端验证密钥斗篷不记名令牌【英文标题】:Validating keycloak bearer token on behalf of client 【发布时间】:2021-03-07 09:09:20 【问题描述】:我想验证从浏览器应用程序传递的 API 中的不记名令牌。 API 将通过调用 ../userinfo 端点来针对 Keycloak 验证令牌,并在检查运行正常时以所需的内容进行响应。问题是,如果我从浏览器或任何其他应用程序(例如邮递员)传递一个不记名令牌到 api 并尝试验证它 - 我得到“401 令牌验证失败”。
以下作品:
-
使用用户名和密码通过 Postman 从 Keycloak 获取令牌。
使用生成的不记名令牌通过 Postman 从 Keycloak 获取用户信息。
或
-
使用用户名和密码直接从 API 从 Keycloak 获取令牌。
使用生成的不记名令牌从 API 中的 Keycloak 获取用户信息。
以下操作无效:
-
使用用户名和密码通过 Postman 从 Keycloak 获取令牌。
向 API 发送请求,在 docker 容器中运行,包含不记名令牌。
API 尝试使用令牌获取用户信息 =“401 令牌验证失败”
在所有场景中使用相同的 client_id 和 client_secret。
这是一个 docker 网络吗?或者是否需要一些 Keycloak 配置才能让 API “代表”客户端验证令牌?对授权流程来说相当陌生。
【问题讨论】:
【参考方案1】:想通了:我在不同的 url 上调用 Keycloak,来自 postman 的 localhost:8080 和来自 Docker 中运行的 api 的 host.docker.internal:8080。原来你必须从两端调用相同的 URL 的 Keycloak。在这两种情况下,我都切换到使用我的机器的 ip,瞧!
【讨论】:
这个人你是怎么做到的?以上是关于代表客户端验证密钥斗篷不记名令牌的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:无需基本身份验证即可创建用于访问的不记名令牌
修改 OWIN OAuth 中间件以使用 JWT 不记名令牌