node.js - Implementera keycloak connect i en express-applikation
Jag använder Keycloak-servern för auktorisering (mikrotjänst).
Jag klonade detta projekt https://github.com/w3tecch/express-typescript-boilerplate/tree/master
I mitt express-projekt använder jag keycloak-connect (Keycloak-adapter) biblioteket
Jag vill implementera koden nedan i mitt nya express-nodejs-projekt.
referens: 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'});
});
Jag använder routing-controllers-biblioteket för Express. Jag vet inte hur man använder keycloak.protect() i det här projektet. Några förslag?
Hittills vad jag har lyckats göra (jag är inte säker på om detta är rätt sätt):
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;
}
};
}
och sedan använder jag annotation @Authorized() i controllern:
@Authorized()
@JsonController('/users')
export class UserController {
}
Jag använder Postman för att testa API. Jag kan få token och jag kan göra några förfrågningar på mitt API innan jag får autentiseringsfel. Utgångstid för token är inte inställd.