401 Unauthorized when subscribing to push notifications using the Exchange service and OAuth

I am trying to access the EWS managed API (subscribe to push notifications) using oauth as shown below:

var authenticationTask = await authenticationContext.AcquireTokenAsync("https://outlook.office365.com", new ClientCredential(clientID, clientSecret));
string targetSmtp = "user123@mydomain.onmicrosoft.com";
ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2013);
exchangeService.Url = someURL;
exchangeService.TraceEnabled = true;
exchangeService.TraceFlags = TraceFlags.All;
exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.PrincipalName, "user123@mydomain.onmicrosoft.com");
exchangeService.HttpHeaders.Add("X-AnchorMailbox", targetSmtp);
exchangeService.Credentials = new OAuthCredentials(authenticationTask.AccessToken);
PushSubscription subscription = exchangeService.SubscribeToPushNotifications(
                                            new[] { someFolder },
                                            new Uri(postBackUrl),
                                            15,
                                            null,
                                            EventType.NewMail,
                                            EventType.Created,
                                            EventType.Deleted,
                                            EventType.Modified,
                                            EventType.Moved,
                                            EventType.Copied);

I can get a token for my application, but when I subscribe a user ( user123@mydomain.onmicrosoft.com ) to push notifications, I get an "The request failed. The remote server returned an error: (401) Unauthorized."error

Update: I tried to follow exactly the same step mentioned here: Azure AD-only access tokens to impersonate Exchange, but still receive 401.

Ashish

+1
source share

Source: https://habr.com/ru/post/1682665/


All Articles