dmihajluk
I'm new here

Crowd-LoginModule

Jump to solution

Hallo zusammen!

Wir haben ein Crowd-LoginModule für unsere Atlassian-Crowd entwickelt und wollten dieses bei FirstSpirit Anmeldung einsetzen.

Das JAR-File mit dem Crowd-LoginModule haben wir in <fs-server>/shared/lib Ordner abgelegt.

Die fs-jaas.conf  Konfiguration wurde wie folgt angepasst:

/*

* JAAS Login Configurations.

*   (for app-to-config mappings see fs-server.conf, JAAS.*)

*/

/* access api authentication (e.g., for remote projects) */

system {

          de.espirit.firstspirit.server.authentication.FSUserLoginModule sufficient hash="true";

          de.espirit.firstspirit.server.authentication.FSTicketLoginModule sufficient;

};

/* JavaClient without Webstart, without SSO */

plain {

          net.payback.global.portal.firstspirit.crowd.CrowdLoginModule optional section="CROWD";

          // de.espirit.firstspirit.server.authentication.LdapLoginModule optional section="LDAP";

          de.espirit.firstspirit.server.authentication.FSUserLoginModule optional;

};

/* JavaClient without Webstart, with SSO */

sso {

          de.espirit.firstspirit.server.authentication.FSTicketLoginModule sufficient;

          // de.espirit.firstspirit.server.authentication.LdapLoginModule optional section="LDAP";

          de.espirit.firstspirit.server.authentication.FSUserLoginModule optional;

};

/* FirstSpirit start page without SSO: WebClient, JavaClient with Webstart */

webplain {

          net.payback.global.portal.firstspirit.crowd.CrowdLoginModule optional section="CROWD";

          // de.espirit.firstspirit.server.authentication.LdapLoginModule optional section="LDAP";

          de.espirit.firstspirit.server.authentication.FSUserLoginModule optional;

};

/* FirstSpirit start page with SSO: WebClient, JavaClient with Webstart */

websso {

          de.espirit.firstspirit.server.authentication.FSTicketLoginModule sufficient;

          // de.espirit.firstspirit.server.authentication.KerberosLoginModule optional useFullPrincipal="false";

          // de.espirit.firstspirit.server.authentication.RequestHeaderLoginModule optional authHeader="iv-user"

          //     allowedCerts="CN=proxy1,OU=editors,DC=domain;CN=proxy2,OU=editors,DC=domain"

          //     allowedAddrs="10.11.12.13;10.11.12.14";

          // de.espirit.firstspirit.server.authentication.LdapLoginModule optional section="LDAP";

          de.espirit.firstspirit.server.authentication.FSUserLoginModule optional;

};

/* required additional configuration for KerberosLoginModule: */

/*

com.sun.security.jgss.accept {

   com.sun.security.auth.module.Krb5LoginModule required

     principal="HTTP/fs4host.mydomain.net@MYDOMAIN.NET"

     keyTab="/opt/firstspirit4/conf/fs4host-HTTP.keytab"

     useKeyTab="true"

     storeKey="true"

     isInitiator="false"

     doNotPrompt="true"

     debug="false";

};

*/

Das Anmelden über die FirstSpirit-Web-Oberfläche funktioniert einwandfrei und erzeugt folgende LOG-Ausgabe:


INFO  29.08.2016 09:59:20.771 (net.payback.global.portal.firstspirit.crowd.CrowdAuthentication): CrowdAuthentication | init.

INFO  29.08.2016 09:59:21.172 (net.payback.global.portal.firstspirit.crowd.CrowdLoginModule): Crowd authentication for user 'dmihajluk' succeeded.

INFO  29.08.2016 09:59:21.175 (de.espirit.firstspirit.server.authentication.FSUserLoginModule): login failed: User does not exist or password is invalid!

INFO  29.08.2016 09:59:21.180 (de.espirit.firstspirit.server.usermanagement.UserManagerImpl): App Password 'Default' login from address '127.0.0.1' granted

INFO  29.08.2016 09:59:21.182 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Client called 'login' from ip 127.0.0.1

INFO  29.08.2016 09:59:21.183 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=84106025277266581, user=dmihajluk, userID=26557, type=WEB) created

INFO  29.08.2016 09:59:21.183 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session with ID=84106025277266581 bound to ip 127.0.0.1

INFO  29.08.2016 09:59:21.191 (de.espirit.firstspirit.io.servlet.WebAuthentication): web login successful, user=UserDTO[id=26557, login=dmihajluk, name='Danil Mihajluk', mail=danil.mihajluk@payback.net], session=84106025277266581

Wenn ich mich entweder direkt über Konsolenaufruf

java -Dmode=http -Dhost=localhost -Dport=8000 -Dlogin.user=user -Dlogin.password=pass -jar fs-client.jar

oder programmatisch über

de.espirit.firstspirit.access.Connection connection = de.espirit.firstspirit.access.ConnectionManager.getConnection(host, port, mode, username, password);

connection.connect();

mit FirstSpirit verbinden möchte, dann funktioniert das nicht und resultiert in folgender LOG-Ausgabe:

ERROR 29.08.2016 10:00:40.154 (de.espirit.firstspirit.logging.ServerLogging): Client error: login failed from 10.51.18.92: LoginModule-Klasse kann nicht gefunden werden: net.payback.global.portal.firstspirit.crowd.CrowdLoginModule

Hat jemand eine Idee woran es liegen könnte, dass die Klasse plötzlich nicht gefunden werden kann, obwohl sie ein paar Sekunden davor noch da war?

Vielen Dank im Voraus!

Danil.


1 Solution

Accepted Solutions

Johannes Brunswicker schrieb:

funktioniert der Konsolenaufruf denn, wenn Sie über den -cp Parameter den Classpath so erweitern, das ihr CrowdLoginModule.jar mit inkludiert wird?

