Я использую Office.js
getCallbackTokenAsync
, чтобы загрузить токен для передачи на сервер.
В бэкэнде я использую EWS
для получения данных электронной почты. Вот как я выполняю аутентификацию.
ExchangeService service = new ExchangeService();
service.Url = new Uri(ewsUrl); //retrieved from getCallbackTokenAsync
service.Credentials = new OAuthCredentials(ewsToken);// retrieved from getCallbackTokenAsync
Хорошо работает в обменной онлайн-среде. Однако при тестировании на локальном сервере обмена я получил эту ошибку аутентификации:
Error Message: The remote server returned an error: (401) Unauthorized.
Stack Trace: at System.Net.HttpWebRequest.GetResponse() at Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse() at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
Затем я обнаружил, что doc говорит, что аутентификация Oauth2 предназначена только для онлайн обмена. Думаю, мне нужно использовать этот NTLM (только локальный Exchange).
Основная причина, по которой я использую EWS
вместо Graph
или Rest
, заключается в более естественной поддержке локального сервера. Так я должен изменить аутентификацию здесь? Я, конечно, не хочу спрашивать у пользователя имя пользователя и пароль.