Azure功能应用程序与APIM使用管理身份-身份验证和授权



我正在使用托管身份创建Azure功能下的应用程序,并在APIM下作为API导入。使用托管身份、自定义头和jwt-policy来限制它,用于令牌验证。

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

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

我不确定我需要使用什么服务来使这个流工作。事情是清楚的是,我希望所有用户使用我的应用程序(s)无论是移动或网络连接和调用我的功能应用程序API正在通过APIM。然后,在同意或授权流程等方面没有涉及用户交互。

有人能给我指路吗?对于正确的路径,使用什么以及何时满足此需求。我已经考虑了很多选择。Azure B2C或B2b不是我的选择。这需要用户同意。

更新:现在是这样工作的:

关于以前存在的基础设施:

我们正在使用我们自己的Symfony API和JWT认证。由于一些业务需求,我们不希望用户知道我们是否已经从一个云迁移到另一个云。但同时我们正在从RESTful API转向Azure函数。这就是为什么我们希望用户不知道我们所做的更改对他们来说一切都应该正常

在Azure当前我正在尝试:

在Azure中,我已经在APIM下配置了Azure功能身份+ JWT-Validation。这很好。但是剩下的困惑呆在那里。我如何拥有唯一的用户令牌和会话Azure设置等

用户通常会提供他们的用户名/密码,然后点击请求例如登录。然后它碰到APIM,它得到authenticated通过受管理的身份策略,然后点击被管理的身份。我从上下文变量中得到Token并将其传递给jwt验证策略,然后。下一个阶段是在哪里为每个用户存储令牌以及接下来的步骤是如何工作的?

在改变堆栈和底层技术的同时创造这样无缝的体验是可能的吗?

感谢

HTTP触发的Azure函数通过APIM暴露给公共互联网。因此,如果我们想要使用它们作为我们应用程序的一部分,那么我们需要保护这些函数免受任何攻击。

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

解决这个问题的方法是使用JSON Web Token (JWT)。如果您决定使用JWT令牌对API进行身份验证,请使用">validate-jwt";策略应该出现在authentication-managed-identity之前";政策。授权

"; 标题将在有机会被验证之前被替换。查看以下文件以获取更多信息。

基于JWT令牌的Azure AD认证。

使用MSI验证和授权Azure Web应用程序的Azure功能。

最新更新