提问者:小点点

在OAuth 2.0资源所有者密码凭据授权授予期间是否可以向公共客户端提供刷新令牌?


我有以下软件:

  • 具有Windows服务的专用服务器,该服务公开具有OAuth 2.0授权的REST API。
  • 类型1客户端:使用REST API的不同服务器上的服务。只有组织管理员才能访问这些服务器。
  • 类型2客户端:调用REST API的桌面应用程序。

根据RFC 6749,1类客户端是机密的,2类客户端是公开的。

在第一版中,已决定对这两种类型的客户机使用资源所有者密码凭据授权授权。对于类型1客户端,这似乎是可以的,因为它们能够保持其凭证的机密性,并且不能使用授权码授权(没有交互用户)。

授权详细信息

  • 授权endpoint向类型1和类型2客户端返回访问令牌和刷新令牌
  • 所有客户端(类型1和类型2)都可以使用刷新令牌来获取新的访问和刷新令牌

公共客户端没有机密。这意味着,如果有人掌握了刷新令牌和客户端 ID(最后一个不安全),那么他可以使用它来获取新的访问令牌并使用 REST API。

  1. 从安全角度来看,可以为类型2客户端(公共)生成刷新令牌吗?或者,如果使用资源所有者密码凭据授权授予,我不得将刷新令牌与类型2客户端的访问令牌一起返回。
  2. 类型2客户端,它们真的是公开的吗?我可以将桌面客户端视为机密并为它们生成机密吗?桌面应用程序将从配置文件中读取客户端机密(它将使用AES 256加密),该文件由管理员分发给组织网络内的用户机器?

共1个答案

匿名用户

我知道这已经很晚了,但是的,您可以向公共客户端发出刷新令牌。

RFC第10.4节是这样说的:

授权服务器可以向web应用发布刷新令牌

客户端和本地应用程序客户端。

有许多安全隐患,所以你应该仔细阅读,但是规范中没有完全禁止这样做。