将Keycloft配置为在id令牌中包含at_hash声明



我目前使用的是Keycloft 9.0.0。当使用代码流进行身份验证并交换此代码时,我收到了一个没有at_hash声明的id令牌。

如何配置Keycloft以在id令牌中包含at_hash声明?

背景:

我使用的是一个"经典"的服务器端渲染(SSR(程序,一个机密客户端。我正在向本地http api发送请求。但我也有一个Angular客户。SSR是一个使用github.com/coreos/Go-oidc的Go程序。需要身份验证的呈现页面会将访问者重定向到keycloft,然后通过redirect_uri返回。由于访问者已登录,其id令牌存在于会话中,并且我还传递访问令牌。然而,id令牌没有at_hash声明,因此访问令牌验证失败。

我也有这个网站的移动网络版本,在Angular中,它在登录后发送一个承载访问令牌。这个应用程序使用代码流+pcke。

两者都应该能够发送经过身份验证的请求,但由于我使用的几乎是Go唯一可用的oidc客户端库,因此需要在id令牌中提供at_hash声明才能验证访问令牌。该包当前不支持内省终结点。

id令牌和访问令牌都是从IDP返回的。但两者都没有at_hash的说法。

根据OIDC,只有在颁发访问令牌时,at_hash才是强制性的。请确保您使用的是response_type=id_token token,而不是response_type=id_token

最新更新