grant_type=client_credentials 和 grant_type=身份验证流程中的密码之间的区别?

Difference between grant_type=client_credentials and grant_type=password in Authentication Flow?

我想了解 grant_type=client_credentialsgrant_type=passwordAuthenticationOAuth2 Flow 概念中的区别。

我正在关注以下网站:

我认为 grant_type=passwordnot secure 在 JavaScript 开发中使用 grant_type 的方法。但我还是想知道是否有人可以帮助我理解这个概念。

我还观察到 grant_type=client_credentials 不提供“refresh_token”,它只提供 access_token,而 grant_type=password 提供 access_tokenrefresh_token.

希望得到详细的解释。我正在使用 OAuth2 WSO2 API Manager 进行我的应用程序开发

资源所有者凭据授予(密码授予类型)

实施此授权后,客户端本身将要求用户提供用户名和密码(而不是重定向到 IdP 授权服务器进行身份验证),然后将这些与客户端自己的凭据一起发送到授权服务器.如果身份验证成功,则客户端将获得访问令牌。

这项资助适用于受信任的客户端,例如服务自己的移动客户端(例如 Spotify 的 iOS 应用程序)。您也可以在不容易实现授权代码的软件中使用它 - 例如,我们将此授权授予锁定到 OwnCloud 中,这样我们就可以从大学的 Active 中检索我们无法通过 LDAP 访问的用户的详细信息目录服务器。

客户端凭据授予

此授权类似于资源所有者凭据授权,只是仅使用客户端的凭据来验证对访问令牌的请求。同样,此授权应仅允许受信任的客户端使用。

此授权适用于 machine-to-machine 身份验证,例如用于在 API 上执行维护任务的 cron 作业。另一个例子是客户端向 API 发出不需要用户许可的请求。

当有人访问 University of Lincoln staff directory 上的员工页面时,该网站使用自己的访问令牌(使用此授权生成)来验证对 API 服务器的请求,以获取有关用于构建页面的员工的数据。当一名员工登录更新他们的个人资料时,他们自己的访问令牌将用于检索和更新他们的数据。因此,关注点分离很好,我们可以轻松地限制每种类型的访问令牌所具有的权限。