c# - 有没有办法通过控制台应用程序 C# 连接启用 Azure AD MFA 的 Outlook 邮箱?

标签 c# azure-active-directory console-application exchangewebservices multi-factor-authentication

我有一个用 C# 编写的控制台应用程序,我们用它来使用交换服务连接到 Outlook 邮箱,以读取收件箱中的电子邮件。最近,我们已通过 MFA 迁移到 Azure AD,更改后,我的代码抛出 401 未经授权的错误。任何人都可以建议一种解决方法来验证控制台以连接和读取邮件而无需任何用户依赖性。

正常的WebClient功能,使用用户名和密码连接到outlook。 https://outlook.office365.com/EWS/Exchange.asmx用作代码中的 Service 对象 url。

最佳答案

使用 ADAL.NET 或 MSAL.NET 和 OAuth2 身份验证到 EWS:https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth这将处理您设置的任何 MFA。 (我假设您的应用程序在用户存在的情况下运行,因此能够进行身份验证。如果这是一个无人值守的应用程序,并且使用硬编码的用户凭据运行,那么您必须允许该用户不使用 MFA 或更改应用程序使用服务主体登录,仍然使用上面的 OAuth2)。

关于c# - 有没有办法通过控制台应用程序 C# 连接启用 Azure AD MFA 的 Outlook 邮箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55918145/

相关文章:

c# - BadImageFormatException 无法加载文件或程序集或其依赖项之一。试图加载格式不正确的程序

c# - Updatepanel 中用户控件内按钮的回发触发器

c# - 函数多态性。当 A 为 :B 时,返回 B,因为 A 为空

c# - 无法在 LINQ C# 中排序和删除重复项

c# - 具有 Azure AD 身份验证的 UWP 应用程序 - 如何判断用户的登录状态

azure - 如何使用用户 ID 从 Azure B2C Active Directory 获取用户详细信息

Asp.net Core 身份 - Azure 身份验证中间件

java - 德州扑克识别葫芦

C++ 控制台应用程序总是在最前面?

c# - 让任务在控制台应用程序的后台永久运行