Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] Dependencies resolution through https reverse proxy

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/1.1
Host: 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 <igor@xxxxxxxxxxxxxx>:
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

--
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.
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.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:258)
     at
org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:217)
     at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor(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.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.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.AbstractCreateMavenProjectsOperation.run(AbstractCreateMavenProjectsOperation.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
m2e-users@xxxxxxxxxxx
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
m2e-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/m2e-users



--
Alix Lourme

Back to the top