oauth-2.0 - OAuth2中资源和客户端的区别
问题描述
我正在为基于微服务的应用程序在 Node Js 中开发身份验证/授权系统。
我阅读了一些关于 OAuth2 标准的文章和文档,但我需要对我的用例进行一些说明。基本上 OAuth2 有一些演员,如:
- 资源所有者(用户)
- 客户端应用程序(一些 OAuth2 授权流程中的 Web 应用程序,如授权码、隐式、密码)
- 授权服务器
- 资源服务器(我想访问的服务)
因此,在我的数据库中,我存储了一个客户端(Web 应用程序)及其 client_id 和 client_secret。
假设我的一个微服务需要访问另一个微服务的数据。它们都采用了 REST Api。没有与用户的交互,一切都在后台完成。在这种情况下,我将使用客户端凭据流。遵循 OAuth2 规则,它们都是资源服务器,但同时看起来它们也是客户端应用程序。
那么我应该在客户端数据库表/集合中使用客户端 ID、秘密等注册它们还是我犯了一些错误?
谢谢
解决方案
如果我正确理解了您的问题,则调用者微服务是您的客户端,而被调用的是您的资源。很大程度上取决于您实现了哪种类型的微服务通信模式。如果您正在实现“API 网关”模式,那么您的网关始终是客户端,所有其他微服务都可以视为资源。但是,如果您的微服务可以相互调用,那么就像您提到的那样,它们中的每一个都必须同时注册为客户端和资源。
推荐阅读
- java - 无法从 JSF Java Web 应用程序插入 Oracle 数据库
- angular - Keycloak:Angular 6 将 XMLHttpRequest 发送到 SpringBoot 后端的 CORS 问题
- css - 以角度显示播放/暂停按钮
- java - Spring在拦截器中向重定向的URL添加额外的查询参数
- amazon-web-services - 是否可以仅验证启用 MFA 的 AWS Cognito 用户的密码?
- javascript - 如何使 JavaScript regexbb 查找缺少 html 属性
- python - 如何检查值是 nan 还是列表?
- c# - 项目引用错误版本的 DLL
- android - 安卓。如何跳转到路径中带有“$”符号的系统活动?
- javascript - 交换对象值,特别是使用“空”值