我正在尝试验证从密钥斗篷收到的令牌。我创建了TestClient作为客户端,创建了TestRealm作为领域,并创建了“ user”作为用户。在验证收到的令牌时,我正在访问此端点 -http:// localhost:8080 / auth / realms / TestRealm / protocol / openid-connect / userinfo。
在响应中,我没有收到实际的用户详细信息,而是每次都收到此响应:
{
"sub": "xxxx-xxxx-xxxx-xxxx-xxxxxx",
"email_verified": false,
"preferred_username": "service-account-testclient"
}
有人可以解释吗?
我不会说你正在执行令牌验证。令牌验证需要令牌签名验证(通常针对使用的领域公钥)。
你只是用auth头中的令牌调用标准OIDC用户信息端点,而Keycloak必须执行令牌验证作为请求处理的一部分。Userinfo响应取决于你的Keycloak客户端配置(映射器,范围等)。
因此,当你获得带有http代码200的userinfo响应时,令牌必须有效。但是不要将userinfo用于“令牌验证”-它将增加不必要的Keycloak负载,这是一种缓慢的方法,未为此指定userinfo端点,....执行脱机,无状态,快速的令牌签名验证。它应该是所有OIDC库的标准功能。
但是我没有看到可以验证它的任何端点。您能指出一些我可以学到的资源吗?
@KshitizSharma没有验证端点。下载领域公钥并使用您自己的代码验证签名(无需调用任何端点)。