UNPKG

@zigatech/keycloak-auth

Version:

Keycloak authorization library for NestJS. Works out of the box.

23 lines (22 loc) 982 B
import axios from "axios"; import { Logger, UnauthorizedException } from "@nestjs/common"; import { Principal } from "./principal.js"; import { KeycloakAuth } from "../constant/keycloak.auth.js"; export class ApiKeyAuth { keycloakConfig; constructor(keycloakConfig) { this.keycloakConfig = keycloakConfig; } async validate(apiKey) { try { const apiKeyValidationResponse = await axios.get(`${this.keycloakConfig.getAuthServerUrl()}/realms/${this.keycloakConfig.getRealm()}/api-keys/validations?key=${apiKey}`); Logger.log("Api key verified!", KeycloakAuth.NAME); const data = apiKeyValidationResponse.data?.data; return new Principal(data.id, data.email, data.emailVerified, data.lastName, data.firstName, data.phone, data.roles); } catch (e) { Logger.debug("Api Key verification failed.", KeycloakAuth.NAME); throw new UnauthorizedException(); } } }