OAuth教程--术语参考
本文是oauth.com上的教程的翻译。(原文地址)
角色
OAuth定义了四个角色:
- 资源所有者(用户)
- 资源服务器(API)
- 授权服务器(可以是与API相同的服务器)
- 客户端(第三方应用)
用户
OAuth 2.0规范将用户称为“资源所有者”。资源所有者是能够允许访问其部分帐户的人员。在这种情况下,资源可以是数据(照片,文档,联系人),服务(发布博客条目,转移资金)或任何其他需要访问限制的资源。任何想要代表用户行事的系统必须首先获得他们的许可。
API
规范指的是您通常认为的主要API作为“资源服务器”。资源服务器是包含用户信息的服务器,用于第三方应用程序的访问。资源服务器必须能够接受并验证访问令牌,并在用户允许的情况下授予请求。资源服务器不一定需要了解第三方的应用程序。
授权服务器
授权服务器是用户在请求访问其帐户时与之交互的内容。这是显示OAuth提示的服务器,以及用户批准或拒绝访问请求的位置。授权服务器还负责在用户授权应用程序后授予访问令牌。因此,授权服务器通常具有两个主URL,一个用于授权请求,一个用于用于授予访问令牌的应用程序。这些通常是这样的:
https://authorization-server.com/authorize
https://authorization-server.com/token
客户端
客户端是试图代表用户行动或访问用户资源的应用程序。在客户端可以访问用户的帐户之前,它需要获得许可。客户端通过将用户引导至授权服务器或通过直接与授权服务器断言权限,来实现无需用户交互来获得许可。
私密客户端(Confidential Clients)
私密客户端是能够保持client_secret(客户端密钥)机密性的客户端。通常,这些客户端只是在开发人员控制下的服务器上运行的应用程序,用户无法访问源代码。这些类型的应用程序通常称为“Web应用程序”,因为它们通常由Web浏览器访问。
公共客户端(Public Clients)
公共客户端无法保持client_secret(客户端密钥)的机密性,因此密钥不会用于这些应用程序。移动应用和Javascript应用都被视为公共客户端。由于运行Javascript应用程序的任何人都可以轻松查看应用程序的源代码,因此可以轻松地看到密钥。对于移动应用程序,可以反编译二进制文件以提取字符串。
访问令牌(Access Token)
访问令牌是向API发出经过身份验证的请求时使用的字符串。令牌表示用户已授权第三方应用程序访问该用户的帐户。令牌具有相应的访问持续时间,范围和可能的其他信息。令牌可以是自解析的(服务器可以从令牌字符串中检索所有必要的信息),也可以是数据库中的密钥。
刷新令牌(Refresh Token)
刷新令牌是一个字符串,用于在访问令牌过期时获取新的访问令牌。并非所有API都使用刷新令牌。
授权码(Authorization Code)
授权码是在服务器端应用程序流程中使用的中间令牌,更详细地描述服务器端应用程序。授权步骤后,授权码返回给客户端,然后客户端将其交换为访问令牌。