我想使用服务帐户来读取和更新 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);