OAuth - 在同一客户端上组合设备流和客户端凭据流是否有意义?

OAuth - does it make sense to combine Device Flow and Client Credentials flows on same client?

我正在开发一个无浏览器的应用程序,它需要访问两个 API——一个应用程序 API(只读,例如远程配置)和一个用户 API(只读写,例如用户偏好)。

该应用程序在本地存储了客户端 ID 和机密,因此利用客户端凭据流来访问应用程序 API。 现在我需要用户能够访问用户 API,我想知道如何配置后端(在本例中使用 IdentityServer4)来执行此操作。 API 应该受到保护,以便只有经过身份验证的用户才能访问它,并且我计划阅读发送的声明以识别用户。

我应该扩展现有的客户端 ID 以也允许设备流授权类型,还是只为这个“仅限用户”流创建一个单独的客户端?

我是 OAuth 的新手,想确保我做的是正确的,这样一切都是安全的。

始终对不同的客户端连接使用不同的 OAuth 客户端,这会给您更多的控制权:

  • 访问令牌生命周期等规则可以根据需要进行不同的设置
  • 可以在不影响其他客户端的情况下禁用受感染的客户端(例如秘密被盗)
  • 指标和日志记录也会更有用

通常很容易通过管理在授权服务器中轻松配置多个客户端 UI。