Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Двухфакторная авторизация #77

Closed
Denages opened this issue Apr 16, 2017 · 7 comments
Closed

Двухфакторная авторизация #77

Denages opened this issue Apr 16, 2017 · 7 comments

Comments

@Denages
Copy link

Denages commented Apr 16, 2017

Пытаюсь подключиться, используя стандартный пароль от почты - на телефон приходит смс с кодом, который вводить некуда. Либо генерирую пароль для двухфакторной авторизации в настройках аккаунта mail.ru и получаю в консоли:

  WebDAVCloudMailRu: WebDAV emulator for Cloud.Mail.ru
  v.1.5.65.0
  [email protected]
[1]: WebDAV server running at http://127.0.0.1:801
[Threadpool worker]: PROPFIND:http://127.0.0.1:801/:127.0.0.1:801 - Start processing
[Threadpool worker]: Unexpected exception while handling request (method=PROPFIND, url=http://127.0.0.1:801/, source=127.0.0.1:801
System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
  at System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult asyncResult) [0x00064] in <f8255d9ef0594d18ae2c0d97286b9a80>:0 
  at MailRuCloudApi.Api.Requests.BaseRequest`1+<>c__DisplayClass8_0[T].<MakeRequestAsync>b__0 (System.IAsyncResult asyncResult) [0x00000] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x00014] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at MailRuCloudApi.Api.Requests.BaseRequest`1+<MakeRequestAsync>d__8[T].MoveNext () [0x000d4] in <1ae48339a137463f9e9bb1dee747c15c>:0 
   --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Threading.Tasks.Task`1[TResult].GetResultCore (System.Boolean waitCompletionNotification) [0x00034] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Threading.Tasks.Task`1[TResult].get_Result () [0x0000b] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at MailRuCloudApi.Api.Extensions.ThrowIf[T] (System.Threading.Tasks.Task`1[TResult] data, System.Func`2[T,TResult] func, System.Exception ex) [0x00000] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at MailRuCloudApi.Api.Account+<LoginAsync>d__26.MoveNext () [0x0016d] in <1ae48339a137463f9e9bb1dee747c15c>:0 
   --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Threading.Tasks.Task`1[TResult].GetResultCore (System.Boolean waitCompletionNotification) [0x00034] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Threading.Tasks.Task`1[TResult].get_Result () [0x0000b] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at MailRuCloudApi.Api.Account.Login () [0x00006] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at MailRuCloudApi.Api.CloudApi..ctor (System.String login, System.String password) [0x00025] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at MailRuCloudApi.MailRuCloud..ctor (System.String login, System.String password) [0x00006] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at MailRuCloudApi.SplittedCloud..ctor (System.String login, System.String password) [0x00000] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at YaR.WebDavMailRu.CloudStore.Cloud.Instance (NWebDav.Server.Http.IHttpContext context) [0x00071] in <845b8272334f433dbfffd025ce40d5dc>:0 
  at YaR.WebDavMailRu.CloudStore.Mailru.StoreBase.MailruStore.GetItemAsync (System.Uri uri, NWebDav.Server.Http.IHttpContext httpContext) [0x00013] in <845b8272334f433dbfffd025ce40d5dc>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at NWebDav.Server.WebDavDispatcher+<DispatchRequestAsync>d__6.MoveNext () [0x0030d] in <05488793c03a40ab8a95a6e5dc0e2c25>:0 
---> (Inner Exception #0) System.AggregateException: One or more errors occurred. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
  at System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult asyncResult) [0x00064] in <f8255d9ef0594d18ae2c0d97286b9a80>:0 
  at MailRuCloudApi.Api.Requests.BaseRequest`1+<>c__DisplayClass8_0[T].<MakeRequestAsync>b__0 (System.IAsyncResult asyncResult) [0x00000] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x00014] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at MailRuCloudApi.Api.Requests.BaseRequest`1+<MakeRequestAsync>d__8[T].MoveNext () [0x000d4] in <1ae48339a137463f9e9bb1dee747c15c>:0 
   --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Threading.Tasks.Task`1[TResult].GetResultCore (System.Boolean waitCompletionNotification) [0x00034] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Threading.Tasks.Task`1[TResult].get_Result () [0x0000b] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at MailRuCloudApi.Api.Extensions.ThrowIf[T] (System.Threading.Tasks.Task`1[TResult] data, System.Func`2[T,TResult] func, System.Exception ex) [0x00000] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at MailRuCloudApi.Api.Account+<LoginAsync>d__26.MoveNext () [0x0016d] in <1ae48339a137463f9e9bb1dee747c15c>:0 
