如何使用oAuth和MS Graph API从服务登录到用户邮箱

问题描述 投票:0回答:1

我正在向守护程序应用程序添加oAuth身份验证支持。对于IMAP,应用程序通过指定用户ID /密码登录到每个邮箱。 Office365 oAuth访问需要注册应用程序并使用“客户端凭据授予”流。在这种情况下,应用程序将使用Azure AD进行一次身份验证,并使用oAuth令牌访问每个邮箱。此身份验证流程需要对现有代码库进行重大更改。我想以与IMAP相同的方式访问邮箱(为每个邮箱指定用户凭据)。 Office365支持该身份验证流,但它使用系统浏览器,交互式用户同意访问邮箱。我的守护程序应用程序作为无头服务运行,无法访问系统浏览器。如何使用用户凭据登录到用户邮箱?

oauth office365 azure-ad-graph-api
1个回答
0
投票

OAuth 2.0 Resource Owner Password Credentials (ROPC) grant允许应用程序通过直接处理用户密码来登录用户。

授权请求样本供您参考:

// Line breaks and spaces are for legibility only.  This is a public client, so no secret is required. 

POST {tenant}/oauth2/v2.0/token
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=user.read%20openid%20profile%20offline_access
&[email protected]
&password=SuperS3cret
&grant_type=password

请注意,有一个警告

Microsoft建议您不要使用ROPC流。在大多数情况下,并建议使用更安全的替代方法。这个流程需要对应用程序的高度信任,并且其他流程中没有的风险。你应该只用这个无法使用其他更安全的流程时的流程。

© www.soinside.com 2019 - 2024. All rights reserved.