首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解码并将Jwt有效负载设置为请求参数

解码并将Jwt有效负载设置为请求参数
EN

Stack Overflow用户
提问于 2019-09-05 05:07:20
回答 2查看 387关注 0票数 2

我们使用express-gateway来提供微服务。我们已经使用Jwt设置了身份验证。我们希望验证jwt并解码有效负载,并将其设置为req params

这是我们的gateway.config.yml文件

代码语言:javascript
复制
http:
  port: 8080
admin:
  port: 9876
  host: localhost
apiEndpoints:
  user:
    host: localhost
    paths: "/v1/users"
  product:
    host: localhost
    paths: "/v1/products"
serviceEndpoints:
  user:
    url: http://localhost:3001
  product:
    url: http://localhost:3000
policies:
- basic-auth
- key-auth
- cors
- expression
- log
- oauth2
- proxy
- rate-limit
- jwt
pipelines:
- name: default-1
  apiEndpoints:
  - user
  policies:
  - jwt:
    - action:
        secretOrPublicKey: privatekey
        checkCredentialExistence: 'false'
  - proxy:
    - action:
        serviceEndpoint: user
- name: default-2
  apiEndpoints:
  - product
  policies:
  - jwt:
    - action:
        secretOrPublicKey: privatekey
        checkCredentialExistence: 'false'
  - proxy:
    - action:
        serviceEndpoint: product

我的Jwt有效负载令牌如下所示

代码语言:javascript
复制
{
  "org": "1234567890",
  "siteID": "343434343",
  "expiry": "600"
}

在解码和验证jwt签名之后,网关应该将请求的有效负载信息设置为

代码语言:javascript
复制
req.org = payload.org
req.siteId = payload.siteId

这将传递给我们的底层微服务。如何做到这一点。我是否应该在gateway.config.yml文件中设置更多的参数。敬请指教。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-05 14:17:35

您所需要做的就是从req.user获取这些属性--这是存储解码后的有效负载的地方。

票数 0
EN

Stack Overflow用户

发布于 2020-01-30 08:56:44

我不知道为什么answer对我不起作用,当请求命中serviceEndpoint时,没有req.user

经过几个小时的努力,我找到了这个链接:https://www.express-gateway.io/docs/policies/request-transformer/

似乎默认情况下不会添加req.user,它需要使用request-transformer并按您的意愿将其添加到body或header中。我真的不知道文档中有没有提到这一点(我是指在部分jwt部分)

代码语言:javascript
复制
policies:
      -
        jwt:
          action:
            secretOrPublicKey: theKEY
            checkCredentialExistence: false
      -
        request-transformer:
          action:
            body:
              add:
                user: req.user

编辑:我使用的是express-gateway 1.16.10

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57795650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档