解码获取Jwt payload请求参数
Decode and Set Jwt payload to request parametes
我们正在为我们的微服务使用快速网关。我们已经使用 Jwt 设置了身份验证。我们要验证 jwt 并解码 payload 并将其设置为 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 文件中设置更多参数吗?
请指教。
谢谢
您需要做的就是从 req.user
中获取这些属性——这是存储解码有效负载的地方。
我不知道为什么 answer 对我不起作用,当请求到达 serviceEndpoint 时没有 req.user
。
经过几个小时的努力,我发现了这个 link:
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
我们正在为我们的微服务使用快速网关。我们已经使用 Jwt 设置了身份验证。我们要验证 jwt 并解码 payload 并将其设置为 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 文件中设置更多参数吗? 请指教。 谢谢
您需要做的就是从 req.user
中获取这些属性——这是存储解码有效负载的地方。
我不知道为什么 answer 对我不起作用,当请求到达 serviceEndpoint 时没有 req.user
。
经过几个小时的努力,我发现了这个 link: 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