oauth - 微服务解决方案中的 Azure Active Directory 代表流
问题描述
我有一个微服务解决方案,在微服务前面有一个 API 网关。我希望授权发生在微服务级别。我有一个 SPA 客户端,它使用隐式流来获取令牌并调用 API。在 API 中,我使用代理流来获取令牌以作为用户调用相关的微服务。所以对于微服务来说,它似乎是用户并且可以执行授权。
我的问题是,如果我不使用代表流程,我需要给 API 网关一个应用级别的权限来访问微服务。如果我提供 API 应用级服务到服务(客户端凭据授予流)功能,那么我将不得不依赖网关 API 来执行授权,这似乎是一个非常糟糕的主意。如果另一个 API 需要在类似的场景中调用我的,这也是一个非常糟糕的主意。
我的问题是:还有哪些其他方法可以让我将用户身份传递到微服务以便进行适当的授权?
我已经看到了在 Identity Server 中使用另一个标头的示例,但是由于 Identity Server 中缺少一些代表选项,我不会这样做。顺便说一句,我意识到我可以将用户身份作为字符串传递,但我会失去所有签名的令牌好处,这些好处提供了令牌未被篡改的确定性。
解决方案
推荐阅读
- case - NetSuite 中保存的搜索结果中的嵌套 CASE WHEN 公式(文本)
- gcc - arm 工具链中的供应商名称有多重要?我可以将 arm-linux-gnueabi-gcc 和 arm-oe-linux-gnueabi-gcc 视为相同吗?
- javascript - 当我在浏览器中进行 API 调用时,我得到一个 JSON 对象,但是当我使用节点“请求”进行调用时,我得到一个难以理解的字符流
- python - 我无法使用 pip 安装 plotly 和 geopandas 包,我该怎么办?
- regex - Python:从字符串中获取所有可能的日期格式并将其转换为日期时间对象
- string - 为什么我的 Groovy println 在正确的语句后总是返回 null?
- python - 隐式等待和多个 xpath 元素
- javascript - 如何通过单击显示/隐藏下拉菜单?
- android - API 21+ 上的断视图裁剪/填充
- c++ - 标准::原子
多线程程序中的 memory_order_relaxed VS volatile sig_atomic_t