我在 kubernetes 中运行 keycloak 15.0.2 以及 react 应用程序和 node-js 后端服务。
我有 2 个客户,一个是公共的(反应前端),另一个是仅承载(服务后端),没什么特别的。
然后我通过 GET 方法从后端请求资源:
export const apiSlice = createApi({
reducerPath: 'api',
baseQuery: fetchBaseQuery({
baseUrl: "https://example.com/api",
prepareHeaders(headers){
headers.set('Accept', 'application/x-www-form-urlencoded');
headers.set('Authorization', 'bearer ' + keycloak.token)
return headers;
}
}),
endpoints(builder){
return{
fetchListings: builder.query({
query: () => '/listings/'
}),
...
后端客户端安装 json
{
"realm": "MyRealm",
"bearer-only": true,
"auth-server-url": "https://auth.example.com/auth/",
"ssl-required": "external",
"resource": "listings-backend",
"verify-token-audience": true,
"use-resource-role-mappings": true,
"confidential-port": 0
}
我总是得到一个 403 拒绝访问的答案。邮递员也一样。
如果我删除 keycloak.protect() 一切正常。