Предоставление кода авторизации Auth0 с NestJS - PullRequest
0 голосов
/ 15 мая 2018

Я ищу пример того, как реализовать Предоставление кода авторизации потока Auth0 с использованием NestJS.

1 Ответ

0 голосов
/ 17 мая 2018

Чтобы создать POST конечную точку /authenticate на бэкэнде, которая обрабатывает обмен кода авторизации для токена доступа , нам нужно сначала определить dto что ожидает конечная точка.

От клиента мы ожидаем объект, имеющий поля authorization_code и origin.

разрешительного request.dto.ts

export class AuthorizationRequestDto {
  readonly authorization_code: string;
  readonly origin: string;
}

Теперь мы можем создать контроллер , который будет обрабатывать POST запросов, отправленных на /authenticate:

import { Body, Controller, HttpService, Post } from '@nestjs/common';
import { AxiosResponse } from '@nestjs/common/http/interfaces/axios.interfaces';
import { Observable } from 'rxjs/internal/Observable';
import { map } from 'rxjs/operators';

import { AuthorizationRequestDto } from './authorization-request.dto';

@Controller('authenticate')
export class AuthController {

  constructor(private readonly httpService: HttpService) {}

  @Post()
  authenticate(@Body() authorizationRequestDto: AuthorizationRequestDto): Observable<AxiosResponse<any>> {
    return this.httpService.post('https://YOUR_AUTH0_DOMAIN/oauth/token', {
      grant_type: 'authorization_code',
      client_id: 'YOUR_CLIENT_ID',
      client_secret: 'YOUR_CLIENT_SECRET',
      code: authorizationRequestDto.authorization_code,
      redirect_uri: authorizationRequestDto.origin,
    }).pipe(
      map(response => response.data),
    );
  }
}

Естественно, в приведенном выше коде нам нужно заменить YOUR_AUTH0_DOMAIN, YOUR_CLIENT_ID и YOUR_CLIENT_SECRET.

...