Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jajaperson/nestjs-auth0
An example NestJS application that uses Auth0 via Passport for authentication.
https://github.com/jajaperson/nestjs-auth0
auth0 jwt nestjs passport typescript
Last synced: 1 day ago
JSON representation
An example NestJS application that uses Auth0 via Passport for authentication.
- Host: GitHub
- URL: https://github.com/jajaperson/nestjs-auth0
- Owner: jajaperson
- License: mit
- Created: 2019-02-05T09:53:18.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-23T21:59:24.000Z (almost 2 years ago)
- Last Synced: 2024-10-31T08:52:22.721Z (8 days ago)
- Topics: auth0, jwt, nestjs, passport, typescript
- Language: TypeScript
- Homepage:
- Size: 2.24 MB
- Stars: 207
- Watchers: 1
- Forks: 25
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nestjs - NestJS Auth0 - An example NestJS application that uses Auth0 via Passport for authentication. (Resources)
README
## Description
A template for using [Auth0](https://auth0.com) with the
[Nest](https://github.com/nestjs/nest) framework. To start, either fork this
repository or run```bash
$ git clone --depth 1 https://github.com/jajaperson/nestjs-auth0.git
```## Setup
You'll need to populate a `.env` file with Auth0 configuration environemt
details. This file should **never** be committed for obvious reasons (hence the
reason it's `.gitignore`-d).```dotenv
AUTH0_DOMAIN={your Auth0 domain}
AUTH0_CLIENT_ID={the Auth0 client ID for your app}
AUTH0_CLIENT_SECRET={the Auth0 client secret for your app}
AUTH0_AUDIENCE={http://localhost:3000 or your production domain accordingly}
```A template `.env` file can be found at [`.env.example`](.env.example).
You may also like to remove all the irrelevant metadata from the `package.json`,
suck as the `repository`, `homepage`, `bugs`, and `description` fields.## Installation
```bash
$ npm install
```## Running the app
```bash
# development
$ npm run start# watch mode
$ npm run start:dev# production mode
$ npm run start:prod
```## Test
```bash
# unit tests
$ npm run test# e2e tests
$ npm run test:e2e# test coverage
$ npm run test:cov
```## Explanation
### Authentication logic
This template nest app uses the [jwks-rsa](https://ghub.io/jwks-rsa) package
along with [passport-jwt](https://ghub.io/passport-jwt) and
[@nestjs/passport](https://ghub.io/@nestjs/passport) for authentication. All
authentication logic is in the [`/src/auth/`](src/auth/) submodule.```
src/auth/
├── auth.module.ts
├── interfaces
│ └── jwt-payload.interface.ts
├── jwt.strategy.spec.ts
└── jwt.strategy.ts
```The [`JwtStrategy`](src/auth/jwt.strategy.ts) injectable contains all the core
functionality, where the constructor sets up core token validation using the
[jwks-rsa](https://ghub.io/jwks) library. All the Auth0 configuration for this
is done in the [`.env`](.env.example) file using
[@nestjs/config](https://ghub.io/@nestjs/config) (see [above](#Setup)). On any
request with authentication, the decoded JSON web token (which should follow
[`JwtPayload`](src/auth/interfaces/jwt-payload.interface.ts)) is passed to the
`validate`, which checks the token for the required scopes.The [`AuthModule`](src/auth/auth.module.ts) itself exports both `PassportModule`
and the `JwtStrategy` injectable, and registers `JwtStrategy` as default.`AuthModule` is imported by [`AppModule`](src/app.module.ts), and protected
routes are decorated with `@UseGuards(AuthGuard())` in
[`AppController`](src/app.controller.ts).## More info
See the [Nest documentation](https://docs.nestjs.com).
## License
This project is [MIT licensed](LICENSE).