microsoft / azure-devops-intellij

IntelliJ IDEA plug-in for Visual Studio Team Services and Team Foundation Server (TFS)
MIT License
151 stars 95 forks source link

Multiple authentication requests after cancellation #198

Open ForNeVeR opened 5 years ago

ForNeVeR commented 5 years ago

This issue was extracted from #196.

  1. Clone any repository (doesn't matter if Git or TFVC).
  2. Revoke any tokens you've used to authorize.
  3. Open a Work Items tab.
  4. Press a Refresh button.
  5. You'll get an authorization window; close it.

Expected result: closing of an authentication window should be registered as "Cancel" action; no additional windows should be shown. Actual result: authentication window will be shown for the second time. Some users report that could lead to endless login loop (see #196) though I wasn't able to reproduce that right now; probably it interferes with #158 (where you really could get the login loop).

ali4heydari commented 5 years ago

I cloned my Azure Git repo with Phpstorm by signing in to Microsoft account and selecting a repo within AzureDevOps plugin for Phpstorm. When I want to create a PR from Menu -> VCS -> Git -> Create Pull Request... Azure plugin once again wants to authenticate me and authentication window appear but after type my username and password it's once again and again show the authentication window! no matter cancelling by closing authentication window it shown three time and not working.

System info: Windows 10 Pro x64 version 1809 build 17763.503

PhpStorm 2019.1.2 Build #PS-191.7141.52, built on May 8, 2019 JRE: 1.8.0_202-release-1483-b49 amd64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

log message:

getAuthenticationInfoAsync failed

com.microsoft.alm.plugin.exceptions.TeamServicesException: KEY_VSO_AUTH_FAILED
    at com.microsoft.alm.plugin.authentication.facades.VsoAuthInfoProvider.getAuthenticationInfoAsync(VsoAuthInfoProvider.java:100)
    at com.microsoft.alm.plugin.authentication.VsoAuthenticationProvider.authenticateAsync(VsoAuthenticationProvider.java:69)
    at com.microsoft.alm.plugin.authentication.AuthHelper.getAuthenticationInfoSynchronously(AuthHelper.java:59)
    at com.microsoft.alm.plugin.idea.git.extensions.TfGitHttpAuthDataProvider.getAuthData(TfGitHttpAuthDataProvider.java:39)
    at git4idea.remote.GitHttpAuthDataProvider.getAuthData(GitHttpAuthDataProvider.java:41)
    at git4idea.remote.GitHttpAuthDataProvider.getAuthData(GitHttpAuthDataProvider.java:36)
    at git4idea.commands.GitHttpGuiAuthenticator$ExtensionAdapterProvider.getDataForUser(GitHttpGuiAuthenticator.java:268)
    at git4idea.commands.GitHttpGuiAuthenticator.doAskPassword(GitHttpGuiAuthenticator.java:111)
    at git4idea.commands.GitHttpGuiAuthenticator.lambda$askPassword$1(GitHttpGuiAuthenticator.java:95)
    at git4idea.commands.GitPassthroughAuthenticationGate.waitAndCompute(GitAuthenticationGates.kt:52)
    at git4idea.commands.GitHttpGuiAuthenticator.askPassword(GitHttpGuiAuthenticator.java:95)
    at git4idea.commands.GitHttpAuthService$InternalRequestHandlerDelegate.lambda$askPassword$1(GitHttpAuthService.java:71)
    at git4idea.commands.GitHttpAuthService.getDefaultValueIfCancelled(GitHttpAuthService.java:78)
    at git4idea.commands.GitHttpAuthService$InternalRequestHandlerDelegate.askPassword(GitHttpAuthService.java:71)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jetbrains.ide.XmlRpcServerImpl.invoke(XmlRpcServerImpl.java:180)
    at org.jetbrains.ide.XmlRpcServerImpl.invokeHandler(XmlRpcServerImpl.java:141)
    at org.jetbrains.ide.XmlRpcServerImpl.process(XmlRpcServerImpl.java:101)
    at org.jetbrains.ide.XmlRpcServerImpl$XmlRpcRequestHandler.process(XmlRpcServerImpl.java:58)
    at org.jetbrains.io.DelegatingHttpRequestHandler$process$1.invoke(DelegatingHttpRequestHandler.kt:27)
    at org.jetbrains.io.DelegatingHttpRequestHandler.process(DelegatingHttpRequestHandler.kt:42)
    at org.jetbrains.io.DelegatingHttpRequestHandlerBase.messageReceived(DelegatingHttpRequestHandlerBase.kt:15)
    at org.jetbrains.io.DelegatingHttpRequestHandlerBase.messageReceived(DelegatingHttpRequestHandlerBase.kt:11)
    at org.jetbrains.io.SimpleChannelInboundHandlerAdapter.channelRead0(SimpleChannelInboundHandlerAdapter.java:20)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.http.cors.CorsHandler.channelRead(CorsHandler.java:95)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at org.jetbrains.io.PortUnificationServerHandler.decode(PortUnificationServerHandler.java:133)
    at org.jetbrains.io.PortUnificationServerHandler.messageReceived(PortUnificationServerHandler.java:80)
    at org.jetbrains.io.Decoder.channelRead(Decoder.java:38)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:656)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:591)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:508)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:470)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909)
    at java.lang.Thread.run(Thread.java:748)

Update: I do the same for another Azure account (e-mail) and it's works. PR successfully created! I dont't know what's wrong!

ForNeVeR commented 5 years ago

@ali4heydari your issue is likely an error #158 that was hopefully fixed with #200. We will publish a new plugin version that includes this fix soon.

ali4heydari commented 5 years ago

@ForNeVeR Thank You! I apologize for duplicate issue.