Here is what i'm using:

     @Parameter(property = "myplugin.repository")
     private String repository;

     @Parameter(defaultValue = "${session}", readonly = true)
     private MavenSession session;

     @Component
     private SettingsDecrypter settingsDecrypter;

     void someMethod() {
                     Server credentials =
session.getSettings().getServer(repository);
                     if (credentials != null) {
                         credentials =
                                 ofNullable(settingsDecrypter.decrypt(new
DefaultSettingsDecryptionRequest(credentials)))

 .map(SettingsDecryptionResult::getServer) // can be null if it does not
need decryption
                                         .orElse(credentials);
                     }
    }

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le lun. 24 juin 2019 à 12:34, Martin Gainty <mgai...@hotmail.com> a écrit :

>   <server>
>       <id>server001</id>
>       <username>my_login</username>
>       <password>my_password</password>
>       <privateKey>${user.home}/.ssh/id_dsa</privateKey>
>       <passphrase>some_passphrase</passphrase>
>       <filePermissions>664</filePermissions>
>       <directoryPermissions>775</directoryPermissions>
>       <configuration></configuration>
>     </server>
>
> from ${MAVEN_HOME}/conf/settings.xml
>
>
> https://maven.apache.org/ref/3.3.9/maven-settings-builder/apidocs/org/apache/maven/settings/crypto/SettingsDecryptionRequest.html#setServers(java.util.List)
>
> so your
> org.apache.maven.settings.crypto.SettingsDecryptionRequest.setServers needs
> to gather up
> the list of server ids from {MAVEN_HOME}/conf/settings.xml
>
> not so clear as javadoc is missing from maven-settings-builder
> site..romain can you post this info on
> http://maven.apache.org/ref/3.6.1/maven-settings-builder/
>
> ?
> thanks
>
> ________________________________
> From: Romain Manni-Bucau <rmannibu...@gmail.com>
> Sent: Monday, June 24, 2019 1:11 AM
> To: Maven Developers List
> Subject: Re: Maven Security, @Component and MNG-4384
>
> Hi
>
> Did you have a look to org.apache.maven.settings.crypto.SettingsDecrypter?
>
> It can be injected as a component then you can call decrypt on it passing a
> request to the method. You get a new null server if it is not encrypted or
> the new server with everything in clear.
>
> Would that work better for you?
>
> Romain
>
> Le lun. 24 juin 2019 à 03:31, Chris Graham <chrisgw...@gmail.com> a écrit
> :
>
> > Hi everyone,
> >
> > I need to add the ability to load users, passwords etc in a 3rd party
> > plugin.
> >
> > It currently requires a userid and password in the <configuration>
> section
> > of the pom (ugh), ideally, I'd like to look them up from the <servers>
> > section of settings.xml, and even better yet, make use of being able to
> > decrypt passwords.
> >
> > So I did what we all do, and go and look to see what has been done
> before,
> > and I came across this:
> >
> >
> >
> /maven-scm/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/AbstractScmMojo.java:
> >
> >     /**
> >      * When this plugin requires Maven 3.0 as minimum, this component can
> > be removed and o.a.m.s.c.SettingsDecrypter be
> >      * used instead.
> >      */
> >     @Component( hint = "mng-4384" )
> >     private SecDispatcher secDispatcher;
> >
> > and:
> >
> >
> >
> /maven-scm/maven-scm-plugin/src/main/resources/META-INF/plexus/components.xml:
> >
> > <component-set>
> >   <components>
> >     <component>
> >
> > <role>org.sonatype.plexus.components.sec.dispatcher.SecDispatcher</role>
> >       <role-hint>mng-4384</role-hint>
> >
> >
> >
> <implementation>org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher</implementation>
> >       <requirements>
> >         <requirement>
> >           <role>org.sonatype.plexus.components.cipher.PlexusCipher</role>
> >           <role-hint>mng-4384</role-hint>
> >           <field-name>_cipher</field-name>
> >         </requirement>
> >       </requirements>
> >       <configuration>
> >
> > <_configuration-file>~/.m2/settings-security.xml</_configuration-file>
> >       </configuration>
> >     </component>
> >     <component>
> >       <role>org.sonatype.plexus.components.cipher.PlexusCipher</role>
> >       <role-hint>mng-4384</role-hint>
> >
> >
> >
> <implementation>org.sonatype.plexus.components.cipher.DefaultPlexusCipher</implementation>
> >     </component>
> >   </components>
> > </component-set>
> >
> > So, I'm left with the question, what is the current, correct way of
> > accessing userids, passwords (encrypted or not)?
> >
> > I could simply, copy the same approach, but I'd prefer not too, as it's a
> > good opportunity 'to do it right'.
> >
> > Any suggestions?
> >
> > Would we then consider updating the existing maven plugins to support
> this?
> >
> > @Stephen, sounds like a good idea for a blog entry? ;)
> >
>

Reply via email to