使用服务帐户读取/更新O365用户的日历

时间:2017-02-06 10:45:38

标签: c# authentication office365 azure-active-directory msal

我想使用服务帐户来读取和更新O365用户的日历。我想要访问的所有用户都与我的帐户共享了他们的日历。

我有一个应用程序,它使用AAD v2.0 MSAL进行身份验证。问题是我想使用我的凭据更新/阅读这些用户的日历,但我不想使用此帐户登录,我希望在调用API端点时存储和使用凭据。< / p>

使用Exchange Web服务从存储用户发送电子邮件的示例:

public Office365MailSender()
        {
            _credentials = new NetworkCredential(
                ConfigurationManager.AppSettings["ida:0365MailAddress"],
                ConfigurationManager.AppSettings["ida:0365MailPassword"]);
        }

        public void Send(EmailDto email)
        {
            var service = new ExchangeService
            {
                Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx"),
                Credentials = new OAuthCredentials(_credentials)
            };

            var message = new EmailMessage(service);

            message.ToRecipients.Add(email.To);
            message.Subject = email.Subject;
            message.Body = email.Body;
            message.Body.BodyType = BodyType.HTML;

            message.SendAndSaveCopy();
        }

现在我想使用MSAL对读取/更新用户日历执行相同的操作。 可以这样做吗?如果没有,还有其他一些方法,比如使用证书吗?

例如,在ADAL中我们有以下内容:

public AuthenticationResult AcquireToken(string resource, string clientId, UserCredential userCredential);
public Task<AuthenticationResult> AcquireTokenAsync(string resource, string clientId, UserCredential userCredential);

1 个答案:

答案 0 :(得分:0)

Microsoft身份验证库(MSAL)目前不支持资源所有者密码凭据流。您可以UserCredential查看此内容 不提供密码属性的类。

根据测试,注册Azure AD V2.0端点的应用程序也不支持此流程。如果使用流来获取访问令牌,我们将得到如下的异常:

enter image description here

如果您希望Azure AD V2.0端点支持此流程,您可以提交here的反馈。如果您对Microsoft身份验证库有任何了解,可以从here进行讨论。