GEDOPLAN

EJB-Security auf JBoss AS 7.2 (aka EAP 6.1)

Alle

Mit JBoss 7.2 ist das Verhalten bei Aufrufen von EJB-Methoden strikter geworden. Wenn die EJBs überhaupt Security unterworfen sind (z. B. durch Zuordnung einer Security Domain im Deskriptor jboss-ejb3.xml), werden Methoden-Aufrufe ohne eine explizite Erlaubnis (also @PermitAll, @RolesAllowed bzw. analoge Deskriptor-Einträge) abgelehnt.

Die EJB-Spezifikation ist an der betreffenden Stelle IMHO so formuliert, dass solche Methoden von jedem User aufgerufen werden dürfen:

It is possible that some methods are not assigned to any security roles nor annotated as DenyAll or contained in the exclude-list element. In this case, the Deployer should assign method permissions for all of the unspecified methods, either by assigning them to security roles, or by marking them as unchecked. If the Deployer does not assigned method permissions to the unspecified methods, those methods must be treated by the container as unchecked.

Um dieses Verhalten auch bei JBoss 7.2 zu erhalten, gibt es mehrere Optionen:

  • Modifikation der Serverkonfiguration. Das Element <default-missing-method-permissions-deny-access> (im Subsystem ejb3) hat im Defaultzusand den Wert true. Setzt man es auf false, können die o. a. Methoden wieder aufgerufen werden.
  • Setzen des Verhaltens für Methoden ohne Security-Rolle für einzelne oder alle EJBs einer Anwendung im Deskriptor jboss-ejb3.xml:
    <?xml version="1.0"?>
    <jboss:jboss xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jboss="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:security:1.1" version="3.1" impl-version="2.0">
      <assembly-descriptor>
        <s:security>
          <ejb-name>*</ejb-name>
          <s:security-domain>other</s:security-domain>
          <s:missing-method-permissions-deny-access>false</s:missing-method-permissions-deny-access>
        </s:security>
      </assembly-descriptor>
    </jboss:jboss>
  • Explizite Rollenzuordnung für jede EJB: Annotiert man jede EJB mit @PermitAll, so können alle Methoden, die keine andere Security-Annotation tragen, von jedem User aufgerufen werden. Diese Änderung ist zwar für jede EJB notwendig, hat aber den Vorteil, dass sie keine Speziallösung für JBoss 7.2 darstellt.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Schulungen mit der selben Kategorie:

Blogkategorie: Alle
Es wurden keine Ergebnisse gefunden.

weitere Artikel

Kontakt

Brauchen Sie eine individuelle IT-Schulung, eine fundierte Beratung oder eine individuelle Softwareentwicklung? Dann sind Sie hier genau richtig!

Tim Neumann

Geschäftsleitung

GEDOPLAN GmbH
Stieghorster Straße 60
33605 Bielefeld

GEDOPLAN GmbH
Kantstraße 164
10623 Berlin

    Kontakt

    Tim Neumann

    Geschäftsleitung

    GEDOPLAN GmbH
    Stieghorster Straße 60
    33605 Bielefeld

    GEDOPLAN GmbH
    Kantstraße 164
    10623 Berlin

    Brauchen Sie eine individuelle IT-Schulung, eine fundierte Beratung oder eine individuelle Softwareentwicklung? Dann sind Sie hier genau richtig!