@zigatech/keycloak-auth
Version:
Keycloak authorization library for NestJS. Works out of the box.
23 lines (22 loc) • 982 B
JavaScript
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();
}
}
}