7.3. 冒充客户端
如果机密客户端的凭据被窃取,那么恶意客户端就可以冒充该客户端,获取对受保护资源的访问权限。
授权服务器应该强制执行明确的资源所有者认证,并且为其提供客户端信息,以及请求的授权范围和寿命。资源所有者可以根据当前客户端的情况审查这些信息,并授权或拒绝该请求。
授权服务器不应该在未认证客户端,或者未采取其它措施以确保重复请求来自原客户端而非冒充者的情况下,(在资源所有者没有主动交互时)自动处理重复的授权请求。
7.3.1. 冒充原生应用
如上所述,授权服务器不应该在未经用户同意或互动的情况下,自动处理授权请求,除非能确保客户端的身份。这也包括了用户以前批准过某个客户端 ID 的授权请求的情况——除非能证明客户端的身份,否则就应该像以前没有批准过请求一样,处理该请求。
授权服务器可以接受声明的 https 方案重定向等措施,作为身份证明。某些操作系统可能会提供其他平台特有的身份证明功能,这些功能可以被酌情接受。
7.3.2. 访问令牌的权限限制
客户端应该申请最小范围的访问令牌。授权服务器在选择如何顺应申请的范围时,应该考虑客户端身份,并且可以签发范围小于申请范围的访问令牌。
与访问令牌关联的权限应该被限制在特定应用或用例所需的最小范围内。这样可以防止客户端超出资源所有者授权的权限。它还能防止用户超出各自安全策略授权的权限。权限限制还有助于减少访问令牌泄漏的影响。
特别是,访问令牌应该被限制在特定的资源服务器上(受众限制),最好是单台资源服务器。为了实现这一点,授权服务器将访问令牌与特定的资源服务器关联起来,每台资源服务器都有义务验证每个请求,以确定随该请求发送的访问令牌是否用于该台特定的资源服务器。如果不是,资源服务器必须拒绝为相应请求提供服务。客户端和授权服务器可以利用本文档和 [RFC8707] 分别规定的 scope 或 resource 参数,来确定要访问的资源服务器。