Kinde Auth NestJs
A NestJs Module to validate your Kinde JSON Web Tokens
Usage
If you are using a mobile or front-end Kinde SDK and want to protect your NestJs back-end APIs, this Module is relevant for you.
npm i @amsame/kinde-auth-nestjs
-
Set the environments
kinde supports multi-domain authentication where the primary domain is the same, but there are different NestJs services running in different subdomains.
For example. service1.yourdomain.com, service2.yourdomain.com, so make sure to set this environment in your kinde SDK
KINDE_COOKIE_DOMAIN=.yourdomain.com
To run this module, you will need to add the following environment variables to your NestJs .env file
KINDE_DOMAIN=https://<your-subdomain>.kinde.com
KINDE_AUDIENCE=https://<your-audience>
make sure you set the audience in your kinde SDK, see here
import { Module } from '@nestjs/common';
import { KindeModule } from '@amsame/kinde-auth-nestjs';
@Module({
imports: [..., ..., KindeModule],
controllers: [...],
providers: [...],
})
export class AppModule {}
import { Controller, Get } from '@nestjs/common';
import { KindeIsAuth } from '@amsame/kinde-auth-nestjs';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
@KindeIsAuth()
hello() {
...
}
}
import { Controller, Get } from '@nestjs/common';
import { KindeRoles } from '@amsame/kinde-auth-nestjs';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
@KindeRoles(['admin'])
hello() {
...
}
}
import { Controller, Get } from '@nestjs/common';
import { KindePermissions } from '@amsame/kinde-auth-nestjs';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
@KindePermissions(['...', '...'])
hello() {
...
}
}
import { Controller, Get } from '@nestjs/common';
import { IKindeUser, KindeIsAuth, KindeUser } from '@amsame/kinde-auth-nestjs';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
@KindeIsAuth()
hello(@KindeUser() user: IKindeUser) {
...
}
}
License
MIT