无需请求用户授权的 OAuth 流程

OAuth flow without asking user for authorization

我正在考虑使用 OAuth 来授予应用程序对用户资源的访问权限。一切都在封闭的公司环境中进行。

我想到的第一个流程是授权代码流程,一切看起来都符合我的需要,但我不想要求用户授权访问,因为它是公司内部的应用程序和帐户,用户没有理由这样做不授予它。我想要求用户输入登录名和密码,返回带有授权码的应用程序,并使用此授权码、客户端 ID 和客户端密码请求资源访问令牌。 OAuth中是否有类似的描述?或者删除我要求用户授权的步骤会破坏 OAuth,而我的实现看起来就像 OAuth?

我知道有客户端凭据流,但我必须向应用程序授予对每个用户资源的访问权,对吗?还是我遗漏了什么?

OAuth2 的真正设计目的是允许用户(资源所有者)授予第三方客户端对其资源的访问权限。对于这些用例,给予同意是有道理的。

现在很多授权服务器允许您配置是否显示同意页面或允许管理员同意所有用户的申请(admin consent)。所以这在某种程度上取决于您使用的授权服务器。

客户端凭据流使客户端本身可以访问 API(资源服务器)上的资源。 API 不知道哪个用户正在访问资源,如果访问权限取决于用户是谁,例如当用户只能访问他们自己的资源或他们的访问级别取决于他们是谁时,这将不起作用是。