2

我使用 Keycloak 服务器进行授权(微服务)。

我克隆了这个项目https://github.com/w3tecch/express-typescript-boilerplate/tree/master

在我的快速项目中,我正在使用keycloak-connect(keycloak 适配器)库

我想在我的新 express-nodejs 项目中实现下面的代码。

参考:https://github.com/keycloak/keycloak-quickstarts/blob/latest/service-nodejs/app.js

  app.get('/service/secured', keycloak.protect(), function (req, res) {
      res.json({message: 'secured'});
    });

我正在使用routing-controllers库进行快递。我不知道如何keycloak.protect()在这个项目中使用。有什么建议么?

到目前为止,我设法做到了(我不确定这是否是正确的方法):

授权检查器.ts

export function authorizationChecker(connection: Connection): (action: Action, roles: any[]) => Promise<boolean> | boolean {
    return async function innerAuthorizationChecker(action: Action, roles: string[]): Promise<any> {
        try {
            const grant = await KeycloakService.keycloak.getGrant(action.request, action.response);
            action.request.auth =  await KeycloakService.keycloak.grantManager.userInfo(grant.access_token);
            return true;
        } catch (e) {
            console.log(e)
            return false;
        }
    };
}

@Authorized()而不是我在控制器中使用注释:

@Authorized()
@JsonController('/users')
export class UserController {
}

我使用邮递员来测试api。我能够获得令牌,并且在出现身份验证错误之前我可以在我的 api 上发出一些请求。未设置令牌的过期时间。

4

0 回答 0