使用RSA256(非对称)签名JWT时,甚至是必须使用共享密钥吗?

时间:2017-08-24 05:13:50

标签: oauth-2.0 identityserver3 openid-connect identityserver4

人们经常会读到ResourceOwnerCredentials Flow是不好的,因为不可信的客户端(lika是Javascript或移动应用程序)可能没有密钥。

如果令牌是非对称签名并且可以由客户端使用OAuth 2.0服务器提供的公钥JWK(Json Web Key)验证,这是否有效?

1 个答案:

答案 0 :(得分:1)

您误解了“资源所有者密码凭据授权”(link to spec.)

这个流程的作用是,替换资源所有者(如果是一个人,它将是最终用户)凭证与授权代码。正如规范所述,它可以用于替换遗留系统,例如使用基本认证。要做到这一点,应该在客户和资源所有者之间建立信任。找到了一篇很好的文章,您可以在此link

上阅读更多内容

另一方面,客户端凭证授权是一项授权,要求客户获取和维护(link to spec.)。此赠款仅适用于机密客户

  

客户端凭据授权类型必须仅由机密使用      客户端。

我相信你对两种不同的授权类型感到困惑。正如您已经看到的,移动应用程序和JavaScript应用程序是公共客户端。因此,客户端凭据授权不能用于它们。

此外,一旦确实可以使用公钥验证令牌,但要做到这一点,应该通过完成有效流程来获取令牌。

对于机密客户端,共享密钥可用于加密令牌。但是,对于公共客户来说,这是无法做到的,因为他们无法保持共享秘密。

无论如何,这里是使用客户端身份验证的用例(如规范中所述:Client authentication

  
      
  • 强制执行刷新令牌和授权码的绑定     他们被发给的客户。客户端验证至关重要     授权代码传输到重定向时     不安全通道上的端点或重定向URI具有的端点     没有完整注册。

  •   
  • 通过禁用客户端或从受感染的客户端恢复     更改其凭据,从而防止攻击者滥用     被盗的刷新令牌。更改一组客户端     凭证远远快于撤销整套凭证     刷新令牌。

  •   
  • 实施身份验证管理最佳实践     需要定期凭证轮换。旋转一整套     刷新令牌可能具有挑战性,而单个轮换     一组客户端凭据非常容易。
  •   

事实上,机密客户端允许您通过更改共享密钥来灵活地更改客户端身份验证