我一直在浏览一些关于OAuth2机密和非机密授权流程的文件,即this和RFC。
据我了解,非机密流程不需要client_secret,或者更好的是,您实际上不应该使用client_secret,因为您假设任何人都可以与client_id一起掌握它,从而更容易摆姿势作为客户端应用程序。
所以为了实现非机密流,客户端必须首先使用服务器下发的client_id和客户端生成的状态。然后客户端应该使用服务器返回的代码和相同的状态值。还必须向服务器注册redirect_uri 。
AFAIK(据我所知)这就是区分机密流和非机密流的原因:机密流需要client_secret而非机密流不需要。此外,这就是非机密流程的定义,即缺少client_secret。我的假设是否正确?
第 2.3 节似乎没有具体说明这一点。
相关 Q,来自第 4.1.3 节:
如果客户端类型是机密的或客户端已获得客户端凭据(或分配了其他身份验证要求),则客户端必须向授权服务器进行身份验证,如 第 3.2.1 节所述。
“其他身份验证要求”到底是什么?这不是必须授权的任何客户吗?