首页 > 解决方案 > 如果客户端用户在 API 管理服务前端进行了身份验证,如何将用户详细信息发送到后端 API?

问题描述

我有兴趣使用 Azure APIMS 对来自使用 Azure AD 的客户端应用程序的请求进行身份验证。但是,我有兴趣让后端 API 了解有关在网关上通过身份验证的用户的详细信息,以便我可以基于该用户执行逻辑。

后端 API 将是 ASP.NET Core 3.x Web api。

我可以使用哪些方法?我能想到的一件事就是简单地将 Authentication 标头转发到后端 API,并在那里进行某种类型的查找。但是我想知道是否有任何方法可以让我在前端 api 网关层聚合用户详细信息,并在标头中传递该信息?

当请求在前端网关层进行身份验证时,后端应用程序如何获取有关经过身份验证的用户的详细信息?

我意识到,如果我要在后端 API 层添加身份验证(这将重复身份验证/授权),我可能能够以这种方式在技术上完成它。但是,这会违反 SRP 原则,并且可能会给后端增加一些必要的开销。

标签: asp.net-coreazure-api-management

解决方案


APIM 的 Azure AD 身份验证主要意味着验证随请求一起传递的 JWT 令牌。如果您想使用send-request策略获取更多信息(例如,进行组扩展),您可以调用其他端点,但这必须通过策略显式配置。

验证令牌后,它以对象模型形式提供给您,因此您可以检查其属性并在策略表达式中使用令牌的任何部分,例如将其部分作为标头发送到后端 API。


推荐阅读