客户端和用户代理之间的区别

Posted

技术标签:

【中文标题】客户端和用户代理之间的区别【英文标题】:Difference between Client and User-Agent 【发布时间】:2016-06-08 20:02:53 【问题描述】:

OAuth 2.0 定义中的 ClientUser-AgentResource Owner 有什么区别?

每个术语有哪些示例? (浏览器、用户、...)

【问题讨论】:

【参考方案1】:

用户代理是用户(资源所有者)与授权服务器通信的浏览器或移动应用程序。 客户端是要访问资源服务器上用户资源的应用代码。

现在客户端可以存在于服务器(如网络应用程序)或设备(移动应用程序)或浏览器(javascript 应用程序)中。 如果客户端位于服务器上,则它被视为机密客户端(可以保密)。如果它存在于设备或浏览器中,则它是一个公共客户端。

您拥有什么类型的客户端,决定使用哪个OAuth grants。在公共客户端上,您无法让客户端本身通过授权服务器进行身份验证(仅对用户进行身份验证),因此您无法从授权服务器获取刷新令牌。

【讨论】:

【参考方案2】:

用户代理是浏览器。

客户端是在最终用户端运行的代码,它可能在也可能不在浏览器中运行。客户端使用浏览器(用户代理)登录。这里的想法是用户应该使用他们的凭据信任浏览器,而他们不应该信任本机客户端代码。示例在最后。

资源所有者是授权应用程序从其帐户访问资源(数据)的用户。

示例:假设您的 ipad 上有一个幻灯片应用程序(客户端)想要访问您的 Flickr 照片。这个幻灯片应用程序是由 MysteriousAppDeveloper Inc. 开发的。如果该应用程序要求您(资源所有者)提供您的 Flickr 凭据以便它可以访问您的照片,那么作为一个安全用户,您不会这样做:您没有了解该应用程序可能会如何处理您的凭据。幸运的是,它并没有要求您提供凭据,而是将您信任的 ipad 浏览器(您的用户代理)带到 Flickr。您通过浏览器登录到 flickr,然后幻灯片 ipad 应用程序请求访问您的 Flickr 照片。您授予访问权限,然后该应用程序可以显示您的图像(包括具有访问限制的图像)的幻灯片,而无需访问您的密码。知道幻灯片应用程序没有获取您的凭据并对它们做一些顽皮的事情,您晚上睡得很好。

在我看来,Oauth 规范的动机并不好。该协议的重点是用户不应使用其凭据信任任意应用程序。相反,您应该将信任限制在每个人都依赖的浏览器等应用程序上。该协议要求用户理解这一点才能有效。

【讨论】:

以上是关于客户端和用户代理之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

nginx正向代理和反向代理区别和好处

http代理和SOCKS5代理的区别是啥

适配器模式和代理模式的区别

rpc 客户端(代理)用户名和节点身份之间的关系

服务器正向代理和反向代理

nginx配置学习总结