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

时间:2016-01-17 19:51:57

标签: java wso2esb wso2is wso2-am

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

我认为grant_type=passwordnot secure方式在JavaScript开发中使用gran_type。但是我还是有些人可以帮助理解这个概念。

我还注意到grant_type=client_credentials没有提供“refresh_token”,它只提供access_token,其中grant_type=password同时提供access_token和{{1} }}

希望得到详细解释。我正在使用refresh_token将OAuth2用于我的应用程序开发

1 个答案:

答案 0 :(得分:22)

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

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

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

客户端凭据授予

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

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

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