gpt4 book ai didi

jwt - RS256 与 HS256 : What's the difference?

转载 作者:行者123 更新时间:2023-12-03 04:08:21 24 4
gpt4 key购买 nike

我正在使用 Auth0 来处理我的网络应用程序中的身份验证。我正在使用 ASP.NET Core v1.0.0 和 Angular 2 rc5,一般来说我对身份验证/安全性了解不多。

Auth0 docs for ASP.NET Core Web Api ,JWT 算法有两种选择:RS256 和 HS256。这可能是一个愚蠢的问题,但是:

RS256 和 HS256 有什么区别?有哪些用例(如果适用)?

最佳答案

这两个选择都指身份提供商使用什么算法来签署 JWT。签名是一种加密操作,可生成“签名”(JWT 的一部分), token 接收者可以验证该“签名”以确保 token 未被篡改。

  • RS256(带有 SHA-256 的 RSA 签名)是 asymmetric algorithm ,并且它使用公钥/私钥对:身份提供者有一个用于生成签名的私钥,而 JWT 的使用者则获得一个公钥来验证签名。由于公钥(与私钥不同)不需要保证安全,因此大多数身份提供商都可以让消费者轻松获取和使用公钥(通常通过元数据 URL)。

  • 另一方面,HS256( HMAC 使用 SHA-256)涉及哈希函数和一个( secret ) key 的组合,该 key 在双方之间共享,用于生成将服务的哈希值作为签名。由于使用相同的 key 来生成签名和验证签名,因此必须小心确保 key 不被泄露。

如果您要开发使用 JWT 的应用程序,您可以安全地使用 HS256,因为您可以控制谁使用 key 。另一方面,如果您无法控制客户端,或者无法保护 key ,则 RS256 将更适合,因为消费者只需要知道公共(public)(共享) key 。

由于公钥通常可从元数据端点获取,因此可以对客户端进行编程以自动检索公钥。如果是这种情况(与 .Net Core 库一样),您在配置方面的工作量将减少(库将从服务器获取公钥)。另一方面,对称 key 需要在带外交换(确保安全的通信 channel ),并在签名 key 翻转时手动更新。

Auth0 为 OIDC、SAML 和 WS-Fed 协议(protocol)提供元数据端点,可以在其中检索公钥。您可以在客户端的“高级设置”下看到这些端点。

例如,OIDC 元数据端点采用 https://{account domain}/.well-known/openid-configuration 的形式。如果您浏览到该 URL,您将看到一个 JSON 对象,其中包含对 https://{account domain}/.well-known/jwks.json 的引用,其中包含公钥(或 key ) )的帐户,表示为 JSON Web Key Set .

如果您查看 RS256 示例,您会发现不需要在任何地方配置公钥:框架会自动检索它。

关于jwt - RS256 与 HS256 : What's the difference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com