作者:Jakob Jenkov 译者:林浩 校对:郭蕾
OAuth 2.0客户端角色被细分为一系列类型和配置,本节将阐述这些类型和配置。
OAuth 2.0规范定义了两种客户端类型:
- 保密的
- 公有的
保密的客户端能够对外部保持客户端密码保密。该客户端密码是由授权服务器分配给客户端应用的。为了避免欺骗,该密码是授权服务器用来识别客户端的。例如一个保密的客户端可以是web应用,除了管理员,没有任何人能够访问服务器和看到该密码。
公有的客户端不能使客户端密码保密。比如移动手机应用或桌面应用会将密码嵌入在内部。这样的应用可能被破解,并且泄漏密码。这同于在用户的浏览器上运行的JavaScript应用。用户可以使用一个JavaScript调试器来寻找到应用程序,并查看客户端密码。
客户端配置
OAuth 2.0规范也提到了一系列客户端配置文件。这些配置文件是具体类型的应用程序,这可以是保密或公开的。这些配置文件有:
- web应用
- 用户代理
- 原生
Web应用
Web应用是指运行在Web服务器内的应用。实际上,Web应用典型地由浏览器部分和服务端部分组成。如果Web应用需要访问资源服务器(如Facebook账号),然后客户端密码被保存在服务器上。因此密码是保密的。
这里阐释了一个保密的客户端应用:
![](https://i-blog.csdnimg.cn/blog_migrate/6acb8485a52a48088faaa4aeb1c94e6b.png)
保密的客户端:web应用
用户代理应用
用户代理应用比如运行在浏览器上的的JavaScript应用。浏览器是用户代理。用户代理应用可以保存在web服务器上,但应用程序只运行一次下载的用户代理。一个例子就像一个JavaScript游戏只能运行在浏览器里。
这里阐释了一个客户端用户代理应用:
![](https://i-blog.csdnimg.cn/blog_migrate/f166095787871ab799631c2818394078.png)
公有客户端:用户代理应用
原生应用
原生应用比如桌面应用或移动手机应用。原生应用典型地被安装在用户计算机或设备(手机,平板等)上。因此客户端密码也被存储在用户计算机或设备上。
这里阐释了客户端原生应用:
![](https://i-blog.csdnimg.cn/blog_migrate/50781e24b32e6363462ad2a086982376.png)
公有客户端:本地应用
混合应用
有些应用是这些配置的混合使用。比如本地应用也可以有服务器部分,来做一些工作(如数据存储)。OAuth2.0规范没有提及这种混合型。然而,在大多数情况下,混合型将能够使用这些配置文件的认证模型。