我的ASP.NET MVC Web应用程序当前正在使用本地SMTP服务器发送邮件。
要了解,这是经典场景:
我们必须迁移到基于Azure VM(虚拟机)的解决方案。我被要求使用 Microsoft Graph 发送邮件,以代替使用SMTP服务器。我找到了很多与此主题有关的文档和教程。经典解决方案要求用户使用Open ID Connect登录,并且Azure AD用于身份验证(MSAL)。因此,将向用户显示一个新的身份验证页面,他应该在该页面上授权应用程序执行特定的操作,例如发送邮件。参见下面的图片。
在我的情况下,我不想强迫用户再次进行身份验证。如上述情况所述,用户已经使用与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>
答案 0 :(得分:1)
我认为这是可行的。
实际上,Microsoft不建议用户基于用户名/密码登录应用程序,这要求对应用程序具有很高的信任度,并且可能会带来某些风险。
在您的问题中,您想使用该应用程序充当其自己的实体,而不是代表特定用户执行操作,以避免对用户的重复登录授权。我认为这是一个好方法,但是您必须注意,如果您需要使用应用程序自己的身份请求令牌来访问MS graph api,则必须将application permissions
授予应用程序,然后使用{ {3}}作为身份验证流程。
答案 1 :(得分:0)
如果您使用的是VM,则可以启用托管身份并避免处理凭据。看看这个article。