相关文章

更多

最近更新

更多

OAuth 2.0 两种客户端类型

2019-04-23 00:03|来源: 网路

客户端类型

OAuth 2.0客户端角色被细分为一系列类型和配置,本节将阐述这些类型和配置。

OAuth 2.0规范定义了两种客户端类型:

  • 保密的

  • 公有的

保密的客户端能够对外部保持客户端密码保密。该客户端密码是由授权服务器分配给客户端应用的。为了避免欺骗,该密码是授权服务器用来识别客户端的。例如一个保密的客户端可以是web应用,除了管理员,没有任何人能够访问服务器和看到该密码。

公有的客户端不能使客户端密码保密。比如移动手机应用或桌面应用会将密码嵌入在内部。这样的应用可能被破解,并且泄漏密码。这同于在用户的浏览器上运行的JavaScript应用。用户可以使用一个JavaScript调试器来寻找到应用程序,并查看客户端密码。

客户端配置

OAuth 2.0规范也提到了一系列客户端配置文件。这些配置文件是具体类型的应用程序,这可以是保密或公开的。这些配置文件有:

  • web应用

  • 用户代理

  • 原生

Web应用

Web应用是指运行在Web服务器内的应用。实际上,Web应用典型地由浏览器部分和服务端部分组成。如果Web应用需要访问资源服务器(如Facebook账号),然后客户端密码被保存在服务器上。因此密码是保密的。

这里阐释了一个保密的客户端应用:

保密的客户端:web应用

用户代理应用

用户代理应用比如运行在浏览器上的的JavaScript应用。浏览器是用户代理。用户代理应用可以保存在web服务器上,但应用程序只运行一次下载的用户代理。一个例子就像一个JavaScript游戏只能运行在浏览器里。

这里阐释了一个客户端用户代理应用:

公有客户端:用户代理应用

原生应用

原生应用比如桌面应用或移动手机应用。原生应用典型地被安装在用户计算机或设备(手机,平板等)上。因此客户端密码也被存储在用户计算机或设备上。

这里阐释了客户端原生应用:

公有客户端:本地应用

混合应用

有些应用是这些配置的混合使用。比如本地应用也可以有服务器部分,来做一些工作(如数据存储)。OAuth2.0规范没有提及这种混合型。然而,在大多数情况下,混合型将能够使用这些配置文件的认证模型。

相关问答

更多
  • 正如同一教程中的红色警告说明所解释的: 警告:请勿从Google Developers Console为您的游戏创建新的客户端ID。 如果这样做,Play游戏服务将不会将您的游戏设置与客户端ID相关联,并且这可能会在游戏过程中导致错误。 相反,在开发者控制台的游戏服务部分,转到2. Linked Apps然后选择Link another app并按照指示,给它一个名称,如“游戏名称调试”,并使用您的调试密钥SHA1(每隔一个字段应该与你的发布应用程序相同)。 As explained in the red ...
  • 我开始写你的问题的评论,但后来发现有太多的说法,所以这里是我对这个问题的看法。 是的,这是一个真正的可能性,有一些基于此的漏洞。 建议不要在你的应用程序中保持应用程序的秘密,甚至在分配的应用程序中也不应该使用这个标记。 现在你可能会问,但XYZ要求它工作。 在这种情况下,他们没有正确地执行规范,并且您应该不使用该服务(不太可能)或B尝试使用一些模糊的方法来保护令牌,从而难以找到或使用您的服务器作为代理。 例如,在Android的Facebook图书馆里有一些漏洞,它将漏洞记录到日志中,您可以在这里找到更多信 ...
  • 我也同意你的想法。 OAuth2规范没有对此采取对策。 但是那里的供应商为此提供了各种对策。 例如,用户仪表板可供用户查看当前持有授权的应用程序和设备。 然后用户可以撤销任何可疑应用程序。 I too agree with your thinking. The OAuth2 specification doesn't have a countermeasure for this. But the vendors out there provides various countermeasures for t ...
  • 重定向URL的目标是防止恶意网站的开发人员欺骗OAuth服务器生成为您准备的令牌并将其提供给他们。 潜在的漏洞是: 请求https://oauth.server.com/login?app_id=2&redirect_uri=https://malicious.com 用户登录后,OAuth服务器会生成令牌并重定向到https://malicious.com?token=xxx 如果上述流程有效,恶意服务器将获得一个有效令牌,然后可以使用该令牌与您的应用程序进行交互。 相反,当您注册应用程序时,他们会立即要 ...
  • Azure流量管理器在DNS级别运行,这意味着一旦服务将端点返回到DNS解析器(响应该解析器发送的DNS查询),它就不再处于循环中,并且任何通信都在客户端和服务器。 由于Azure Traffic Manager与客户端和服务器之间发生的事情无关,因此任何特定于应用程序的令牌切换和切换都不会受到流量管理器的控制 有关更多详细信息,请参阅https://azure.microsoft.com/en-us/documentation/articles/traffic-manager-how-traffic-ma ...
  • TL; DR - 您很可能错过了在请求OAuth2.0访问令牌时请求正确范围的步骤。 请查看Google Cloud Storage API 支持的范围 。 访问令牌通常在60分钟后到期,您将需要使用刷新令牌在到期时获取新的访问令牌。 有关详细信息,请阅读Google云端存储身份验证页面。 领域 授权是确定经过身份验证的标识对一组指定资源具有哪些权限的过程。 OAuth使用范围来确定是否授权经过身份验证的身份。 应用程序使用凭证(从以用户为中心或以服务器为中心的身份验证流程)与一个或多个范围一起请求来自Go ...
  • 是的,OAuth2.0规范指定您必须传递一些表单客户端凭据,以告知身份验证服务器您是合法的。 请查看https://tools.ietf.org/html/rfc6749#section-2.3 所以目的是, 只有有效的客户端才能与身份验证服务器通信 您可以根据机密或公共客户端类型自定义访问权限,并验证是否向其中一个有效客户端发出访问令牌。 当您的客户端凭据公开时,身份验证服务器可以轻松禁用指定oauth客户端,而不会阻止您的其他应用程序 Yes, OAuth2.0 spec specify you mus ...
  • 您收到的访问令牌不需要使用任何方法显式设置。 有一些方法可以获取用户的详细信息,其中此访问令牌应作为参数传递。 如您提供的文档中所述: // Try to get an access token (using the authorization code grant) $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // Optional: Now you have a t ...
  • OAuth 2.0规范以其客户端证书授予类型涵盖了此用例: 当客户端请求访问受其控制的受保护资源时,客户端可以仅使用其客户端凭证(或其他支持的身份验证方式)来请求访问令牌。 The OAuth 2.0 specification covers this use case with its Client Credentials grant type: The client can request an access token using only its client credentials (or oth ...
  • 似乎这是一个重复的问题。 “刷新令牌的想法是,如果访问令牌被泄露,因为它是短暂的,攻击者有一个有限的窗口可以滥用它。 刷新令牌(如果受到攻击)是无用的,因为除了刷新令牌之外,攻击者还需要客户端ID和机密才能获得访问令牌。“ 为什么OAuth v2同时具有访问权限和刷新令牌? Seems like this is a duplicate question. "The idea of refresh tokens is that if an access token is compromised, becaus ...