在ASP.NET Web应用程序中使用应用程序的身份(Azure AD)来调用Microsoft Graph

时间:2020-10-17 10:32:24

标签: asp.net-mvc azure azure-active-directory microsoft-graph-api

我的ASP.NET MVC Web应用程序当前正在使用本地SMTP服务器发送邮件。

要了解,这是经典场景:

  • 用户必须使用用户名/密码(已加密并存储在SQL DB中)登录Web应用程序
  • 用户填写表格
  • 发布表单后,会发送2封邮件(一封邮件给用户,另一封邮件给团队)

我们必须迁移到基于Azure VM(虚拟机)的解决方案。我被要求使用 Microsoft Graph 发送邮件,以代替使用SMTP服务器。我找到了很多与此主题有关的文档和教程。经典解决方案要求用户使用Open ID Connect登录,并且Azure AD用于身份验证(MSAL)。因此,将向用户显示一个新的身份验证页面,他应该在该页面上授权应用程序执行特定的操作,例如发送邮件。参见下面的图片。

enter image description here

在我的情况下,我不想强​​迫用户再次进行身份验证。如上述情况所述,用户已经使用与Azure AD不相关的(基本)用户/密码登录。

所以我想我会使用应用程序的身份代替用户的身份。这样,用户不应再次进行身份验证。我在Microsoft网站上找到了适合我需要的快速入门。

以下是链接:https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-netcore-daemon

很明显,我想将此概念集成到我的ASP.NET Web应用程序中,而不是控制台应用程序中,但是您明白了。

所以我想知道使用应用程序身份代替用户身份(Azure AD中的身份验证)在ASP.NET Web应用程序中发送邮件的解决方案是否是一种好方法。 < / p>

2 个答案:

答案 0 :(得分:1)

我认为这是可行的。

实际上,Microsoft不建议用户基于用户名/密码登录应用程序,这要求对应用程序具有很高的信任度,并且可能会带来某些风险。

在您的问题中,您想使用该应用程序充当其自己的实体,而不是代表特定用户执行操作,以避免对用户的重复登录授权。我认为这是一个好方法,但是您必须注意,如果您需要使用应用程序自己的身份请求令牌来访问MS graph api,则必须将application permissions授予应用程序,然后使用{ {3}}作为身份验证流程。

答案 1 :(得分:0)

如果您使用的是VM,则可以启用托管身份并避免处理凭据。看看这个article