---> (Inner Exception #0) System.Net.WebException: The remote server returned an error: (403) Forbidden.
  at System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult asyncResult) [0x00064] in <f8255d9ef0594d18ae2c0d97286b9a80>:0 
  at MailRuCloudApi.Api.Requests.BaseRequest`1+<>c__DisplayClass8_0[T].<MakeRequestAsync>b__0 (System.IAsyncResult asyncResult) [0x00000] in <1ae48339a137463f9e9bb1dee747c15c>:0 
  at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x00014] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <dbb16e0bacdc4a0f87478e401bc29b6c>:0 
  at MailRuCloudApi.Api.Requests.BaseRequest`1+<MakeRequestAsync>d__8[T].MoveNext () [0x000d4] in <1ae48339a137463f9e9bb1dee747c15c>:0 <---
<---


@yar229
Copy link
Owner

yar229 commented Apr 18, 2017

Сделать можно, просто одно дело, когда вы заходите у себя на локальной машине и видите консольку, или, скажем, можно окошко выводить.
А как вводить код подтверждения, если программа запущена как сервис, и не локально, и не под виндоус?

Пока вижу варианты

  • смотреть в stdin
  • ожидать код в файле с определенным именем
  • через бота в мессенджере, и мессенджер этот - телеграм.
  • дергать webhook

Просто не совсем понятно, кому, какое из вышеперечисленного счастья и насколько оно надо.
Если есть идеи, пишите, обсудим.

@Denages
Copy link
Author

Denages commented Apr 19, 2017

Какой бы способ ни был выбран, это все равно лучше полного отсутствия возможности. Кроме того, там же можно передать флаг "запомнить устройство", следовательно, в лучшем случае эту процедуру нужно провести лишь однажды. Самый удачный вариант без всех заморочек - использование сгенерированного перманентного кода для двухфакторной авторизации, вводимого вместо основного пароля. Однако, этот способ почему-то не работает.
Отключать двухфакторную авторизацию тоже не хотелось бы, учитывая, что на почтовом сервисе завязано множество всего остального.

@fruhu
Copy link

fruhu commented Apr 27, 2017

Костыль в виде модуля генерирующего TOTP ключ и передающего программе/интеграция с чем то существующим? Хотя с оба варианта вероятно - гора возьни :(

@yar229
Copy link
Owner

yar229 commented Apr 27, 2017

В общем, принято, что нибудь придумаю
... недельки через три, сорри, ~каникулы в простоквашино

yar229 added a commit that referenced this issue Jun 1, 2017
yar229 added a commit that referenced this issue Jun 1, 2017
@yar229
Copy link
Owner

yar229 commented Jun 1, 2017

Пробуйте ver.1.6.1

@yar229 yar229 closed this as completed Jun 1, 2017
@Denages
Copy link
Author

Denages commented Jun 2, 2017

@yar229 Ключевой момент. При авторизации в браузере есть возможность установить галку "Не спрашивать для этого устройства". Возможно ли это реализовать? Иначе постоянно нужно будет вводить смс. А в случае частого переподключения смс могут перестать приходить вследствие таймера повторной отправки. Из остального: в случае ввода неправильного кода в консоль пишутся исключения "Unexpected exception". На MacOS не появляется окно при установленном режиме AuthCodeWindow. Значок mono появляется, но окна нет. Поэтому использовал консоль.

@yar229
Copy link
Owner

yar229 commented Jun 2, 2017

"Не спрашивать" вынес в #85
C MacOS и окном пока не знаю, что делать.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants