代表客户端验证密钥斗篷不记名令牌

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 不记名令牌

如何在请求标头上调用需要不记名令牌的 NSwag 客户端方法?

Symfony 在哪里存储和获取不记名令牌并做出反应?

.Net Core 中的两因素身份验证 - 如何验证令牌