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

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

我关注以下网站:

我推测这是在JavaScript开发中使用的方式。但我仍然想知道是否有人可以帮助我理解这个概念。grant_type=passwordnot securegrant_type

我还观察到,它不提供“”,它只提供和.grant_type=client_credentialsrefresh_tokenaccess_tokengrant_type=passwordaccess_tokenrefresh_token

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


答案 1

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

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

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

客户端凭据授予

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

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

当有人访问林肯大学员工目录中的工作人员页面时,网站会使用自己的访问令牌(使用此授权生成的)来验证对 API 服务器的请求,以获取用于构建页面的员工的数据。当员工登录以更新其个人资料时,但是他们自己的访问令牌用于检索和更新其数据。因此,关注点有很好的分离,我们可以轻松地限制每种类型的访问令牌具有的权限。


答案 2

推荐