サービス アカウントを使用して、O365 ユーザーのカレンダーを読み取り、更新したいと考えています。アクセスしたいすべてのユーザーが自分のカレンダーを私のアカウントと共有しています。
認証に AAD v2.0 MSAL を使用するアプリがあります。問題は、資格情報を使用してこれらのユーザーのカレンダーを更新/読み取りたいのですが、このアカウントでサインインしたくないため、API エンドポイントを呼び出すときに資格情報を保存して使用することです。
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);