在快速应用程序中实现keycloak连接

问题描述

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

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

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

我想在新的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()。有什么建议吗?

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

authorizationChecker.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上发出几个请求。 未设置令牌的过期时间。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)