Der Aufruf könnte dann wie folgt aussehen

java -cp /path/to/CrowdLoginModule.jar -Dmode=http -Dhost=localhost -Dport=8000 -Dlogin.user=user -Dlogin.password=pass -jar fs-client.jar

Das ist in der Kommandozeile leider ein Fehler, "-cp" und "-jar" können nicht kombiniert werden. Korrekt muss der Aufruf wie folgt lauten:

java -cp "CrowdLoginModule.jar;fs-client.jar" -Dmode=http -Dhost=localhost -Dport=8000 -Dlogin.user=user -Dlogin.password=pass net.payback.global.portal.firstspirit.CLI

In dieser Kombination sollte das funktionieren.

Peter

View solution in original post

7 Replies
jobrun
Crownpeak employee

Hallo Herr Mihajluk,

funktioniert der Konsolenaufruf denn, wenn Sie über den -cp Parameter den Classpath so erweitern, das ihr CrowdLoginModule.jar mit inkludiert wird?

Der Aufruf könnte dann wie folgt aussehen

java -cp /path/to/CrowdLoginModule.jar -Dmode=http -Dhost=localhost -Dport=8000 -Dlogin.user=user -Dlogin.password=pass -jar fs-client.jar

Mit freundlichen Grüßen

Johannes Brunswicker

0 Kudos

Hallo Johannes,

danke für die Antwort.

Leider hat es nicht geholfen.

Grüße

Danil.

0 Kudos

Hallo Johannes,

habt Ihr eine weitere Idee?

Danke & Grüße,

Maik

0 Kudos

Issue ist beim tecsupport in der analyse...

0 Kudos

Hier der Stack-Trace vom Fehlerfall:

2016-09-07 14:20:11,491 [main] INFO  net.payback.global.portal.firstspirit.common.connection.ConnectionHandler  - Try to get connection for [ host:localhost | port:8000 | mode:1 | username:dmihajluk | password:****** ]

2016-09-07 14:20:12,894 [main] ERROR net.payback.global.portal.firstspirit.common.connection.ConnectionHandler  - Connection failed due to: couldn't authenticate!

de.espirit.firstspirit.server.authentication.AuthenticationException: couldn't authenticate!

        at de.espirit.firstspirit.client.io.ConnectionImpl.connect(ConnectionImpl.java:254)

        at net.payback.global.portal.firstspirit.common.connection.ConnectionHandler.tryToConnect(ConnectionHandler.java:87)

        at net.payback.global.portal.firstspirit.common.connection.ConnectionHandler.getConnection(ConnectionHandler.java:65)

        at net.payback.global.portal.firstspirit.common.task.AbstractConnectionTask.getConnection(AbstractConnectionTask.java:28)

        at net.payback.global.portal.firstspirit.migration.jobs.AbstractMigrationJob.getProject(AbstractMigrationJob.java:152)

        at net.payback.global.portal.firstspirit.migration.jobs.AbstractMigrationJob.doLockUnlockProject(AbstractMigrationJob.java:178)

        at net.payback.global.portal.firstspirit.migration.jobs.AbstractMigrationJob.preMigrate(AbstractMigrationJob.java:316)

        at net.payback.global.portal.firstspirit.migration.jobs.AbstractMigrationJob.execute(AbstractMigrationJob.java:339)

        at net.payback.global.portal.firstspirit.migration.MigrationTask.execute(MigrationTask.java:37)

        at net.payback.global.portal.firstspirit.migration.MigrationProxy.execute(MigrationProxy.java:18)

        at net.payback.global.portal.firstspirit.CLI.main(CLI.java:124)

Caused by: javax.security.auth.login.LoginException: LoginModule-Klasse kann nicht gefunden werden: net.payback.global.portal.firstspirit.crowd.CrowdLoginModule

        at javax.security.auth.login.LoginContext.invoke(Unknown Source)

        at javax.security.auth.login.LoginContext.access$000(Unknown Source)

        at javax.security.auth.login.LoginContext$4.run(Unknown Source)

        at javax.security.auth.login.LoginContext$4.run(Unknown Source)

        at java.security.AccessController.doPrivileged(Native Method)

        at javax.security.auth.login.LoginContext.invokePriv(Unknown Source)

        at javax.security.auth.login.LoginContext.login(Unknown Source)

        at de.espirit.firstspirit.server.authentication.AuthLoginContext.login(AuthLoginContext.java:30)

        at de.espirit.firstspirit.client.io.ConnectionImpl.connect(ConnectionImpl.java:230)

        ... 10 more

2016-09-07 14:20:12,895 [main] ERROR net.payback.global.portal.firstspirit.CLI  - couldn't authenticate!

0 Kudos

Johannes Brunswicker schrieb:

funktioniert der Konsolenaufruf denn, wenn Sie über den -cp Parameter den Classpath so erweitern, das ihr CrowdLoginModule.jar mit inkludiert wird?

Der Aufruf könnte dann wie folgt aussehen

java -cp /path/to/CrowdLoginModule.jar -Dmode=http -Dhost=localhost -Dport=8000 -Dlogin.user=user -Dlogin.password=pass -jar fs-client.jar

Das ist in der Kommandozeile leider ein Fehler, "-cp" und "-jar" können nicht kombiniert werden. Korrekt muss der Aufruf wie folgt lauten:

java -cp "CrowdLoginModule.jar;fs-client.jar" -Dmode=http -Dhost=localhost -Dport=8000 -Dlogin.user=user -Dlogin.password=pass net.payback.global.portal.firstspirit.CLI

In dieser Kombination sollte das funktionieren.

Peter

Hallo Peter,

danke für den Hinweis!

So funktioniert es!

Grüße

Danil.

0 Kudos