在OAuth 2.0资源所有者密码凭据授权过程中,可以向公共客户端提供刷新令牌吗



我的场景

我有以下软件:

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

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

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

身份验证详细信息

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

问题/困境/问题

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

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

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

RFC的10.4节是这样说的:

授权服务器可能会向web应用程序发布刷新令牌

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

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

相关内容

最新更新