使用Keycloak获得id_token

Obtain id_token with Keycloak

谁知道如何用Keycloak获得id_token?

我一直在 Java (Spring, JEE) 和 postman 中与 Keycloak 一起工作。

基础工作正常,但我需要 id_token,因为有人声称它们不存在于 access_token 但它们存在于 id_token.

使用 keycloak-core 库我可以获得 Keycloak 上下文,但是 id_token 属性始终为空。

有什么想法吗?

如果您使用的是 keycloak 版本 3.2.1, 然后下面的邮件链会帮助你。 大家好

我正在使用下面的 curl 命令

curl -k  https://IP-ADDRESS:8443/auth/realms/Test123/protocol/openid-connect/token -d "grant_type=client_credentials" -d "client_id=SURE_APP" -d "client_secret=ca3c4212-f3e8-43a4-aa14-1011c7601c67"

在上面的命令的响应中 id_token 丢失了,kong 需要它来告诉我是谁?

在我的钥匙圈里realm->client-> Full Scope Allowed ->True

好的,我发现我们必须添加

scope=openid

那么只有它会起作用

在 keycloak 2.x 中,id_token 在返回的令牌对象中。
他们在 keycloak 3.x.
中删除了它 只需将以下内容添加到您的请求中:

scope: "openid"

如下所示保留id_token

http://lists.jboss.org/pipermail/keycloak-user/2018-February/013170.html

我用Keycloak 3.4.3版本也是一样的。

我按照 Gal Margalit 在他的回答中提到的那样在我的请求中添加了 scope=openid,并且有效。

这是我的要求:

curl -X POST -H "Content-Type:application/x-www-form-urlencoded" -d "scope=openid" -d "grant_type=password" -d "client_id=test" -d "username=test@test.hr" -d "password=test" 'https://YOUR-DOMAIN/realms/test123/protocol/openid-connect/token'