我有一个分为前端和后端服务的应用程序。前端具有公共访问权限,而后端是机密的。当我尝试授权从后端获取响应时,出现以下错误:
cache-control: no-cache, no-store, max-age=0, must-revalidate
content-length: 0
date: Fri, 06 Dec 2019 09:16:16 GMT
expires: 0
pragma: no-cache
vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
www-authenticate: Bearer realm="my_realm", error="invalid_token", error_description="Didn't
find publicKey for specified kid", Bearer realm="my_realm", error="invalid_token",
error_description="Didn't find publicKey for specified kid"
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
这是我对这两种服务的配置:
Backend:
keycloak:
auth-server-url: http://localhost:8081/auth
realm: my_realm
resource: your-client-id
ssl-required: external
credentials.secret: your-client-secret
Frontend:
sso: {
url: 'http://localhost:8081/auth',
realm: 'my_realm',
clientId: 'your-frontend-client'
}
我正在使用keycloak 7.0.1和Spring Security。
我是否缺少用于允许来自公共客户端授权的任何其他配置?
答案 0 :(得分:2)
您必须检查多项内容
http
或https://<IP ADDRESS>:PORT/auth
https://medium.com/@siweheee/keycloak-a-real-scenario-from-development-to-production-ce57800e3ba9
Keycloak: missing realm public key
Keycloak invalid_token Didn't find publicKey for specified kid
如果您使用的是docker环境
KeyCloak必须由同一公众从所有客户端访问 出于安全原因处理。这也包括GUI服务器。它是 无法通过本地IP地址与Keycloak通信,因为 安全性取决于IP地址。