Asp.net mvc Azure上的解耦Web API(架构建议)

Asp.net mvc Azure上的解耦Web API(架构建议),asp.net-mvc,asp.net-web-api,owin,jwt,azure-active-directory,Asp.net Mvc,Asp.net Web Api,Owin,Jwt,Azure Active Directory,我为一家非营利组织工作,该组织试图创建一系列服务,让他们可以做一些事情: 创建/管理用户 创建/管理竞赛 创建/管理活动(比赛由许多活动组成) 后勤 等等 以下是一些要求: Azure上的主机 使用用户自己的电子邮件地址创建帐户(可以是任何域) 每个服务必须相互独立 系统应可从任何地方访问(浏览器、移动应用程序等) 用户登录后,应可以访问其他系统(如果需要或取决于权限) -服务可以相互通信(我们已经使用Azure Active Directory在此平台上成功完成了POC) 我花了一些时

我为一家非营利组织工作,该组织试图创建一系列服务,让他们可以做一些事情:

  • 创建/管理用户
  • 创建/管理竞赛
  • 创建/管理活动(比赛由许多活动组成)
  • 后勤
  • 等等
以下是一些要求:

  • Azure上的主机
  • 使用用户自己的电子邮件地址创建帐户(可以是任何域)
  • 每个服务必须相互独立
  • 系统应可从任何地方访问(浏览器、移动应用程序等)
  • 用户登录后,应可以访问其他系统(如果需要或取决于权限) -服务可以相互通信(我们已经使用Azure Active Directory在此平台上成功完成了POC)
我花了一些时间研究解决这一问题的可能方法,包括阅读以下文章:

听起来JWT是一条路要走,但我想确保这种架构方法在未来的道路上具有灵活性。我愿意学习/使用任何技术,只要它与.Net、WebAPI和MVC兼容

我最初的想法是将每个“系统”设置为Web API,这非常简单。我关心的是身份验证/授权。百万美元的问题就变成了:

如何在浏览器/手机/桌面应用程序上对用户进行身份验证,然后使用其他服务(API),其中每个服务都可以验证用户是否独立于其他服务进行身份验证

例如,假设我正在使用web应用程序(浏览器)并注册为用户(使用用户服务),以便注册竞赛(竞赛服务)。两个服务需要使用什么样的技术/体系结构才能使用相同的身份验证机制

我对MVC或WebAPI并不陌生,但我熟悉这样的场景,所以非常感谢所有的帮助或建议。对于任何感兴趣的人,这是非营利组织:


他们正在做一些很酷的事情,比如推广和传播对跳绳的热爱。他们的目标是能够帮助世界各地的人们,并为他们提供一种团结和竞争的方式。他们这么做已经很多年了,每年都在成长,都是免费的,纯粹是出于对这项运动的热爱。帮帮我,帮帮他们

Azure Active Directory可以帮助您满足您的需要

关于安全性/身份验证机制,简单地说,这就像您从Azure Active Directory获得一个令牌,以便能够使用它对特定的访问者/租户进行身份验证

在您的体系结构中,当您获得一个令牌时,您可以指定是针对某个特定的受众使用它,还是针对特定租户或多租户场景中的受众列表或所有受众使用它

以下是有关AAD单点登录的视频链接:

您可以从以下位置下载AAD解决方案体系结构:


也许还值得一看Identity Server-

就令牌而言,与Azure AD的概念相同,但对于用户信息的数据存储,您可能会选择更大的选项


网站上有很多演示和源代码,特别是关于不同类型的身份验证流\服务到服务身份验证的演示和源代码

我忘了在我的帖子中包括不能在Azure AD中创建用户帐户的内容。我们可以通过AD进行API到API的操作,我已经在POC中成功地完成了这一操作。我对您提出的解决方案的理解是,用户帐户必须在广告中才能正常工作。用户使用他们自己的电子邮件注册,而不是我们的域名,所以我们没有这样做。然而,如果有可能在我们的Azure广告中用用户的电子邮件创建一个帐户,我们会很高兴的!让我知道你的想法。你可以使用Azure Graph Api()在Azure AD中创建用户。然后你可以将该功能封装在你的Api中,使用你自己的Api创建用户,并在后台将用户信息放入Azure AD。我们将如何处理密码?我们会把它们传给广告公司而不储存吗?