Humm ... firstly : my apologies ... my previous tests took a complex
direction, without analysis things in order (but your and my last message
invited me to think correctly).

I found a working case : when I use a clear password in settings.xml.

But when I use a *encrypted password* [1], it fails (so all behaviours I
had are logical).

=> Thread reorientation : Perhaps m2e uses password without decrypt it
before if encryption mechanism is used ?

I will confirm you tomorrow if the "from my job test case" work when proxy
password is "in clear".

[1]
http://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords

Best regards.

2015-02-15 23:55 GMT+01:00 Alix Lourme <[email protected]>:

> Hi Igor,
>
> I tried first with AetherClientResourceFetcher because it was more simle
> to initialize.
> Thanks for the tips, I will check AetherRepositoryConnector.
>
> Yes the problem is always the same : from my home the https connection
> requires an authentication for pass the reverse-proxy security appliance
> (no proxy host configured) and access to intranet maven repository.
>
> But from my job, when I configure the maven repository in https as from
> internet (for test Friday), I need a proxy configuration to go on internet
> before "re" come in company intranet => double authentication used ... the
> 'proxy' authentication first and the 'server' authentication secondly.
>
> In this case, I have the 407 => proxy host used correctly (because
> OkHttpAetherClient throws exception when 407 and no proxy host configured),
> but user/password seems not to be used or bad.
>
> I concede that it could be a complex network schema ... but the security
> is important ^^.
>
> Best regards.
>
> 2015-02-15 23:32 GMT+01:00 Igor Fedorenko <[email protected]>:
>
>> The code snippet you provided authenticates with repository, which
>> corresponds to <server> settings.xml configuration. Are you sure your
>> problem is with proxy authentication, as you originally described?
>>
>> AetherClientResourceFetcher is a helper class for downloading Nexus
>> indexes. Dependency resolver uses AetherRepositoryConnector, which
>> delegates lower-level http/https handling to OkHttpAetherClient.
>>
>> --
>> Regards,
>> Igor
>>
>> On 2015-02-15 17:04, Alix Lourme wrote:
>>
>>> Hi,
>>>
>>> After checking /aether-connector-okhttp/, https authentication should
>>> work : many ssl unit test with JettyServer and
>>> /OkHttpAetherClient.execute/ [1] manages retry with authentication when
>>> first response is 401/407.
>>>
>>> This snippet code (used for getting index repository) works perfectly
>>> (with a MavenPluginActivator.getUserAgent hack ... eclipse Platform not
>>> initialized in a Main).
>>> ------
>>> AuthenticationInfo authInfos = new AuthenticationInfo();
>>> authInfos.setUserName("foo");
>>> authInfos.setPassword("bar");
>>> AetherClientResourceFetcher fetcher = new
>>> AetherClientResourceFetcher(authInfos, null, null);
>>> fetcher.connect(null, "https://repository.company.com/repository";);
>>> fetcher.retrieve("virtual/junit/junit/4.12/junit-4.12.jar", new
>>> File("test.jar"));
>>> ------
>>>
>>> => The /AetherClientResourceFetcher/ is used similary in
>>> /DefaultMetadataResolver/ ?
>>>
>>> [1]
>>> https://github.com/takari/aether-connector-okhttp/blob/
>>> 0fdc67248972a15dbddc5367c1829664f2cbe28f/src/main/java/io/
>>> takari/aether/okhttp/OkHttpAetherClient.java
>>>
>>> Best regards.
>>>
>>> 2015-02-13 18:03 GMT+01:00 Igor Fedorenko <[email protected]
>>> <mailto:[email protected]>>:
>>>
>>>     Looks like m2e does not properly handle 407 Proxy Authentication
>>>     Required responses.
>>>
>>>     m2e is not expected to show authentication popups, either valid
>>>     credentials are provided in settings.xml or connection fails. Same as
>>>     during command line build.
>>>
>>>     Before you start debugging entire m2e sources, you may want to look
>>> at
>>>     aether-connector-okhttp [1], which is http transport library m2e
>>> uses.
>>>     This is where http protocol handling is implemented.
>>>
>>>     [1] https://github.com/takari/__aether-connector-okhttp
>>>
>>>     <https://github.com/takari/aether-connector-okhttp>
>>>
>>>     --
>>>     Regards,
>>>     Igor
>>>
>>>     On 2015-02-13 11:32, Alix Lourme wrote:
>>>
>>>         Hi Igor,
>>>
>>>         Thanks for the reply.
>>>
>>>         /> [...] kind of proxy is this? [...] http/https proxies are
>>>         expected to
>>>         work./
>>>
>>>         Humm ... I hope network team will not see my post so I quote :
>>>         - Some two headers in 401 response is "WWW-Authenticate: BASIC
>>>         realm="Unspecified"" and "Server: BigIP"
>>>         - Detail : the main product of this company, same name as the
>>> key of
>>>         keyboard used in a browser for reload the page ^^
>>>         => Standard
>>>
>>>         /> Can you confirm you get auth popup with recent m2e 1.6 build?/
>>>
>>>         *No* :-(. No authentication popup with v1.6.0.20150203-1921.
>>>
>>>         In my "home" use case : internet -> reverse-proxy -> maven
>>>         repository
>>>         (settings.xml contains only "server" configuration)
>>>         In my today "job" use case for test : intranet -> proxy (iron
>>>         port) ->
>>>         [internet] -> reverse-proxy -> maven repository (settings.xml
>>>         contains
>>>         only "server" & "proxy" configuration)
>>>
>>>         In this case I have the error message : "Failed to authenticate
>>>         with proxy"
>>>         The wireshark analysis shows :
>>>         1) Https URL connect through proxy :
>>>         ---
>>>         CONNECT repository.company.com:443
>>>         <http://repository.company.com:443>
>>>         <http://repository.company.__com:443
>>>         <http://repository.company.com:443>>
>>>         HTTP/1.1
>>>         Host: repository.company.com <http://repository.company.com>
>>>         <http://repository.company.com__>
>>>         Proxy-Connection: Keep-Alive
>>>         User-Agent: m2e/3.10.1.v20140909-1633/1.6.
>>> __0.20150203-1921/1.7.0_71
>>>
>>>         ---
>>>         2) Proxy answer :
>>>         ---
>>>         HTTP/1.1 407 Proxy Authentication Required
>>>         Proxy-Authenticate: Basic realm="[The name of] Security
>>> Appliance"
>>>         ...
>>>         ---
>>>         ... and nothing else.
>>>
>>>         => *m2e is supposed to open an authentication popup even if
>>>         user/password is defined in settings.xml ?*
>>>
>>>         If yes ... perhaps this is the root cause : There is no
>>> (logically)
>>>         preemptive authentication (=> basic auth not in first call) ...
>>> but
>>>         401/407 doesn't provide popup.
>>>
>>>         /> [...] Can you confirm your configuration uses protocol https?/
>>>
>>>         Yes, I check the bug link : active=true / protocol=https
>>>
>>>         /> [...] need to run m2e through debugger [...]
>>>
>>>         /
>>>         Humm ... ok. I will try to load m2e source and write unit test
>>> in my
>>>         real case./
>>>         /
>>>         /
>>>         /
>>>         Thanks./
>>>         /
>>>         Best regards./
>>>         /
>>>
>>>         2015-02-13 1:28 GMT+01:00 Igor Fedorenko <[email protected]
>>>         <mailto:[email protected]>
>>>         <mailto:[email protected] <mailto:[email protected]>>>:
>>>
>>>              What kind of proxy is this? m2e does not support ntlm, but
>>>         standard
>>>              http/https proxies are expected to work.
>>>
>>>              Can you confirm you get auth popup with recent m2e 1.6
>>> build?
>>>
>>>              m2e and command line maven appear to disagree how to handle
>>>         https proxy
>>>              configuration. More specifically, m2e expects proxy
>>>         configuration
>>>              protocol https, while command line maven accepts http. This
>>>         is tracked
>>>              as bug 459638 [1]. Can you confirm your configuration uses
>>>         protocol
>>>              https?
>>>
>>>              Beyond that, you'll need to run m2e through debugger and
>>>         see what
>>>              happens. I usually just change m2e http transport library
>>>         (okhttp) to
>>>              print dump all traffic to console.
>>>
>>>              [1]
>>>         https://bugs.eclipse.org/bugs/____show_bug.cgi?id=459638
>>>         <https://bugs.eclipse.org/bugs/__show_bug.cgi?id=459638>
>>>              <https://bugs.eclipse.org/__bugs/show_bug.cgi?id=459638
>>>         <https://bugs.eclipse.org/bugs/show_bug.cgi?id=459638>>
>>>
>>>              --
>>>              Regards,
>>>              Igor
>>>
>>>              On 2015-02-12 17:19, Alix Lourme wrote:
>>>
>>>                  Hi,
>>>
>>>                  I'm faced to a infrastructure/network problem ... and I
>>>         can't
>>>                  determine
>>>                  if it's a feature not supported, a bug, or other
>>>         (configuration ?).
>>>
>>>                  _Environment_ :
>>>                  - Eclipse Kepler SR2 & m2e 1.4.0 or Luna SR1 & m2e 1.6.0
>>>                  - External Maven v3.2.3 configured as "Installation"
>>>                  - A settings.xml configured as global/user "User
>>>         Settings" (and used
>>>                  with previous Maven)
>>>                  - settings.xml defines a master https company repository
>>>                  (repository &
>>>                  pluginRepository)
>>>                  - settings.xml defines "server" credendials with
>>>         password encryption
>>>                  (settings-security.xml usage)
>>>                  - id of server/repository/____pluginRepository is the
>>>         same in
>>>                  settings.xml
>>>
>>>                  _Use case_ :
>>>                  - My company provides a Maven repository for internal
>>>         developments
>>>                  - This repository can be accessed from internet (https)
>>>         for external
>>>                  developments (at home ^^, no VPN configured, ...) via an
>>>                  infrastructure
>>>                  reverse proxy
>>>
>>>                  _Problem_ :
>>>                  - The dependencies resolution works in Maven command
>>>         line, but not
>>>                  through m2e plugin (only when dependency doesn't exist
>>>         in local
>>>                  repository, classpath configuration works perfectly
>>>         when dependency
>>>                  exists in local repository)
>>>                  - Error is : Access denied to
>>>         https://repository.my-company.____com/repository/virtual/
>>> com/__my-__company/my-artifact/1.0.__0-__SNAPSHOT/maven-metadata.__xml
>>>
>>>         <https://repository.my-__company.com/repository/__
>>> virtual/com/my-company/my-__artifact/1.0.0-SNAPSHOT/maven-__metadata.xml
>>>
>>>         <https://repository.my-company.com/repository/
>>> virtual/com/my-company/my-artifact/1.0.0-SNAPSHOT/maven-metadata.xml>>.
>>>                  Error code 401, Unauthorized
>>>
>>>                  It is minor, but with m2e, I have lost the practice to
>>>         use maven
>>>                  command
>>>                  line ^^.
>>>
>>>                  The error seems to be the same as the direct url access
>>>         via a
>>>                  browser.
>>>                  This direct http call contains the (logically) response
>>>         header
>>>                  'WWW-Authenticate: "BASIC realm="Unspecified""', and
>>>         authentication
>>>                  popup appears.
>>>                  (I can't simply catch m2e http call, wireshark analysis
>>>         on https
>>>                  is not
>>>                  trivial).
>>>
>>>                  => _Hypothesis_ :
>>>
>>>                  - m2e doesn't use server credentials defined in
>>>         settings.xml
>>>                  - m2e doesn't know re-send the http call with
>>>         credentials when
>>>                  reverse
>>>                  proxy answers 401
>>>
>>>                  I note that in the m2e plugin configuration, the maven
>>>         embedded
>>>                  is used
>>>                  for dependencies resolution ... but if settings.xml
>>>         used, it
>>>                  "should"
>>>                  work ...
>>>
>>>                  Plugin seems to configure server credentials
>>>
>>>         (org.eclipse.m2e.core.____internal.repository.____
>>> RepositoryRegistry),
>>>                  so some
>>>                  java properties about native proxy configuration in
>>>         addition to
>>>                  settings.xml are not 'required' (i'm not facing to an
>>>         outgoing
>>>                  proxy).
>>>                  So ... I'm a little lost :-)
>>>
>>>                  This feature is supposed to be supported ? Or I'm wrong
>>> in
>>>                  somewhere ?
>>>                  Any idea are welcome.
>>>
>>>                  Thank you in advance (and globally for your work, m2e
>>>         is simply
>>>                  magic
>>>                  and wonderful).
>>>
>>>                  Complete stack for information (with m2e 1.6.0) :
>>>                  org.eclipse.aether.transfer.__
>>> __MetadataTransferException:
>>>                  [previous error]
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultUpdateCheckManager.____newException(____
>>> DefaultUpdateCheckManager.____java:363)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultUpdateCheckManager.____checkMetadata(____
>>> DefaultUpdateCheckManager.____java:320)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.
>>> DefaultMetadataResolver.____resolve(____DefaultMetadataResolver.java:_
>>> ___332)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.
>>> DefaultMetadataResolver.____resolveMetadata(____
>>> DefaultMetadataResolver.java:____205)
>>>                        at
>>>
>>>         org.apache.maven.repository.____internal.____
>>> DefaultVersionResolver.____resolveVersion(____
>>> DefaultVersionResolver.java:____250)
>>>                        at
>>>
>>>         org.apache.maven.repository.____internal.____
>>> DefaultArtifactDescriptorReade____r.loadPom(____
>>> DefaultArtifactDescriptorReade____r.java:258)
>>>                        at
>>>
>>>         org.apache.maven.repository.____internal.____
>>> DefaultArtifactDescriptorReade____r.readArtifactDescriptor(____
>>> DefaultArtifactDescriptorReade____r.java:217)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____resolveCachedArtifactDescripto____r(__
>>> DefaultDependencyCollector.____java:525)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____getArtifactDescriptorResult(_
>>> ___DefaultDependencyCollector.____java:509)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____processDependency(____
>>> DefaultDependencyCollector.____java:409)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____processDependency(____
>>> DefaultDependencyCollector.____java:363)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____process(____
>>> DefaultDependencyCollector.____java:351)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____doRecurse(____
>>> DefaultDependencyCollector.____java:494)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____processDependency(____
>>> DefaultDependencyCollector.____java:458)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____processDependency(____
>>> DefaultDependencyCollector.____java:363)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____process(____
>>> DefaultDependencyCollector.____java:351)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.____
>>> DefaultDependencyCollector.____collectDependencies(____
>>> DefaultDependencyCollector.____java:254)
>>>                        at
>>>
>>>         org.eclipse.aether.internal.____impl.
>>> DefaultRepositorySystem.____collectDependencies(____
>>> DefaultRepositorySystem.java:____316)
>>>                        at
>>>
>>>         org.apache.maven.project.____DefaultProjectDependenciesReso
>>> ____lver.resolve(____DefaultProjectDependenciesReso____lver.java:172)
>>>                        at
>>>
>>>         org.apache.maven.project.____DefaultProjectBuilder.____
>>> resolveDependencies(____DefaultProjectBuilder.java:____213)
>>>                        at
>>>
>>>         org.apache.maven.project.____DefaultProjectBuilder.build(__
>>> __DefaultProjectBuilder.java:____186)
>>>                        at
>>>
>>>         org.apache.maven.project.____DefaultProjectBuilder.build(__
>>> __DefaultProjectBuilder.java:____118)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____embedder.MavenImpl.____
>>> readMavenProject(MavenImpl.____java:634)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.registry.____
>>> DefaultMavenDependencyResolver____.resolveProjectDependencies(______
>>> DefaultMavenDependencyResolver____.java:63)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.registry.____
>>> ProjectRegistryManager.____refreshPhase2(____
>>> ProjectRegistryManager.java:____529)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.registry.____
>>> ProjectRegistryManager$3.call(____ProjectRegistryManager.java:____491)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.registry.____
>>> ProjectRegistryManager$3.call(____ProjectRegistryManager.java:__1)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____embedder.____
>>> MavenExecutionContext.____executeBare(____MavenExecutionContext.java:___
>>> _176)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____embedder.____
>>> MavenExecutionContext.execute(____MavenExecutionContext.java:____151)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.registry.____
>>> ProjectRegistryManager.____refresh(____ProjectRegistryManager.java:__
>>> __495)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.registry.____
>>> ProjectRegistryManager.____refresh(____ProjectRegistryManager.java:__
>>> __350)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.registry.____
>>> ProjectRegistryManager.____refresh(____ProjectRegistryManager.java:__
>>> __297)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.____
>>> ProjectConfigurationManager.____configureNewMavenProjects(__
>>> __ProjectConfigurationManager.____java:253)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.____
>>> ProjectConfigurationManager$1.____call(____
>>> ProjectConfigurationManager.____java:169)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.____
>>> ProjectConfigurationManager$1.____call(____
>>> ProjectConfigurationManager.____java:1)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____embedder.____
>>> MavenExecutionContext.____executeBare(____MavenExecutionContext.java:___
>>> _176)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____embedder.____
>>> MavenExecutionContext.execute(____MavenExecutionContext.java:____151)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____embedder.____
>>> MavenExecutionContext.execute(____MavenExecutionContext.java:__99)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____embedder.MavenImpl.
>>> execute(____MavenImpl.java:1353)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.internal.____project.____
>>> ProjectConfigurationManager.____importProjects(____
>>> ProjectConfigurationManager.____java:137)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.ui.____internal.wizards.____
>>> ImportMavenProjectsJob$1.____doCreateMavenProjects(____
>>> ImportMavenProjectsJob.java:____73)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.ui.____internal.wizards.____
>>> AbstractCreateMavenProjectsOpe____ration.run(____
>>> AbstractCreateMavenProjectsOpe____ration.java:62)
>>>                        at
>>>
>>>         org.eclipse.m2e.core.ui.____internal.wizards.____
>>> ImportMavenProjectsJob.____runInWorkspace(____
>>> ImportMavenProjectsJob.java:____82)
>>>                        at
>>>
>>>         org.eclipse.core.internal.____resources.____
>>> InternalWorkspaceJob.run(____InternalWorkspaceJob.java:38)
>>>                        at
>>>
>>>         org.eclipse.core.internal.____jobs.Worker.run(Worker.java:__
>>> __54)
>>>
>>>                  --
>>>                  Alix Lourme
>>>
>>>
>>>                  ___________________________________________________
>>>                  m2e-users mailing list
>>>         [email protected] <mailto:[email protected]>
>>>         <mailto:[email protected] <mailto:[email protected]>>
>>>                  To change your delivery options, retrieve your
>>> password, or
>>>                  unsubscribe from this list, visit
>>>         https://dev.eclipse.org/____mailman/listinfo/m2e-users
>>>         <https://dev.eclipse.org/__mailman/listinfo/m2e-users>
>>>                  <https://dev.eclipse.org/__mailman/listinfo/m2e-users
>>>         <https://dev.eclipse.org/mailman/listinfo/m2e-users>>
>>>
>>>              ___________________________________________________
>>>              m2e-users mailing list
>>>         [email protected] <mailto:[email protected]>
>>>         <mailto:[email protected] <mailto:[email protected]>>
>>>              To change your delivery options, retrieve your password, or
>>>              unsubscribe from this list, visit
>>>         https://dev.eclipse.org/____mailman/listinfo/m2e-users
>>>         <https://dev.eclipse.org/__mailman/listinfo/m2e-users>
>>>
>>>              <https://dev.eclipse.org/__mailman/listinfo/m2e-users
>>>         <https://dev.eclipse.org/mailman/listinfo/m2e-users>>
>>>
>>>
>>>
>>>
>>>         --
>>>         Alix Lourme
>>>
>>>
>>>         _________________________________________________
>>>         m2e-users mailing list
>>>         [email protected] <mailto:[email protected]>
>>>         To change your delivery options, retrieve your password, or
>>>         unsubscribe from this list, visit
>>>         https://dev.eclipse.org/__mailman/listinfo/m2e-users
>>>         <https://dev.eclipse.org/mailman/listinfo/m2e-users>
>>>
>>>     _________________________________________________
>>>     m2e-users mailing list
>>>     [email protected] <mailto:[email protected]>
>>>     To change your delivery options, retrieve your password, or
>>>     unsubscribe from this list, visit
>>>     https://dev.eclipse.org/__mailman/listinfo/m2e-users
>>>     <https://dev.eclipse.org/mailman/listinfo/m2e-users>
>>>
>>>
>>>
>>>
>>> --
>>> Alix Lourme
>>>
>>>
>>> _______________________________________________
>>> m2e-users mailing list
>>> [email protected]
>>> To change your delivery options, retrieve your password, or unsubscribe
>>> from this list, visit
>>> https://dev.eclipse.org/mailman/listinfo/m2e-users
>>>
>>>  _______________________________________________
>> m2e-users mailing list
>> [email protected]
>> To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/m2e-users
>>
>
>
>
> --
> Alix Lourme
>



-- 
Alix Lourme
_______________________________________________
m2e-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/m2e-users

Reply via email to