如果客户端用户在API管理服务前端通过了身份验证,如何将用户详细信息发送到后端API?

时间:2019-12-06 23:00:34

标签: asp.net-core azure-api-management

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

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

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

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

我意识到,如果我要在后端API层添加身份验证(这将复制身份验证/授权),则我可以从技术上实现此目的。但是,这将违反SRP原则,并可能在后端增加一些必要的开销。

1 个答案:

答案 0 :(得分:0)

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

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