使用Keycloak获取id_token

问题描述 投票:0回答:4

谁知道如何通过

Keycloak
获取id_token?

我一直在

Keycloak
(Spring、JEE)和邮递员中与
Java
合作。

基础工作正常,但我需要

id_token
,因为有人声称它们不存在于
access_token
中,但它们存在于
id_token
中。

使用

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

有什么想法吗?

java openid keycloak
4个回答
24
投票

如果您使用的是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

 只有这样才能工作


11
投票

我对 Keycloak 3.4.3 版本也有同样的事情。

我在我的请求中添加了

scope=openid
,正如 Gal Margalit 在他的回答中提到的那样,它有效。

这是我的要求:

curl -X POST -H“内容类型:application/x-www-form-urlencoded”-d “scope=openid” -d“grant_type=password”-d“client_id=test”-d“[电子邮件受保护]”-d“password=test” 'https://YOUR-DOMAIN/realms/test123/protocol/openid-connect/token'


4
投票

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

scope: "openid"

如下所列保留id_token

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


0
投票

在 Keycloak 23.0.4 中,url 中的“auth”已被省略,因此对于客户端来说,现在是:

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

要获取用户的 id_token,必须添加用户凭据,并且 grant_type 必须更改为“密码”,即:

curl -k https://IP-ADDRESS:8443/realms/Test123/protocol/openid-connect/token -d“grant_type=password”-d“client_id=SURE_APP”-d“client_secret=ca3c4212-f3e8-43a4- aa14-1011c7601c67”-d“范围= openid”-d“用户= jdoe”-d“密码= jdoe”

© www.soinside.com 2019 - 2024. All rights reserved.