我是OAuth的新手,我不了解的是Resource Server
如何使用access_token
来了解用户是否对请求的资源具有足够的权限。
我有三个具体问题:
first:Resource Server
是否为每个authorization Server
调用access_token
(例如,获取用户名,如用户名等)?
第二:authorization Server
是否存储有关已发布的access_token
的任何数据?如果可以,我可以使其无状态吗?
第三:我想开发一个具有微服务体系结构,一个身份验证/授权服务器(带有OAuth)和其他服务的应用程序,并且我希望所有服务都是完全无状态的(我的意思是我的服务不应调用OAuth服务器,并从access_token获取所有必要的信息,例如用户名等。)这可能吗?
OAuth 2.0协议将状态留给实施。从specification doc:
令牌可能表示用于检索授权的标识符信息,或者可以将授权信息包含在可验证的方式(即由一些数据和签名)。其他认证凭证可能需要本规范的范围,以便客户使用令牌。
因此取决于您如何实现它。对于无状态实现,请查看JWT tokens,它们是加密的令牌,可以包含您的资源服务器需要知道的所有信息。我将研究适合您需求的OpenID Connect协议。
OAuth将执行入口点授权,但通常,您还希望在每个API中进行更深入的授权。我的文章可能会帮助您了解如何在该领域种植微防腐剂。设计涉及一些易于管理的状态,并且声明的缓存是一种常见的模式:https://authguidance.com/2017/10/03/api-tokens-claims/