ASP.NET Web Form点击按钮连接Office 365 Outlook并通过API编程登录方法咨询
实现方案
完全可以通过 Azure AD 身份认证 + Microsoft Graph API 的标准方案实现需求,具体操作步骤如下:
1. 前置配置准备
- 访问Azure门户注册应用,账户类型选择任意组织账户+个人Microsoft账户,重定向URI填写你的ASP.NET应用回调地址,示例值为
https://localhost:端口号/signin-oidc - 注册完成后记录
客户端ID(ClientId)、租户ID(TenantId),进入「证书和密码」板块创建客户端密码,保存生成的密码值 - 进入API权限管理页,添加Microsoft Graph的委托权限,根据你的业务需求勾选
Mail.Read/Mail.Send/Calendars.ReadWrite等Outlook相关权限,企业级应用需要点击「授予管理员同意」完成权限激活
2. ASP.NET项目配置
以ASP.NET Core项目为例:
- 先安装对应NuGet包:
Install-Package Microsoft.Identity.WebInstall-Package Microsoft.Identity.Web.MicrosoftGraph - 在
appsettings.json中添加认证配置:
"AzureAd": { "Instance": "https://login.microsoftonline.com/", "Domain": "你的应用域名", "TenantId": "之前记录的租户ID", "ClientId": "之前记录的客户端ID", "ClientSecret": "之前记录的客户端密码", "CallbackPath": "/signin-oidc" }, "GraphApi": { "BaseUrl": "https://graph.microsoft.com/v1.0", "Scopes": "Mail.Read Mail.Send" }
- 修改
Program.cs注册认证服务:
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd")) .EnableTokenAcquisitionToCallDownstreamApi(new string[] { "Mail.Read", "Mail.Send" }) .AddMicrosoftGraph(builder.Configuration.GetSection("GraphApi")) .AddInMemoryTokenCaches(); builder.Services.AddControllersWithViews().AddMicrosoftIdentityUI();
3. 功能实现
- 前端页面添加登录按钮,跳转地址配置为
/MicrosoftIdentity/Account/SignIn,用户点击后会自动跳转Office 365登录页,完成授权后会自动回调回你的应用 - 需要调用Outlook API时,直接在控制器中注入
GraphServiceClient即可调用,示例获取用户最近10封邮件的代码如下:
[Authorize] public async Task<IActionResult> GetOutlookMails() { var mailList = await _graphServiceClient.Me.Messages .Request() .Select(m => new {m.Subject, m.Sender, m.ReceivedDateTime}) .Top(10) .GetAsync(); return View(mailList); }
注意事项
如果需要无用户交互的后台调用场景,将权限类型改为应用权限,使用客户端凭证流认证即可实现纯代码自动登录调用
生产环境不要把客户端密码明文写在配置文件中,建议用密钥托管服务存储敏感信息
内容的提问来源于stack exchange,提问作者syed saif
相关产品推荐
相关产品推荐

