在前端解码JWT有效负载?

时间:2018-02-26 18:57:59

标签: angular spring-boot spring-security jwt

我和我的同学一起在学校做项目并在Spring Security中使用JWT。我们在解码前端的JWT有效载荷方面存在争议。前端正在使用Angular。 Oauth端点返回授权响应如下:

{
    "access_token": <access_token>,
    "token_type": <bearer>,
    "expires_in": <time>,
    "scope": <scope>,
    "jti": <jti>
}

据我所知,这是标准回复。争论的焦点是我们是否应该修改此响应以获得用户名和权限。例如:

{
    ...
    "username": <username>
    "authorities": <authorities>
}

我没有看到必要性,因为有效载荷已包含相同的信息。此外,有效负载只是base64编码。因此,它无法通过设计包含任何敏感信息。此外,它似乎是一种安全风险,因为JWT是不可变的,但根据响应机构对用户角色做出任何假设在我看来都是错误的。我可以拦截响应并愉快地让自己成为管理员,然后才能进入前端,我会被引导到管理员视图(当然,任何进一步的请求都会因为JWT而无效)。我有一个想法,可能会在应用程序中增加一些额外的安全性。我们的想法是,您无法对授权请求中的用户及其角色做出任何假设。你刚刚获得了JWT并且单独制作了#34; WhoAmI&#34;使用JWT向端点请求,返回用户名和角色。这样,前端可以将这些值与从授权服务器获得的值进行比较,并可以立即检测这些值是否已被篡改。如果我理解正确,那么授权服务器应该这样做 - 它应该委托访问。

我非常感谢您对此事的看法。

0 个答案:

没有答案