注册客户端时,客户端开发人员应该:
o指定客户端类型
但未指定如何定义可用的授权类型。
我无法理解如何为grants
定义可用的client
。客户可以使用所有拨款,几笔拨款或仅一笔拨款。
2.1. Client Types规范部分定义了confidential
(Web应用程序)和public
(基于用户代理的应用程序和本机应用程序)客户端类型。 Public
客户端无法保护任何客户端身份验证凭据,因此对于此类客户端必须仅提供implicit
授权,或者password
授予resource owner
可信客户端?但我没有找到这样的限制。
答案 0 :(得分:2)
为客户端提供哪些授权是由授权服务器做出的部署决策。原则上(按规范)对客户可以使用的授权类型没有限制。典型的工作方式是授权服务器的管理员注册客户端,然后分配可用的授权类型。正如您所建议的那样,这可能只是一笔赠款,几笔赠款或全部赠款(嗯,取决于客户机密的可用性,见下文)。
定义中的隐式授权只能由公共客户端使用,因为没有选项可以将自身作为协议流的一部分进行身份验证。然而,其他授权可以提供给公共客户端以及机密客户端,因为它们可以在有或没有客户机密的情况下使用,并且如上所述,这将是部署决策,以定义哪个客户可以使用哪个授权。
作为后者的一个示例:授权代码授权除了可用于机密客户端之外,还完全可用于公共客户端。公共客户端将以常规方式接收授权代码,并将其呈现给令牌端点,而不会将其自身身份验证为客户端的机密。因为它不会提供比Implicit grant更明显的安全性,但需要额外往返授权服务器,因此它没有被广泛部署,但肯定不会被禁止。
资源所有者密码凭据授权是可以由机密客户端和公共客户端使用的授权的另一个示例。客户端不会向令牌端点验证自身,只是传递资源所有者密码以获取访问令牌。