Exchange Online и EWS с Basi c Auth перестали работать - PullRequest
0 голосов
/ 28 мая 2020

Я хочу использовать управляемый API EWS с базовой c аутентификацией для подключения к Exchange Online.

Но в моем приложении EWS AutodiscoverService не может получить настройки почтового ящика (GetUserSettings) из Exchange В сети при использовании аутентификации basi c, но oAuth работает нормально.

Я получаю Microsoft.Exchange.WebServices.Data.ServiceRequestException с сообщением « Попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом после периода время, или установленное соединение не удалось, потому что подключенный хост не ответил 40.101.50.162:444"

Я использую basi c auth несколько лет и несколько дней go это просто перестал работать. Больше невозможно использовать базовую c аутентификацию с Exchange Online и EWS?

Пример кода

var ads = new AutodiscoverService
             {
                 RedirectionUrlValidationCallback = url => true,
                 EnableScpLookup = false
             };
ads.Credentials = new NetworkCredential( svcUsr, svcPwd ); // using these will throw an exception
ads.Credentials = new OAuthCredentials( token.AccessToken ); // these works
var res = ads.GetUserSettings( mailBox, UserSettingName.GroupingInformation );

Исключение

Microsoft.Exchange.WebServices.Data.ServiceRequestException: The request failed. Unable to connect to the remote server ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 40.101.28.194:444
       at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
       at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
       --- End of inner exception stack trace ---
       at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
       at System.Net.HttpWebRequest.GetRequestStream()
       at Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetRequestStream()
       at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverRequest.InternalExecute()
       --- End of inner exception stack trace ---
       at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverRequest.InternalExecute()
       at Microsoft.Exchange.WebServices.Autodiscover.GetUserSettingsRequest.Execute()
       at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetUserSettings(List`1 smtpAddresses, List`1 settings, Nullable`1 requestedVersion, Uri& autodiscoverUrl)
       at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetSettings[TGetSettingsResponseCollection,TSettingName](List`1 identities, List`1 settings, Nullable`1 requestedVersion, GetSettingsMethod`2 getSettingsMethod, Func`1 getDomainMethod)
       at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetUserSettings(List`1 smtpAddresses, List`1 settings)
       at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetSoapUserSettings(String smtpAddress, List`1 requestedSettings)
       at Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetUserSettings(String userSmtpAddress, UserSettingName[] userSettingNames)
       at EWSAutoDiscovery.Program.Main(String[] args) in C:\Program.cs:line 57

Проверено и подтверждено [Обновление 1]

  1. Я убедился, что некоторые операции EWS по-прежнему работают с базовым c auth, например SyncFolderItems .
  2. Я проверил, что пользователь учетной записи службы или общая конфигурация EXO имеют политику аутентификации.
  3. Я создал политику аутентификации, которая включает BasicAuth для всех протоколов и назначена его в параметр EXO Organization Config DefaultAuthenticationPolicy.
  4. Я назначил политику аутентификации учетной записи службы, а также целевому пользователю.
  5. Я удалил и повторно применил роль ApplicationImpersonation в учетной записи службы .

1 Ответ

0 голосов
/ 29 мая 2020

Автообнаружение с Basi c Аутентификация снова начала работать ночью для всех клиентов O365 / Azure, использующих мое приложение.

Microsoft, должно быть, исправила что-то на своей стороне, что они сломали несколько дней а go.

...