我最近一直在研究OAuth2,我想我理解授权过程。
但是,我似乎不明白的是,一旦授权已经建立access_token
和refresh_token
来拨打电话,如何根据{{ {1}}如果请求可以访问或不能访问特定资源?
即。将令牌发送到服务器以请求照片。服务器上的逻辑如何根据给定的令牌确定是允许还是拒绝访问该特定照片?
答案 0 :(得分:4)
访问令牌实际上是一个加密对象,此对象定义范围并可以重新建立授权。
想象一下,服务提供商为您提供了一个对您没有意义的HMAC加密令牌,但终端知道如何解密它。在解密时,它会有如下信息:
{"scope":"Photos", "userID":"3refefe"}
因此,基本上处理令牌的模块会加密此JSON(或任何其他格式)对象,并为您提供加密令牌。当您点击API端点时,它会将令牌发送到解密逻辑并获取此JSON对象,从而知道您有权执行的操作。
此对象可以包含任何类型的信息,并且可以采用任何格式,具体取决于服务提供商。我已经描述了 how an OAuth provider works here.
这应该解释极简主义OAuth框架的基础知识。
答案 1 :(得分:3)
access_token
通常是不透明的神器。没有任何内在因素可以将其与资源(例如特定照片)相关联。授权流程启动时,您通常会请求定义所需访问权限的特定scope
。如果资源的所有者同意此访问权限,则请求成功。用户也可以撤销访问权限。
所有这些都是应用专用代码。每个应用程序都定义了它们的范围以及它们如何强制执行检查。
您可能想要探索Authorization Server作为示例。