Vit*_*lii 3 signature digital-signature jwt
在Auth0中,有两种用于jwt令牌签名的算法:RS256和HS256。
RS256是一种非对称算法,这意味着有两个密钥:一个公共密钥和一个私有密钥(秘密)。Auth0具有用于生成签名的密钥,而JWT的使用者具有用于验证签名的公共密钥。
HS256是一种对称算法,这意味着只有一个秘密密钥,在两方之间共享。相同的密钥可用于生成签名并进行验证。为了使密钥保持机密,应格外小心。
他们在文档中描述了的优势RS256。有人可以向我解释使用HS256算法的优点,我现在看不到它们,但是我很确定有一些优点。
您已要求HS256优于RS256的优点。
让我们快速看一下其中的每个:
感觉到的便利/理解该怎么做 -确实,将clientId和clientSecret复制到应用程序的配置中既容易理解,又可以快速完成。但是,如今的库也使RS256的设置也很简单-库/框架通常会提供检索公钥并使用与HS256类似的配置进行验证的功能,而无需提供秘密。如果不熟悉,请参见一些使用您的技术选择的Auth0示例,以了解其知识。
性能 -是的,这里的HS256可能有一个利基市场。除了缓存公共证书等(有关使用node.js的缓存示例,请参见此处和此处),具有对称密钥并在应用程序中本地使用而不需要任何网络请求等的情况下,事实证明效率更高。那就是说,大多数好的JWKS库/ SDK都可以开箱即用地处理缓存选项。
但是,您真正要问的问题是,这些好处(性能优化?)是否大于缺点(当然从安全角度来看)。
查看此答案,如果仍然不确定,请随时在此处(Auth0社区网站)发表评论。对于新的客户端,Auth0默认已切换为使用RS256,并且其Resource API也默认为RS256。
RS256的一个主要优点是,它使大多数选择HS256的争论胜于其他事情,这很简单,那就是不需要与客户端应用程序一起存储(共置)机密-私钥仅由授权服务器(Auth0等)知道,并且秘密不能泄露。仅此一点就可以告诉您为什么在大多数情况下RS256绝对是更好的选择。
机密客户端与公共客户端 -如果您的客户端被视为机密客户端,则您甚至应该考虑HS256 。由于机密客户端能够保存机密,因此您可以选择以两种方式之一向他们颁发ID令牌,这些令牌已通过以下两种方式进行签名-对于非机密客户端,您绝对不应该使用HS256,因为根据定义,客户端不能对机密保密。
还有其他一些考虑因素也会使HS256成为较差的选择,例如,如果存在签名密钥翻转,则需要使用给定的客户端配置手动更新所有应用程序。
| 归档时间: |
|
| 查看次数: |
1162 次 |
| 最近记录: |