我对使用 Azure APIMS 对来自使用 Azure AD 的客户端应用程序的请求进行身份验证感兴趣。但是,我有兴趣让后端 API 知道有关在网关上进行身份验证的用户的详细信息,以便我可以基于该用户执行逻辑。
后端API将 ASP.NET Core 3.x Web api。
我可以使用哪些方法? 我能想到的一件事是简单地将身份验证标头转发到后端 API,并在那里进行某种类型的查找。但我想知道是否有任何方法可以在前端 api 网关层聚合用户详细信息,并在标头中传递该信息?
在前端网关层对请求进行身份验证时,后端应用程序如何获取有关经过身份验证的用户的详细信息?
我意识到,如果我要在后端 API 层添加身份验证(这将复制身份验证/授权(,我也许能够在技术上以这种方式完成它。但是,这将违反SRP原则,并可能为后端增加一些必要的开销。
APIM 上的 Azure AD 身份验证主要意味着验证随请求一起传递的 JWT 令牌。如果要使用send-request
策略来获取更多信息(例如,执行组扩展(,则可以调用其他终结点,但必须通过策略显式配置。
验证令牌后,你可以以对象模型形式使用它,以便你可以检查其属性并在策略表达式中使用令牌的任何部分,例如将其部分作为标头发送到后端 API。