我有一个运行“标准授权代码流程”的本地 Keycloak 服务器。
我使用此 url 调用授权端点:
http://localhost:8080/realms/lapse/protocol/openid-connect/auth?client_id=lapse-app&redirect_uri=http://localhost:8080&response_type=code
身份验证成功后,我正确地重定向到:
http://localhost:8282?session_state=6c93f810-d934-4e20-adcc-b21748d3b26a&iss=http%3A%2F%2Flocalhost%3A8080%2Frealms%2Flapse&code=6cc168fc-e894-4f8b-a401-ec3267dc69b1.6c93f810-d934-4e20-adcc-b21748d3b26a.eec3a0c8-ff4a-437b-ad17-5f6228422b0f
给我授权令牌:
6cc168fc-e894-4f8b-a401-ec3267dc69b1.6c93f810-d934-4e20-adcc-b21748d3b26a.eec3a0c8-ff4a-437b-ad17-5f6228422b0f
还通过 Cookie 添加 JWT(虽然我不需要它,但这表明到目前为止一切都正常工作,我认为)。
当我现在向令牌端点发送请求时,使用这些参数时会收到错误
Code not valid
:
{
grant_type : authorization_code,
code : 6cc168fc-e894-4f8b-a401-ec3267dc69b1.6c93f810-d934-4e20-adcc-b21748d3b26a.eec3a0c8-ff4a-437b-ad17-5f6228422b0f,
redirect_uri : http://localhost:8282,
client_id : lapse-app,
client_secret : ZLpHFtQzoYdf21rIDwblZlZZ0bFntaD7
}
我不明白为什么会发生这种情况。我从重定向中获得的授权代码似乎与我在示例中看到的格式不同,我是否必须在将其发送到令牌端点之前重新格式化它?
我发现你的
redirect_uri
有所不同。
您使用端口
8080
调用了 OpenID 提供商
...&redirect_uri=http://localhost:8080&response_type=code
身份验证成功后,您将被重定向到端口
8282
http://localhost:8282?....
当您尝试执行代码到令牌时,您使用了
redirect_uri
和端口 8282
http://localhost:8282
请注意,在请求身份验证并执行代码到令牌时,您必须使用完全相同的
redirect_uri
。