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

我想了解AuthenticationOAuth2 Flow概念中grant_type=client_credentialsgrant_type=password之间的区别。 我关注以下网站:

  • http://help.atavist.com/api:authentication
  • http://apiwiki.poken.com/authentication/oauth2

就JavaScript开发中使用gran_type ,我以not secure方式设定grant_type=password 。 但我还是有些人可以帮助理解这个概念。

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

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

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

实施此授权后,客户端本身将询问用户的用户名和密码(而不是重定向到IdP授权服务器进行身份validation),然后将这些授权服务器连同客户端自己的凭据一起发送给授权服务器。 如果身份validation成功,则将向客户端发出访问令牌。

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

客户端凭据授予

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

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

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