Keycloak - 令牌检索时 codeToToken 中的 NullPointerException
Keycloak - NullPointerException in codeToToken on token retreive
我正在尝试 运行 将 keycloak 伪装成最简单的 OpenID 服务器,使用最简单的应用程序来验证用户身份。
我的步数:
- 我运行 keycloak实例
docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak
- 我登录到 keycloak 实例,创建 ID 为
swarm
的新客户端,我将 Authorization Enabled
设置为 true,我将有效重定向 URI 设置为 http://myapp/test.php
,其余为默认值。
- 在
http://myapp/test.php
我只有 link 到 http://localhost:8080/auth/realms/master/protocol/openid-connect/auth?client_id=swarm&response_type=code&scope=code&redirect_url=http://myapp/test.php
我点击了
- 我被重定向到 keycloak 页面,在那里我以 admin/admin 身份登录,然后我被重定向回
http://myapp/test.php?session_state=c15d4d10-31a9-41d8-a8ba-9ea84d8fd4fa&code=ey...FA
(我删掉了代码,因为它很长)
- 我正在尝试通过调用
curl -d "client_id=swarm" -d "grant_type=authorization_code" -d "client_secret=51d9de29-35f8-4692-bdfc-72f4c0a5b25f" -d "session_state=62f12f56-968b-4068-bbb5-95e5c9f1bc23" -d "code=eey...FA" http://localhost:8080/auth/realms/master/protocol/openid-connect/token
手动用 curl
将该代码交换为令牌
- 我收到 500 服务器错误,没有任何消息。
在 Keycloak 日志中,我在尝试使用此日志从 openid 获取令牌时得到 NullPointerException
:
10:02:16,987 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-14) Uncaught server error: java.lang.NullPointerException
at > org.keycloak.protocol.oidc.endpoints.TokenEndpoint.codeToToken(TokenEndpoint.java:310)
at > org.keycloak.protocol.oidc.endpoints.TokenEndpoint.processGrantRequest(TokenEndpoint.java:172)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
不确定我接下来能做什么。我会提供任何帮助。
在您的请求 #5 中提供 request_uri
。使用与第一个请求中相同的方法。
我正在尝试 运行 将 keycloak 伪装成最简单的 OpenID 服务器,使用最简单的应用程序来验证用户身份。
我的步数:
- 我运行 keycloak实例
docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak
- 我登录到 keycloak 实例,创建 ID 为
swarm
的新客户端,我将Authorization Enabled
设置为 true,我将有效重定向 URI 设置为http://myapp/test.php
,其余为默认值。 - 在
http://myapp/test.php
我只有 link 到http://localhost:8080/auth/realms/master/protocol/openid-connect/auth?client_id=swarm&response_type=code&scope=code&redirect_url=http://myapp/test.php
我点击了 - 我被重定向到 keycloak 页面,在那里我以 admin/admin 身份登录,然后我被重定向回
http://myapp/test.php?session_state=c15d4d10-31a9-41d8-a8ba-9ea84d8fd4fa&code=ey...FA
(我删掉了代码,因为它很长) - 我正在尝试通过调用
curl -d "client_id=swarm" -d "grant_type=authorization_code" -d "client_secret=51d9de29-35f8-4692-bdfc-72f4c0a5b25f" -d "session_state=62f12f56-968b-4068-bbb5-95e5c9f1bc23" -d "code=eey...FA" http://localhost:8080/auth/realms/master/protocol/openid-connect/token
手动用 - 我收到 500 服务器错误,没有任何消息。
curl
将该代码交换为令牌
在 Keycloak 日志中,我在尝试使用此日志从 openid 获取令牌时得到 NullPointerException
:
10:02:16,987 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-14) Uncaught server error: java.lang.NullPointerException at > org.keycloak.protocol.oidc.endpoints.TokenEndpoint.codeToToken(TokenEndpoint.java:310) at > org.keycloak.protocol.oidc.endpoints.TokenEndpoint.processGrantRequest(TokenEndpoint.java:172) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
不确定我接下来能做什么。我会提供任何帮助。
在您的请求 #5 中提供 request_uri
。使用与第一个请求中相同的方法。