我正在阅读有关OAuth 2的文章,我找到了下面这篇文章,它有助于决定我应该实现哪个授权。
https://oauth2.thephpleague.com/authorization-server/which-grant/
我对链接中描述的流程图有一些问题。
1)当访问令牌所有者是机器时?如果访问令牌所有者是在服务器上运行的cron作业,我可以说访问令牌所有者是一台机器吗?
2)什么时候访问令牌是用户?如果客户端用户是人类(最终用户),我可以说访问令牌所有者是用户吗?
3)什么是Web App?应用程序是否在服务器上运行并可通过web客户端访问?例如,PHP应用程序。
4)什么是基于用户代理的App?使用JS开发的应用程序是否类似于Angular应用程序?
谢谢。
发布于 2018-07-20 09:13:20
我浏览了上面提到的文档,下面我尝试将中定义的原始授权类型与之对应起来。
1)当访问令牌所有者是一台机器时?如果访问令牌所有者是在服务器上运行的cron作业,我可以说访问令牌所有者是一台机器吗?
在这里,令牌不一定颁发给机器,也不一定属于机器。它可以是在没有终端用户交互但需要OAuth 2.0令牌的机器上运行的应用程序。正如您所说的,这可能是一个具有OAuth 2.0客户端凭据的cron作业。此客户端必须是机密客户端,这意味着它必须具有客户端id和密码。有关更多信息,请参阅here
2)什么时候访问令牌是用户?如果客户端用户是人类(最终用户),我可以说访问令牌所有者是用户吗?
是的这是正确的。在这里,访问令牌归最终用户所有。并且最终用户通过允许客户端使用访问令牌来授予客户端应用访问OAuth 2.0资源的权限。
3)什么是网络应用程序?应用程序是否在服务器上运行并可通过web客户端访问?例如,一个PHP应用程序。
根据图表透视图,web应用程序可以利用用户代理(浏览器)来完成授权请求,并具有能够获得令牌的后端。重点放在后端令牌请求上,因为并非所有应用程序都可以执行此请求。例如,没有后端的单页面应用程序不能执行此调用。因此,如果PHP应用程序可以执行后端调用,那么它就是一个Web应用程序。流是授权码流。
4)什么是基于用户代理的应用程序?使用JS开发的应用程序是否类似于Angular应用程序?
是的这是正确的。它没有后端(它可能会消耗一个后端),但依赖于JS并在浏览器上运行。因此,它将主要使用隐式流(但如果最终用户信任,则最终用户密码授予,如下所示)
https://stackoverflow.com/questions/51430778
复制相似问题