OAuth 2.0 定义中的Client
,User-Agent
和Resource Owner
有什么区别?
每个学期有哪些示例? (浏览器,用户,......)
答案 0 :(得分:20)
用户代理是浏览器或移动应用程序,用户(资源所有者)通过该应用程序与授权服务器进行通信。 客户端是想要访问资源服务器上用户资源的应用程序代码。
现在,客户端可以在服务器(如Web应用程序)或设备(移动应用程序)或浏览器(JavaScript应用程序)中运行。 如果客户端存在于服务器上,则它被视为机密客户端(可以保密)。如果它存在于设备或浏览器中,则它是公共客户端。
您拥有哪种类型的客户端,确定使用哪个OAuth grants。在公共客户端上,您不能让客户端本身对授权服务器进行身份验证(仅对用户进行身份验证),因此您无法从授权服务器获取刷新令牌。
答案 1 :(得分:11)
用户代理是浏览器。
客户端是在最终用户端运行的代码,可能在浏览器中运行,也可能不在运行中运行。客户端使用浏览器(用户代理)登录。这里的想法是用户应该信任浏览器的凭据,而他们不应该信任本机客户端代码。最后的例子。
资源所有者是授权应用程序从其帐户访问资源(数据)的用户。
示例:假设您的ipad上有一个幻灯片应用程序(客户端),想要访问您的Flickr照片。这个幻灯片应用程序是由MysteriousAppDeveloper公司开发的。如果该应用程序要求您(资源所有者)提供您的Flickr凭据以便它可以访问您的照片,那么作为安全方面的用户,您将不会这样做:您没有了解该应用可能会对您的凭据做什么。幸运的是,它不是要求您提供凭据,而是提供您信任的ipad浏览器(您的用户代理)登录Flickr。您通过浏览器登录flickr,然后幻灯片显示ipad应用程序请求访问您的Flickr照片。您授予访问权限,然后该应用程序可以显示图像的幻灯片(包括具有访问限制的图像),而无需访问您的密码。你晚上睡不好觉得幻灯片应用程序没有拿走你的凭据,并且对他们采取顽皮的行为。
在我看来,Oauth规范没有很好的动力。协议的重点是用户不应该信任任意应用程序的凭据。相反,你应该限制你对所有人都依赖的浏览器这样的应用程序的信任。该协议要求用户理解这一点是有效的。