2. ClientRegistration 客户注册
发起协议之前,客户端注册授权服务器。在客户端注册透过何种途径与授
服务器超出此范围规范,但通常涉及与最终用户互动HTML登记表。
客户端注册不需要客户端和授权服务器之间的直接互动 。当支持授权服务器时,注册可以依靠其他手段 建立信任和获取所需的客户端属性(例如:重定向的URI,客户端类型)。例如,可以注册使用自发行或第三方发行的主张来实现,或 授权服务器执行客户端发现使用信任的渠道。
2.1 客户端类型
OAuth的定义了两种客户端类型,在授权服务器下根据自己的能力验证安全性(即保持他们的客户端凭据的保密的能力):
保密性:
客户能够保持其凭据机密性(如客户端一个安全的服务器与实施限制访问的客户端凭据),或使用其他手段保证客户端身份验证安全的能力。
公开性:
客户无法维持其保密凭据(如客户资源所有者的设备上执行如安装本地应用程序或基于Web浏览器应用程序),无法通过任何其他手段确保客户端身份验证安全。
客户类型的制定是基于授权服务器安全认证的定义和它可接受的风险级别的客户端凭据。
此规范已经围绕以下客户端设计
配置文件:
Web应用程序
Web应用程序是一个网络服务器上运行的机密的客户端。资源所有者通过一个HTML用户界面呈现在资源所有者的设备上的用户代理来访问客户端。客户端凭据,以及任何分发给客户端的访问令牌被存储在Web服务器上,并没有暴露或由资源的所有者访问。
用户代理为基础的应用
用户代理为基础的应用是一个公共的客户端,客户端代码是从Web服务器下载,并在资源所有者的设备(如Web浏览器)上的用户代理执行。“协议”的相关数据和凭证能方便(而且往往可见)资源的所有者访问。 由于这些应用程序驻留在用户代理上,他们可以在请求权限时无缝使用用户代理能力。
本机应用程序
本机应用程序是在公共的客户端上安装和资源所有者的设备上执行的。 “协议”的相关数据和凭据可被资源的所有者访问。据推测,任何包含在应用程序内的客户端身份验证凭据可以被提取。另一方面,动态分发的凭据,例如访问令牌或刷新令牌可以得到一个可接受的水平保护。在最低限度,隔离这些凭据与该应用程序可能交互的敌对服务器之外。在某些平台,这些凭据可能被保护,使之与驻留在同一设备上的其它应用程序隔离。
2.2 客户端标识符
授权服务器分发给登记客户端一个客户标识符 —— 一个唯一的字符串代表由客户提供的登记信息。客户端标识符是不是公开的秘密,它暴露给资源所有者,绝不能单独适用于客户端身份验证。
2.3 客户端身份验证
如果客户端类型是保密的,客户端和授权服务器建立适合授权服务器的安全
需求的一个客户端验证方法。授权服务器可以接受任何形式的客户端认证,
满足其安全要求。
保密客户通常使用授权服务器发出(或建立)一套用于授权的客户凭证(如
密码,公钥/私钥对)的客户端凭据。
授权服务器不应该对客户端的类型做假设,或者接受没有与客户或者开发者建立信任所提供的类型信息。授权服务器可能用公共客户建立一个客户授权方法。但是,授权服务器决不能为了认证客户的目的而依靠公共客户端认证。
客户端不得使用多个验证方法在每个请求。
2.3.1 客户端的密码
私有一个客户端密码的客户端可以使用HTTP基本验证计划。客户端标识符用作用户名,客户端的密码是用来作为密码。
例如(额外的换行符仅用于显示目的):
授权:基本czZCaGRSa3F0MzpnWDFmQmF0M2JW
另外,授权服务器可能允许客户端凭证包括在请求体使用如下的参数:
Client_id
REQUIRED. 在登记过程中客户端标示符分发给客户端
Client-secret
REQUIRED. 客户 secret。客户端可以省略参数如果客户secret是空字符串。
客户端凭证包括在请求正文中使用两个客参数不被推荐,并应限于客户端无法直接利用HTTP基本身份验证计划(或其他基于密码的HTTP认证方案)。
例如,请求刷新一个访问令牌(第6章)使用正文参数(额外的换行符仅用于显示目的):
POST /token HTTP/1.1
Host:server.example.com
Content-Type:application/x-www-form-urlencoded;charset=UTF-8
grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA
&client_id=s6BhdRkqt3&client_secret=7Fjfp0ZBr1KtDRbnfVdmIw
当将请求发送到令牌端点时,授权服务器必须要求使用传输层安全机制,这样请求使用此认证方法的导致明文凭据的传输。
由于这个客户端的身份验证方法包括密码,授权服务器必须保护任何终端利用它对抗端点蛮力攻击。
2.3.2 其他身份验证方法
授权服务器可能支持任何合适的HTTP认证计划匹配其安全性要求。当
用其他的身份验证方法,授权服务器必须在客户端标识符(登
记备案)和身份验证方案之间定义一个映射。
2.4 未注册的客户端
本规范不排除使用未经注册的客户。 但是,这样的客户使用超出此范围
规范,并且需要额外的安全分析和审查其互操作性的影响。