Azure AD - 如何将SPA的自定义注册和登录组件链接到Azure AD的基础进程

问题描述 投票:1回答:1

我正处于使用以下组件设计无服务器应用程序的早期阶段:

  1. 使用React的SPA,我计划在Azure Storage中运行静态资产。
  2. 由Azure Functions驱动的后端API。
  3. 可能是一个CosmosDB数据库,如果我们可以逃避避免成熟的SQL Server。这取决于我们的架构最终的复杂程度。

后端还有其他几个组件,但它们与此问题无关。

基本上,我想弄清楚的是我如何在我的React SPA中注册和登录表单,按钮等,它们连接到Azure驱动的用户池。

我在早期设计阶段遇到的问题是我对Azure解决方案的理解,以满足我的需求。我的背景是在AWS。在AWS中,我只需创建一个Cognito用户池,并使用AWS SDK将我的应用程序的注册/登录过程挂钩到所述用户池中。

这个过程对我来说很有意义。但是,在Azure世界中,它看起来并不那么直截了当。我读过有关Azure AD,Azure AD B2C等的文章/白皮书。这些文章中描述的过程似乎从未提及我在SPA中构建的表单之间的关系以及如何从那里触发身份验证到Azure AD。基本上,我希望Azure AD在游戏中对用户不可见;他们应该只需要与我的前端应用程序进行交互(即没有重定向到Microsoft或Azure注册/登录页面等)。

到目前为止,我提出的内容包括以下内容(同样,我还处于设计阶段):

  1. Azure存储用于托管静态资产。
  2. 具有Azure功能代理的Azure功能,用于在前端和API之间进行路由。
  3. 看起来Azure AD用户流可能是一种可以听到的方式;但是,我仍然不确定SPA是否可以使用SDK与signin,forgotPassword,signout等功能进行交互。我希望避免尽可能多地重新发送轮子。

我还没有开始编写代码,因为我目前仍处于铅笔/纸张设计阶段。我想出的是以下问题:

  1. 在Blob存储中运行React应用程序与拥有Azure Web App是否有意义?我的意思是,我仍然可以挂钩Azure AD提供的身份验证过程,而无需运行实际的服务器。
  2. 完全期望一旦我实现注册/登录用户流,我将能够触发AAD进程并获得JWT以用于后续API的后续调用。我还不确定这是不是直截了当。

我不是在寻找任何代码或任何东西,只是主要澄清我所拥有的一些不确定性,并确认我当前的路径是有道理的。

azure-active-directory azure-storage azure-functions single-page-application serverless
1个回答
2
投票

你是对的。 Azure AD B2C正是您所需要的。

回答你的问题 -

  1. 是。您也可以托管blob存储并设置static website hosting。您可能还需要查看Azure CDNAzure Frontdoor以加快静态资产的交付。 但是,如果您还需要为UI创建服务器端呈现和/或Azure AD身份验证,则必须使用Web App。
  2. 根据OAuth / OpenID Connect规范执行身份验证的推荐方法是用户登录到身份验证服务器(此处为Azure AD)的流程,该服务器将它们重定向到客户端应用程序,并传递授权代码,该授权代码稍后交换访问令牌并刷新令牌。 另一种选择是Implicit Flow,它通常用于单页应用程序,其中应用程序直接从Azure AD获取令牌。 您希望用户从您的应用程序本身登录的要求,您将使用Resource Owner Password Credentials flow,您可以使用用户名和密码直接调用Azure AD端点,以获取访问令牌作为回报。

您可以在文档中阅读有关Azure AD支持的不同OAuth 2.0 and OpenID Connect protocols的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.