我有以下场景:Angular 4 Web应用程序,它使用Node.js REST API,它使用公司范围的REST身份验证服务。
此REST身份验证服务返回一个JWE令牌,我可以使用node-jose库解密,然后我的Node.js API检查用户的角色,以决定是否允许他使用该Web应用程序。
根据用户角色,Angular Web应用可能允许/拒绝对某些路由的访问,因此我使用的是Guard routes
。
所以,我的问题是:是否可以将用户角色附加到原始JWE令牌并将其返回到Angular Web应用程序,同时仍保持有效?
令牌的请求并返回到Web应用程序就是这样:
request.post('http://security.companyname.com/service/security/auth')
.send({ username: req.body.username, password: req.body.password })
.set('Content-Type', 'application/json')
.then(authResult => {
res.json({
status: true,
token: authResult.text,
error: null
});
})
.catch(err => {
res.json({ status: false, token: null, error: err.message });
console.log(err.message);
});
答案 0 :(得分:1)
不,如果有可能任何人都可以生成有效的令牌。 JWT使用密钥签名,对内容的任何更改都将使签名无效,服务器必须拒绝该令牌。
要创建有效令牌,您的应用程序将需要密钥,并且由于您在Web应用程序中工作,密钥将在客户端不受保护。您需要请求服务器以获取新令牌