使用 Keycloak 范围分隔符保护 GraphDB
GraphDB secured with Keycloak scope separator
我正在尝试通过 OpenID 使用 Keycloak 保护 GraphDB 实例。我在 Keycloak 中创建了一个领域、一个客户端和一些用户。
然后我基于 documentation 配置了 GraphDB。现在,当我在 GraphDB 的登录屏幕上单击“使用 OpenID 登录”按钮时,它让我返回到 GraphDB 登录屏幕。我注意到 Keycloak 的日志中有一个错误:
KC-SERVICES0093: Invalid parameter value for: scope
[org.keycloak.events] (default 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
范围查询参数值之间有两个 space。根据 documentation,范围应该由 space 分隔,但显然问题在于 GraphDB 请求中有两个。如果我手动删除其中一个编码的 spaces 并在 Postman 中重新运行请求,它会在没有错误的情况下完成(导致出现 Keycloak 登录屏幕)。
我不确定这是 Keycloak(能够处理范围参数中的多个 space)还是 GraphDB(不要使用两个 space 来分隔范围参数)问题.此外,我找不到任何配置参数来影响它。关于如何 resolve/work 解决此问题的任何想法?谢谢
更新:
我已经从下面的 Pavel 那里得到了满意的答案,但为了将来参考,我尝试的版本是:
- GraphDB 9.5.0
- 密钥斗篷 12.0.1
我们知道 GraphDB 的 space 问题,它将在未来的版本中解决。似乎某些 OpenID 提供商对额外的 space 比其他提供商更宽容。不幸的是,目前没有已知的解决方法。
我正在尝试通过 OpenID 使用 Keycloak 保护 GraphDB 实例。我在 Keycloak 中创建了一个领域、一个客户端和一些用户。
然后我基于 documentation 配置了 GraphDB。现在,当我在 GraphDB 的登录屏幕上单击“使用 OpenID 登录”按钮时,它让我返回到 GraphDB 登录屏幕。我注意到 Keycloak 的日志中有一个错误:
KC-SERVICES0093: Invalid parameter value for: scope
[org.keycloak.events] (default 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
范围查询参数值之间有两个 space。根据 documentation,范围应该由 space 分隔,但显然问题在于 GraphDB 请求中有两个。如果我手动删除其中一个编码的 spaces 并在 Postman 中重新运行请求,它会在没有错误的情况下完成(导致出现 Keycloak 登录屏幕)。
我不确定这是 Keycloak(能够处理范围参数中的多个 space)还是 GraphDB(不要使用两个 space 来分隔范围参数)问题.此外,我找不到任何配置参数来影响它。关于如何 resolve/work 解决此问题的任何想法?谢谢
更新: 我已经从下面的 Pavel 那里得到了满意的答案,但为了将来参考,我尝试的版本是:
- GraphDB 9.5.0
- 密钥斗篷 12.0.1
我们知道 GraphDB 的 space 问题,它将在未来的版本中解决。似乎某些 OpenID 提供商对额外的 space 比其他提供商更宽容。不幸的是,目前没有已知的解决方法。