【问题标题】:Select the correct grant type选择正确的授权类型
【发布时间】:2018-12-28 01:42:56
【问题描述】:

我正在阅读有关 OAuth 2 的信息,并发现以下文章有助于决定我应该实施哪个授权。

https://oauth2.thephpleague.com/authorization-server/which-grant/

我对链接中描述的流程图有一些疑问。

1) 当访问令牌所有者是机器时? 如果访问令牌所有者是在服务器中运行的 cron 作业,我可以说访问令牌所有者是一台机器吗?

2) 什么时候访问令牌是用户? 如果客户端用户是人类(最终用户),我可以说访问令牌所有者是用户吗?

3) Web App 到底是什么?应用程序是否在服务器上运行并通过 Web 客户端访问?例如,一个 PHP 应用程序。

4) 究竟什么是基于用户代理的应用程序?使用 JS 开发的应用程序是否像 Angular 应用程序一样?

谢谢。

【问题讨论】:

    标签: oauth-2.0


    【解决方案1】:

    我浏览了上述文档,下面我尝试将 OAuth 2.0 specification 中定义的原始授权类型映射到它。

    1) 当访问令牌所有者是机器时?如果访问令牌所有者是在服务器中运行的 cron 作业,我可以说访问令牌所有者是一台机器吗?

    这里,令牌不一定颁发给机器,也不属于机器。它可能是在没有最终用户交互但需要 OAuth 2.0 令牌的机器上运行的应用程序。正如您所说,这可能是使用 OAuth 2.0 客户端凭据的 cron 作业。此客户端必须是机密客户端,这意味着它必须具有客户端 ID 和密码。更多内容可以阅读here

    2) 什么时候访问令牌是用户?如果客户端用户是人类(最终用户),我可以说访问令牌所有者是用户吗?

    是的,这是正确的。此处访问令牌归最终用户所有。最终用户通过让客户端使用访问令牌来授予客户端应用程序访问 OAuth 2.0 资源的权限。

    3) Web App 到底是什么?应用程序是否在服务器上运行并通过 Web 客户端访问?例如,PHP 应用程序。

    从图表的角度来看,Web 应用程序是一种可以利用用户代理(浏览器)完成授权请求并具有能够获取令牌的后端的应用程序。重点是后端令牌请求,因为并非所有应用程序都可以执行此操作。例如,没有后端的单页应用程序无法执行此调用。因此,如果 PHP 应用程序可以执行后端调用,那么是的,它是一个 Web 应用程序。流程为授权码流程。

    4) 究竟什么是基于用户代理的应用程序?使用 JS 开发的应用程序是否像 Angular 应用程序一样?

    是的,这是正确的。它没有后端(它可能会消耗一个),但依赖于 JS 并在浏览器上运行。所以它将主要使用隐式流(但如果最终用户信任,则最终用户密码授予如图所示)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-07
      • 2019-05-02
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      相关资源
      最近更新 更多