我想知道授权服务器(如果位于单独的应用程序中)如何与资源服务器共享令牌(访问令牌)?
我正在使用Spring OAuth 2.0 /授权代码授予类型。
答案 0 :(得分:2)
我碰巧有一个出色的video,可以为您解释所有内容。在上面花费an hour。值得您花时间。我保证。
一些定义
Client
-需要访问服务器上的API的应用程序Resource Server
-托管受保护的API的应用程序Authorization Server
-发行令牌并断言客户端身份的应用程序场景很简单
假设有一个名为Photo Storage
的应用程序。该应用程序要做的就是让我们上传照片,下载照片,更新照片和删除照片。
照片存储是资源服务器。
一个移动应用程序称为Photo Editor
,它知道如何编辑照片。照片编辑器是 client
现在,照片编辑器希望您能够登录,以便它可以访问照片存储应用程序中的照片。但是照片存储并不了解照片编辑器(也不需要)。但是照片存储需要有人担保照片编辑器,为此,我们有一个授权服务器。
看起来像这样
Photo Editor Photo Storage Authorization Server
Get Token ------------authorization_code (https)----------->
Download Photo ----token(https)---->
Edit Photo (local)
Upload Photo -----token(https)----->
这是一个很好的选择:
客户端(照片编辑器)通过HTTP请求从授权服务器下载令牌。令牌本身是 string 。可以编码为JSON(JSON Web令牌,JWT),也可以是唯一的任意字符串。
当客户端需要访问资源服务器时,它将在资源服务器上调用HTTP API,并将令牌作为请求的一部分发送到HTTP标头中
GET /photo/download/1 HTTP/1.1
Authorization: Bearer dsadsadsadasdasdasda.....
资源服务器将在内部或与授权服务器联系来验证令牌,并根据结果允许来自客户端的呼叫或拒绝它。
我希望这会有所帮助。正如我所说的,video将通过示例更详细地说明这一点。
对您的问题的TL; DR回答是令牌只是一个字符串,它作为HTTP请求的一部分发送出去。这些应用程序都可以位于不同的服务器上(客户端->智能手机,资源服务器-> Amazon AWS服务器,授权服务器-> Google云服务器)