【问题标题】:Use a service account to read/update calendars of O365 users使用服务帐户读取/更新 O365 用户的日历
【发布时间】:2017-06-23 06:45:09
【问题描述】:

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

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

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

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);

【问题讨论】:

  • 我不知道用图形 API 来做这件事。 Exchange Web 服务和 X.509 证书是可能的。您需要为应用程序添加 EWS 模拟权限并使用证书登录,然后 Office 365 EWS 将允许您模拟用户读取/写入他们的日历。您仍然使用 ADAL 为您的应用程序获取令牌,但使用 ClientAssertionCertificate 来识别应用程序。然后将返回的令牌添加到后续的 EWS 调用中。
  • 谢谢,但想知道是否可以不使用 ADAL,即使用 MSAL :)

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2018-02-10
    • 1970-01-01
    相关资源
    最近更新 更多