我有一个k3,上面有一个密钥斗篷和一个处理帖子的微服务。 微服务是在NodeJS中使用express和lib keycloak-connect开发的:
Keycloak实例:
import Keycloak from 'keycloak-connect';
export class KeycloakMiddleware {
private static keycloak: Keycloak;
private static init(): void {
KeycloakMiddleware.keycloak = new Keycloak({});
}
public static getInstance(): Keycloak {
if (!KeycloakMiddleware.keycloak) {
KeycloakMiddleware.init();
}
return KeycloakMiddleware.keycloak;
}
}
服务器:
import express from 'express';
const app = express();
const keycloak = KeycloakMiddleware.getInstance();
app.use(keycloak.middleware());
app.use('/posts', BaseRouter);
路线:
import { Router } from 'express';
import PostRouter from './Posts';
import ReactionRouter from './Reactions';
import {KeycloakMiddleware} from '../shared/Keycloak';
const router = Router();
const keycloak = KeycloakMiddleware.getInstance();
router.use('', keycloak.protect(), PostRouter);
router.use('/reactions', keycloak.protect(), ReactionRouter);
export default router;
Keycloak配置:
{
"realm": "master",
"auth-server-url": "http://url/auth",
"ssl-required": "none",
"resource": "client",
"credentials": {
"secret": "secret"
},
"confidential-port": 0
}
我通过Postman进行所有HTTP请求
我通过对http://url/auth/realms/master/protocol/openid-connect/token进行POST请求从密钥斗篷获得令牌。
然后将其插入标头Authorization:Bearer [token] abd中,然后在http://localhost:3000/posts上执行GET请求,此方法可以正常工作,并且还给我我期望的结果。
但是,当我使用完全相同的令牌调用已部署的API时,它会将我重定向到密钥斗篷域的登录页面。
为什么我部署的API在本地时不接受令牌?