如何通过Swagger云端点传递自签的JWT?

问题描述 投票:0回答:1

好吧,我看到这个QA在这里

使用Google Cloud Endpoints进行Non-OAuth2 JWT验证。

这并没有完全回答我的问题。目前,我有一个Node服务,它会生成一个Bearer令牌,并将其传递给客户端。然后,客户端在后续的请求中把令牌传回。

该令牌是通过我们的 auth token 服务创建的。它被传递给客户端。这样做是可行的。然而,当令牌从客户端通过API网关传回后端服务时,它从来没有传到服务中。

下面是一个传递的不记名令牌的例子。

eyJhbGciOiJSUzI1NR5cCI6IkpkkSXVCJ9.eyJ1c2VyX2lkIjoiWHZYSlZuZDdRZnhMMXZwZ0dTcWwiLCJyb2xlIjoidXNlciIsImlhdCI6MTU4ODczOTg3NywiZXhwIjoxNTg4NzksxjgzMDc3fQ.LJ3YQJMrVX4go-NZ_nfEdT7lrsmFD6kv9WAnDXB3w2ZXDmXn7eJJ5posUxOp5jfu32jpMCNdFywquQ 

令牌通过云端点创建的 API 网关(别紧张,我是谷歌云端点的新手)。那么,我缺少了什么,我如何将令牌传入?

swagger: '2.0'
info:
  title:  API Gateway
  description: Description
  version: 1.0.0
host: {host}
schemes:
  - https
paths:
  /auth/token/decode:
    get:
      summary: Auth Endpoint - Decode Token
      operationId: auth_endpoint_decode
      x-google-backend:
        address: {backend-host}
        protocol: h2
      responses:
        200:
          description: "Token Decoded"
        400:
          description: "Page Error"
  /auth/token/create:
    post:
      summary: Auth Endpoint - Create Token
      operationId: auth_endpoint_create
      parameters:
        - description: "Message to echo"
          in: body
          name: content
          required: true
          schema:
            type: object
            properties:
              username:
                type: string
              password:
                type: string
      x-google-backend:
        address: {backend-host-2}
        protocol: h2
      responses:
       200:
         description: "Encoded Token"
       400:
         description: "Page Error"

因此,我试图实现的是让客户端能够传回已创建的令牌,并让该令牌进入我的Node服务,以便它可以被解码。

任何帮助都是非常感激的... 谢谢您的帮助。

更新。

我发现有一个令牌被传到了我的后台服务中 I found that there is a token being passed into my backend service. 只是和我传入的token不一样。所以,我从前端传入的token是:

eyJhbGciOiJSUz21Ni5sIn65cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiWHZYSlZuZDdRZnhMMXZwZ0dTcWwiLCJyb2xlIjoddXN6ciIsImlhdCI6MTU4ODc3NTgyMSwiZXhwIjoxNTg4ODE5MDIxLCJpc3MiOiJhdXRoLXNlc4ZpY2UtbWx5Y3RkNnJlYS11Yy5hLnJ1bi5hcHAifQ.oBI7MaK08Tbg9PQ5vRahdZAS_nhKOWqu4EG5onyNA587KBf2A50eFLRFfkB3AY6t5RXBIbOvUQCXS6UQup1RPg

而传入我后台的令牌是一个更长的令牌 And the token passed into my backend is a much longer token:

eyJhbGciOiJSUzI14iIsImtpZCI6Ijc0YmQ4NmZjNjFlNGM2Y2L0NTAxMjZmZjRlMzhiMDY5YjhmOGYzNWMiLCJ0eX5iOiJKV1QifQ.eyJhdWQiOiJodFRwczovL2F1dGgtc2VydmljZS1xYmZmNHd0YWNxLXVjLmEucnVuLmFwcC9hdXRoL3Rva2VuL2RlY29kZSIsImF6cCI6IjEwNjAwNzMxMjY3MTM0MTM3MzA3MCIsImVtYWlsIjoiMTExOGA4MjE1NjQ4LWNvbXB1dGVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJ7bWFpbF92ZXJpZmllZCI6dHJ1ZSwiZXhwIjoxNTg4Nzc5MTgyLCJpYXQiOjE1ODg7NzU1ODIsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsInN1YiI6IjEwNjAwNzMxMjY3MTM0MTM3MzA3MCJ9.qLq4aAJ_UxCoHM00fVJpkvTEPkWZ1VTVelvlGktZ6ldDe9LPsHiE1KmyTxjm7HpKouesY8FmL-lopzArroHJSXfFff-VUujTQ6WI-nrHuRMRUzV7a6PwLCCwoDks6Exp04GG9EjweMcb1ZgQQrCTYk1K1SOCD9sZ2VqROEvV0_YNblFsUJS9b9INeacnhrcYDhi6inlSbsVNKpwqBOZJYE5_W9wLAlIK08RUPOmcLaqBD7pvzSYCZps4K75bOev__xT07yizFppAxlVvqB3PTSTFTCeyCnuUFtJ3kmfNf94Uu51jTpTExPKrumdJ18SLnPoopHJG-GCzSJSmccSOTA
node.js google-cloud-platform jwt google-cloud-endpoints
1个回答
1
投票

如果你想保留原始的 authorization 头,你必须停用端点认证。文档 此处

在你的道路上,要这样做。

paths:
  /auth/token/decode:
    get:
      summary: Auth Endpoint - Decode Token
      operationId: auth_endpoint_decode
      x-google-backend:
        address: {backend-host}
        protocol: h2
        disable_auth: true
      responses:
        200:
          description: "Token Decoded"
        400:
          description: "Page Error"
© www.soinside.com 2019 - 2024. All rights reserved.