我们使用express-gateway来提供微服务。我们已经使用Jwt设置了身份验证。我们希望验证jwt并解码有效负载,并将其设置为req params
这是我们的gateway.config.yml文件
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有效负载令牌如下所示
{
"org": "1234567890",
"siteID": "343434343",
"expiry": "600"
}在解码和验证jwt签名之后,网关应该将请求的有效负载信息设置为
req.org = payload.org
req.siteId = payload.siteId这将传递给我们的底层微服务。如何做到这一点。我是否应该在gateway.config.yml文件中设置更多的参数。敬请指教。谢谢
发布于 2019-09-05 14:17:35
您所需要做的就是从req.user获取这些属性--这是存储解码后的有效负载的地方。
发布于 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部分)
policies:
-
jwt:
action:
secretOrPublicKey: theKEY
checkCredentialExistence: false
-
request-transformer:
action:
body:
add:
user: req.user编辑:我使用的是express-gateway 1.16.10
https://stackoverflow.com/questions/57795650
复制相似问题