DEV Community

Cover image for Small Nest Keycloak
sebk69
sebk69

Posted on

Small Nest Keycloak

Unusual from me : a typescript package :

Small Nest Keycloak is a minimal, type-safe NestJS integration with Keycloak.
Includes a ready-to-use AuthController, JWT strategy (cookie/header), role decorator and guards.

Quick Start (NestJS)

import { Module } from '@nestjs/common';
import { KeycloakModule } from '@small/nest-keycloak';

@Module({
  imports: [
    KeycloakModule.register({
      baseUrl: process.env.KEYCLOAK_BASE_URL ?? 'http://localhost:8080/auth',
      realm: process.env.KEYCLOAK_REALM ?? 'master',
      clientId: process.env.KEYCLOAK_CLIENT_ID ?? 'nest-app'
    }),
  ],
})
export class AppModule {}
Enter fullscreen mode Exit fullscreen mode

Guards and roles

import { Controller, Get, UseGuards } from '@nestjs/common';
import { JwtAuthGuard, RolesGuard, Roles } from '@small/nest-keycloak';

@Controller('users')
@UseGuards(JwtAuthGuard, RolesGuard)
export class UserController {
  @Get()
  @Roles('admin')
  list() { return ['user1']; }
}
Enter fullscreen mode Exit fullscreen mode

Example .env

KEYCLOAK_BASE_URL=http://localhost:8080/auth
KEYCLOAK_REALM=master
KEYCLOAK_CLIENT_ID=nest-app
ACCESS_COOKIE=access_token
REFRESH_COOKIE=refresh_token
PORT=3000
Enter fullscreen mode Exit fullscreen mode

Top comments (0)