Spezifikation / Framework-APISecurity4.0

Jakarta Security

Jakarta Security standardisiert Authentifizierung, Identity Store und Security Context für EE-Anwendungen.

Einordnung
Spezifikation / Framework-API
Enterprise-Rolle
Sie schafft portable Security-Bausteine, ohne jedes Mal serverabhängige Login-Module zu schreiben.
Diagramm zu Jakarta Security

Fachliches Verständnis

Sie schafft portable Security-Bausteine, ohne jedes Mal serverabhängige Login-Module zu schreiben. In der Praxis ist wichtig, die Spezifikation nicht mit der konkreten Runtime zu verwechseln. Der Standard beschreibt die portablen APIs, die Implementierung entscheidet über Konfiguration, Performance, Betrieb und Support.

Kernkonzepte

  • HttpAuthenticationMechanism.
  • IdentityStore.
  • SecurityContext.
  • Rollen und Berechtigungen.

Typische Einsatzfälle

  • Form/Login/OIDC-Integration je Runtime.
  • SecurityContext im Fachservice prüfen.

Technisches Beispiel

java
@ApplicationScoped
public class ApplicationSecurityConfig {
    @Produces
    public HttpAuthenticationMechanism mechanism() {
        return new CustomFormAuthenticationMechanism();
    }
}

@Path("/admin")
@RolesAllowed("ADMIN")
public class AdminResource {
    @Inject SecurityContext security;
    @GET public String dashboard() { return "User=" + security.getCallerPrincipal().getName(); }
}
Architekturregel: Jakarta APIs gehören an Systemgrenzen und Infrastrukturpunkte. Fachentscheidungen bleiben in Application Services und Domain-Modellen testbar und möglichst unabhängig vom Container.

Enterprise-Fallen

  • Rollenmodell zu grob.
  • Security-Regeln nur im UI.
  • Passwort/Secret-Handling in Code.

Legacy-Modernisierung

JAAS/LoginModule-Legacy kann durch standardisierte Mechanismen und externe Identity Provider ersetzt werden.

Vertiefung: Review-Fragen für Senior-Entwickler
  • Welche Spezifikation ist hier wirklich nötig?
  • Welche Runtime-Funktion wird genutzt und ist sie portabel?
  • Wo liegt die Transaktionsgrenze?
  • Sind API-Verträge, DTOs und Domain-Modelle getrennt?
  • Ist der Code ohne Application Server testbar?