je mets en œuvre une JAAS LoginModule, en utilisant l'artefactjetée avec JAAS Owne
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty.version}</version>
La mise en œuvre de LoginModule étend la classe AbstractLoginModule
comme recommandé dans la documentation jetée. Si j'utilise <scope>provided</scope>
pour déclarer la dépendance de jetty-util
alors j'obtiens l'exception
java.lang.NoClassDefFoundError: org/eclipse/jetty/util/security/Credential
avec la cause Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.util.security.Credential
.
Mais si je retire le <scope>
-Tag pour l'inclure dans classpath d'exécution, puis-je obtenir l'exception
javax.security.auth.login.LoginException: java.lang.LinkageError: loader constraint violation: loader (instance of org/codehaus/plexus/classworlds/realm/ClassRealm) previously initiated loading for a different type with name "org/eclipse/jetty/util/security/Credential"
Si j'utilise la valeur par défaut JAAS-mise en œuvre PropertyFileLoginModule
tout fonctionne out-of la boîte. Bien sûr, je n'ai pas à déclarer la dépendance de cet artefact. Il est inclus dans jetty maven plugin.
Toutes les exceptions se produisent lorsque je lance la jetée: run-Plugin dans maven.
Mon implémentation JAAS est séparée dans un artefact, mon projet Web est séparé dans un autre artefact, basé sur l'artefact test-jaas-webapp
fourni par jetty dans github. Comment puis-je utiliser ma propre implémentation JASS en conjonction avec le plugin Jetty Maven?
Environnement: Jetty 9.2.x, Java 1.8_u111, Maven 3
PS: Quelques informations sur Classloader: * https://stackoverflow.com/questions/42720149/the-secureclassloaders-purpose * https://docs.oracle.com/javase/7/docs/api/java/security/SecureClassLoader.html – lazyboy