问题描述
我正在尝试通过 OpenID 使用 Keycloak 保护 GraphDB 实例。我在 Keycloak 中创建了一个领域、一个客户端和一些用户。
然后我根据 documentation 配置了 GraphDB。现在,当我单击 GraphDB 登录屏幕上的“使用 OpenID 登录”按钮时,它让我返回到 GraphDB 登录屏幕。我注意到 Keycloak 的日志中有一个错误:
KC-SERVICES0093:无效的参数值:范围
[org.keycloak.events](默认 task-1)type=LOGIN_ERROR,realmId=kodi,clientId=graphdb,userId=null,ipAddress=127.0.0.1,error=invalid_request,response_type=code,redirect_uri=http: //localhost:7200/,response_mode=query
我检查了浏览器中发出的请求,似乎以下身份验证请求是罪魁祸首:
http://localhost:8080/auth/realms/kodi/protocol/openid-connect/auth?response_type=code&scope=openid%20%20offline_access&client_id=graphdb&redirect_uri=http://localhost:7200/&&state=530bc478e086b3e6b4474c35b7649c34faf0e0ae1a36f4a36ba3eb2c&code_challenge=W4IA_YvcdXVYJbgApldqdoHePBXZxzToSaPdfgsxTYM&code_challenge_method=S256
我在 Postman 中对其进行了测试,问题似乎在于 openid
和 offline_access
范围查询参数值之间有两个空格。根据 documentation,范围应该用空格分隔,但显然问题是 GraphDB 请求中有两个。如果我手动删除其中一个编码的空格并在 Postman 中重新运行请求,它会毫无错误地完成(导致 Keycloak 登录屏幕)。
我不确定这是 Keycloak(能够处理范围参数中的多个空格)还是 GraphDB(不要使用两个空格来分隔范围参数)问题。此外,我找不到任何配置参数来影响这一点。任何想法如何解决/解决此问题?谢谢
更新: 我已经从下面的 Pavel 那里得到了令人满意的答案,但仅供将来参考,我尝试的版本是:
- GraphDB 9.5.0
- Keycloak 12.0.1
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)