【问题标题】:Auth0 Authorization Code Grant with NestJSNestJS 的 Auth0 授权码授予
【发布时间】:2018-10-25 13:10:26
【问题描述】:

我正在寻找如何使用 NestJS 实现 Auth0 的Authorization Code Grant 流程的示例。

【问题讨论】:

    标签: javascript node.js typescript auth0 nestjs


    【解决方案1】:

    为了在处理exchange of the Authorization Code for an Access Token的后端创建POST端点/authenticate,我们需要首先定义端点期望的dto

    我们期望来自客户端的对象具有 authorization_codeorigin 字段。

    authorization-request.dto.ts

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

    现在我们可以创建一个controller 来处理发送到/authenticatePOST 请求:

    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_DOMAINYOUR_CLIENT_IDYOUR_CLIENT_SECRET

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 2023-03-08
      • 2017-01-24
      • 1970-01-01
      • 2020-07-14
      • 2018-05-26
      • 2016-12-17
      • 1970-01-01
      • 2012-05-31
      相关资源
      最近更新 更多