0.0.3 • Published 4 years ago

@ramble-inc/nest-grpc-authz v0.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

@ramble-inc/nest-grpc-authz

npm version License: MIT npm CI

Getting Started

Installation

Using yarn

yarn add @ramble-inc/nest-authz

or using npm

npm i --save @ramble-inc/nest-authz

Use Guard

Set global guard

AuthGuard depends on AuthService , so import AuthModule .

NOTE Do not use useGlobalGuards() because cannot inject dependencies to guard. See https://docs.nestjs.com/guards#binding-guards[NestJS official documents]

@Module({
  imports: [
    AuthModule.forRoot({
      jwksUri: 'https://example.com/.well-known/jwks.json',
      clientId: 'client_id',
      issuerUri: 'https://example.com/',
    }),
  ],
  providers: [
    {
      provide: APP_GUARD,
      useClass: AuthGuard,
    },
  ],
})
export class AppModule {}

or set options with ConfigService

@Module({
  imports: [
    AuthModule.forRootAsync({
      useFactory: (configService: ConfigService) => {
        return {
          jwksUri: configService.get('JWKS_URI'),
          clientId: configService.get('CLIENT_ID'),
          issuerUri: configService.get('ISSUER_URI'),
        };
      },
      imports: [ConfigModule],
      inject: [ConfigService],
    }),
  ],
  providers: [
    {
      provide: APP_GUARD,
      useClass: AuthGuard,
    },
  ],
})
export class AppModule {}

Get decoded JWT payload

AuthGuard adds entire JWT payload to metadata. + You can safely get JWT payload by using isMetadataWithClaim (Type Guard).

if (isMetadataWithClaim(metadata)) {
  const { claim } = metadata;
}