mardi 28 avril 2015

JAAS via Wildfly

Hey liebe Leute

Ich will JAAS in einer Java-Anwendung mit Wildfly(8.2.0)Ich hab verschiedene Methoden, Möglichkeiten und Konfigurationen ausprobiert und verwendet.
Begonnen habich mit der Konfiguration von Wildfly in der standalone.xml(im Anhang)

Standalone konfigurieren



1. Bei der Standalone.xml einen neuen Security Realm erstellt:

Code:

<security-realm name="TPRealm">
          <authentication>
                    <jaas name="TPLogin"/>
          </authentication>
</security-realm>


2. Dieser Realm haben als Standard gesetzt:

Code:

<http-connector name="http-remoting-connector" connector-ref="default" security-realm="TPRealm"/>

3. Und dann noch die Security-Domain mit dem Login-Module
Code:

                      <security-domain name="TPLogin" cache-type="default">
                          <authentication>
                              <login-module code="Database" flag="required">
                                  <module-option name="dsJndiName" value="java:jboss/datasources/TourPlanningDS"/>
                                  <module-option name="principalsQuery" value="select passwordHash from TaUser where login=?"/>
                              </login-module>
                          </authentication>
                      </security-domain>

(im Anhang befindet sich die komplette XML-Datei)


Aufruf im Code:


Java Code:

  1.  
  2.  
  3. String username = "Admin";
  4. String password = "admin";
  5.  
  6. PasswordClientCallbackHandler handler = new PasswordClientCallbackHandler(username, "TPRealm", password.toCharAttay());
  7.  
  8. try {
  9. LoginContext loginContext = new LoginContext("TPRealm", handler);
  10. loginContext.login();
  11. } catch (LoginException e) {
  12. System.out.println("Login failed");
  13. return;
  14. }


Bekomme da aber beim "new LoginContext(...)" folgenden Meldung:
javax.security.auth.login.LoginException: unable to find LoginModule class:org.jboss.security.auth.spi.TPLogin





Hab dann im Internet öfters gelesen, dass eine config-Datei benötigt wird (jaas.config)

TPRealm {

org.jboss.security.auth.spi.TPLogin required; // I dont know, what exactly have to stay here

}



Hab diese Datei zu den Properties hinzugefügt:

Java Code:

  1. System.setProperty("java.security.auth.login.config", jaasConfig) //jaasConfig: Pfad zur Datei


Dann kann ich zwar die Zeile mit "new LoginContext(...)" ausführen.
aber dann scheitert es beim "loginContext.login()".
mit folgender Fehlermeldung:
javax.security.auth.login.LoginException: LoginModule-Klasse kann nicht gefunden werden


Ich hab auch den Log von WIldFly beobachtet, hab erwartet dass etwas geloggt wird,
aber da hat sich nichts getan als der Code im Cockpit ausgeführt wurde.

In der Java Applikation habe ich auch folgenden Propertys gesetzt:

Java Code:

  1.  
  2. Properties ejbProps = new Properties();
  3. ejbProps.put("endpoint.name", "client-endpoint");
  4. ejbProps.put("remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED", "false");
  5. ejbProps.put("remote.connections", "default");
  6. ejbProps.put("remote.connection.default.host", "localhost");
  7. ejbProps.put("remote.connection.default.port", "8080");
  8. ejbProps.put("remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS", "false");
  9.  
  10.  
  11. EJBClientConfiguration cc = new PropertiesBasedEJBClientConfiguration(ejbProps);
  12. ContextSelector<EJBClientContext> selector = new ConfigBasedEJBClientContextSelector(cc);
  13. EJBClientContext.setSelector(selector);



Müssen noch weitere Properties noch gesetzt werden?
Muss noch was Anderes beachtet werden?


Falls ihr eine Idee habt, oder euch was auffällt, was falsch ist, bitte meldet euch.

Vielen Dank


JAAS via Wildfly

0 commentaires:

Enregistrer un commentaire