尝试使用 Keycloak 实现 OpenId Connect,但我总是收到“代码无效”

问题描述

刚刚开始使用 Keycloak 进行 OpenIdConnect 身份验证。我在本地 Keycloak 服务器上创建了一个 test-realm,我正在尝试使用它下的 admin-cli 客户端进行身份验证。在 admin-cli 下的 test-realm 设置下,我设置了以下内容

客户端协议:Open Id Connect 访问类型:机密 启用直接访问授权:ON 服务帐户已启用:开启

Fine Grain OpenID Connect Configuration > Valid Request URIs 下,我暂时添加*(即使我添加了正确的重定向 URL,即 localhost:9999,也无济于事)。

然而,每次我尝试获取 /token 时,我总是得到

{
  "error": "invalid_grant","error_description": "Code not valid"
}

奇怪的是,当我将 grant_type 更改为 client_credentials 时,我在响应中完美地收到了访问令牌。但是将其改回 authorization_code 并且我收到该错误。这是我所做的 curl 调用

curl --request POST \
  --url http://localhost:8080/auth/realms/test-realm/protocol/openid-connect/token \
  --header 'Authorization: Basic YWRtaW4tY2xpOjEwMWRkOWJjLTc1NjItNDBhNy04OWI1LWJhOTUxMWJiYmQ5ZA==' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data grant_type=authorization_code \
  --data code=IvGEFwk0LRBSuQSJgHHrZsWYPKCloLh6L8N7nOGhnUz \
  --data redirect_uri=http://localhost:9999

其中 localhost:8080 是我的本地密钥斗篷服务器

我的配置有问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)