为何OAuth需要访问令牌?能否跳过令牌直接以应用身份认证?
关于OAuth访问令牌必要性的疑问
平台内的用户和外部应用都拥有对应的userId,用户可以像授权其他用户访问自身资源(读、写等操作)一样,为外部应用授予同类访问权限。
那我有个疑问:外部应用为什么不能直接用自身userId(比如API Key)搭配应用密钥做HMAC签名(或用私钥对每个请求签名)来向平台完成身份认证?毕竟用户完全可以通过和授权其他用户相同的控制面板,管理OAuth应用的权限范围。
OAuth使用访问令牌到底有什么优势?目前我能想到的唯一好处是可以跳过与授权服务器的I/O请求,有点类似用「能力凭证」替代访问控制列表(ACL)。但这难道不是更不安全吗?而且如果需要检查访问令牌是否被撤销,还是得执行同等的I/O操作。
说白了我最想问的核心问题是:既然平台明确知道是哪个应用在请求哪些资源,OAuth应用为什么不能直接跳过访问令牌这一步?
内容的提问来源于stack exchange,提问作者Greg Magarshak
相关产品推荐
相关产品推荐

