首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Web服务之间共享JJWT签名

在Web服务之间共享JJWT签名
EN

Stack Overflow用户
提问于 2017-09-28 05:37:26
回答 1查看 78关注 0票数 0

我已经成功地将JJWT设置为在一系列web服务的身份验证过程中使用。问题是它们是在一个web服务中创建的,但在多个服务中进行身份验证。如何在确保所有web服务都使用相同的签名来验证传入的JWT的同时,成功且安全地使用签名?

代码语言:javascript
复制
// We need a signing key, so we'll create one just for this example. Usually
// the key would be read from your application configuration instead.
Key key = MacProvider.generateKey();

String compactJws = Jwts.builder()
  .setSubject("Joe")
  .signWith(SignatureAlgorithm.HS512, key)
  .compact();

我知道我可以使用普通的旧字符串来.signWith(Algorithm,String),但是我已经意识到使用标准的Java (字面意思)是不够安全的。我使用的内容类似于:

代码语言:javascript
复制
String compactJws = Jwts.builder()
  .setSubject("Joe")
  .signWith(SignatureAlgorithm.HS512, "shared complex passphrase")
  .compact();
EN

回答 1

Stack Overflow用户

发布于 2017-09-29 14:06:05

根据RFC 7518 - JSON Web Algorithms (JWA):

此算法必须使用与散列输出相同大小的密钥(例如,256位代表"HS256")或更大。(此要求基于NISTSP800-117 (sic) [NIST.800-107]的第5.3.4节( HMAC密钥的安全效果),其中规定有效安全强度为密钥安全强度的最小值和内部散列值大小的两倍。)

对于HS512,必须使用至少512位的密钥。

密钥需要随机选择。您可以使用MacProvider.generateKey();或其他随机生成器生成密钥,并将其分发到您的服务器(例如,以base64编码)

另一种方法是使用RSA密钥对。您使用私钥对令牌进行签名,使用公钥进行验证。所有服务都可以安全地发布和使用公钥

另请参阅https://security.stackexchange.com/questions/95972/what-are-requirements-for-hmac-secret-key

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

https://stackoverflow.com/questions/46457612

复制
相关文章

相似问题

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