Azure Functions App with APIM 使用托管标识 - 身份验证和授权

Azure Functions App with APIM using Managed Identity - Authentication and Authorization

我正在使用托管身份在 Azure Functions 下创建一个应用程序,并在 APIM 下导入为 API。使用托管身份、自定义 header 和 jwt-policy 来限制它以进行令牌验证。

我的应用程序的用户将来自移动客户端或 Web 客户端 SPA。我不想要用于登录或注册的 Oauth2 同意屏幕。

但是在托管身份下我如何处理到达用户的请求?识别每个用户请求的唯一令牌,并在以后使用它来维持 session 在移动应用程序或 Web SPA 上的生命。

我不确定需要使用哪些服务才能使此流程正常运行。很明确的一点是,我希望所有使用我的应用程序的用户通过移动设备或网络连接并调用我的功能应用程序 API 都需要经过 APIM。然后,在同意或 oauth 流程等方面不涉及用户交互。

有人可以指导我吗?对于正确的路径使用什么以及何时满足此要求。我经历了很多选择。 Azure B2C 或 B2b 不是我的选择。它涉及用户同意。

更新: 这是它现在的工作方式:

在以前的现有基础设施上:

We are doing it with our own Symfony API's with JWT Authentication. Due to some business requirement we don't want the user to know if we have migrated from one Cloud to another. But also at the same time we are shifting from RESTful API's to Azure Functions for everything. That is why we want the user to be unaware of the changes we made and everything for them should work as is

在 Azure Current 我正在尝试:

In Azure I have Configured Azure Functions under APIM with Managed Identity+ JWT-Validation. Which works fine. But rest of the confusion stays there. How do I have unique user tokens and sessions with that Azure setup etc.

Users will normally be supplying their Username/Password and then Hit the Request For Example Login. Then it hits the APIM, Which gets authenticated goes through Managed identity Policy and then it hits Functions Assigned Managed Identity. I get Token From Context Variable and pass it to JWT-Validation Policy and then. The next phase is confusing where to store token per User and how the next steps works?

这甚至有可能在转移堆栈和底层技术的同时创造这种无缝体验吗?

谢谢

HTTP 触发的 Azure Functions 通过 APIM 公开给 public 互联网。因此,如果我们想将它们用作我们应用程序的一部分,那么我们需要保护这些功能免受任何攻击。

APIs 是使用 Function App 等应用服务创建的,并使用 APIM 策略设置为 APIM 的后端。此外 APIM 使用绑定到 Azure Active Directory 的托管身份。

解决问题的方法是使用 JSON Web 令牌 (JWT)。如果您决定使用 JWT 令牌验证您的 API,则“validate-jwt”策略应该位于“authentication-managed-identity”政策。否则,“Authorization”header 将在有机会被验证之前被替换。

查看以下文档以获取更多信息。

Azure AD authentication based on JWT token.

Authenticate and Authorize Azure Function with Azure Web App Using MSI.