ENAPP
HSLU ENAPP
HSLU ENAPP
-
- 1 / 75
-
Flashcards
Erklären Sie die Funktionsweise von Stub und Skeleton
Proxy Modell
Wenn eine EJB-Client-Komponente eine Session Komponente aufruft, gibt der Container eine Referenz zum Komponenten EJVObjet zurückt.
Wie nennt man das Interface das die Gegenstelle zum API bildet und die eine Problemlose Kommunikation mit dem Java API ermöglichen soll?
-
JNDI SPI - Service Provider Interface
Welche 2 Services stellt das JNDI zur Verfügung?
-
Directory-Service
- Naming-Service
Was muss als allererstes erzeugt werden bei einer möglichen, Verwendung eines Naming Services, um ein Java Objekt zu registrieren?
-
Initial Context (JNDI Name, Port sind enthalten)
Nennen Sie einige der Basismethoden mit denen Sie auf den Namensdienst zugreifen resp. navigieren?
- Bind - InitialDirConexdt
- Unbind - Context.Close()
- Search - Context.Search()
- Add - Context.createSubContext()
- Delete - Context.destroySubContext()
- Modify - Context.modifyAttributes()
Was ist ein distinguished Name (dn) und wie setzt er sich zusammen?
Ein Distinguished Name ist ein globaler, autoritärer Name einer Instanz
Mit dem dn ist eine weltweit eindeutig Unterscheidbarkeit von Personen oder Systemen gegeben
- DC domainComponent
- CN commonName
- OU organizationalUnitName
- O organizationName
- STREET streetAddress
- L localityName
- ST stateOrProvinceName
- C countryName
- UID userid
Welche 4 Modelle implementiert das LDAP Protokoll?
- Informations-Modell (Information-Modell)
- Names-Modell (Naming-Modell)
- Funktions-Modell (Access-Modell)
- Sicherheits-Modell (Security-Modell)
Welche Operation nennt man Interrogation Operations (Abfrage) und welches Äquivalent hat sie in der Welt der Datenbanken?
LDAP -> Search
DB -> Read
CIA/NSA -> Waterboarding
Was ist besonderes an einer LDAP Anfrage (ganz im Gegensatz zu einer DB Anfrage?)
-
Bind & Unbind bevor und nach der Operation (LDAP)
-
Bei DB bleibt die Verbindung über längere Zeit offen
- LDAP ist optimiert auf Read aber nicht auf Write
Welche Arten von Enterprise-Beans kennen Sie?
-
Session- (stateful, stateless, singleton),
-
Message-Driven- (stateless),
- (Entity-Bean)
Welche Eigenschaften besitzen die Session Beans?
Eine SessionBean wird angelegt, wenn eine neue Session beginnt. Sie lebt solange wie die Session selbst.
Entspricht einem JSF Managed Bean Scope “Session”
Welche 2 Methodenarten können in einem EJB implementiert werden?
Lebenszyklus- oder Call Back Methoden
- Werden vom Container aufgerufen
- Ein EJB Komponenten Entwickler kann diese Methoden implementierenBeispiel: @PreDestroy oder @PostConstruct (z.B. leerer Konstuktor und alle Abhängigkeiten (@Inject) aufgelöst sind)
Business Methoden
- Programmatisch aufgerufen
Auf welche Art greift ein Client auf ein Bean zu?
-
Local,
-
Remote od.
- WebService
Brauchen alle Beans ein Interface?
Nein, es gibt auch No-Interface, welches sich gleich verhält wie LOCAL.
Einfach ohne ein Business-Interface
Kann ein Rich-Client auf ein Bean mit “local” definiertem Interface zugreifen?
Nein. Zugriff auf local nur innerhalb selber JVM
Wieso haben Beans eine spezielle Namenskonvention?
Um den JDNI-Lookup zu vereinfachen. Die Konvention wird nicht explizit von Java vorgeschrieben, sondern ist mehr eine Richtlinie.
Wie viele Stateful und Stateless beans können vom container erzeugt werden, pro User Session?
-
Stateless:N,
- Stateful:1
Wann wird eine Annotation ignoriert?
-
Wenn der gleiche Inhalt im XML definiert ist.
- Es gilt XML vor Annotationen
Wenn sie zur Laufzeit etwas vom Container wissen/verwenden möchten, wie machen sie das?
Zugriff über EJBContext
- Zugriff zu Container Laufzeit Kontext
SessionContext und MessageDrivenContext
- erweitern EJBContext und stellen zusätzliche Methoden, spezifisch zum Bean Typ zur Verfügung (Security, Transaktion bezogen, Lookup)
Wie nennt man die Beans wo man im Web-Tier am besten eine Referenz auf ein Session Bean macht?
Managed Bean (Backed Bean)
Wie überprüft die Java Plattform sicherheitstechnisch die Ausführung des Java Codes?
-
Compiler
-
Bytecode Verifier (Java Interpreter überprüft Class File (See 0xCAFEBABE in .class))
-
Class Loader (6.2)
- Security Manager
Welche Sicherheit bietet der Java Class Loader?
3 Arten für die Sicherheit beim Laden von Klassen:
Class Loader und Namespaces
Trusted Class Libraries - Trustet/Untrustet einschränkung möglich
Protected Domains - zuordnung einmaldig bei erstellung
Was ist eine protected Domain?
Jede Klasse wird einmalig bei ihrer Erzeugung einer Protection-Domain zugeordnet
- Eine Protection Domain ist eine Zuordnung von Rechten zu bestimmten Code(CodeSource, Principal)
- Kann während der Lebenszeit einer Klasse nicht mehr geändert werden
- Kapselt CodeSource, Principal array, ClassLoader und PermissionCollection
Worauf baut die Java Programmiersprache ihre Sicherheit auf?
Java wurde entwickelt mit dem Ziel Anwendungen eine sichere Platform zu bieten
- Keine Pointer sondern Objektreferenzen
- Virtuelle Maschine - überwacht Programmausführung und Rechte
- Strenge Typisierung
- private, protected, package, public (Sichtbarkeiten)
- Exceptions - definierte und kontrollierte Programmabbrüche
- • Strenge Arraygrenzen - kein Zugriff auf benachbarte Entitäten
Was ist Jaas?
Java Authentication and Authorization Service (JAAS) ist ein Java-API, welches es ermöglicht, Dienste zur Authentifizierung und Zugriffsrechte in Java-Programmen bereitzustellen. JAAS orientiert sich an den Pluggable Authentication Modules (PAM) und unterstützt dadurch eine benutzerbasierte Autorisierung.
Erklären Sie deklarative und programmatische Sicherheit!
Deklarative Security
Im Deployment Descriptor (DD) wird definiert wer auf welche EJB und/oder welche Methoden zugreifen kann oder welche URL aufrufen darf. Roles & Permissions in ejb-jar.xml and web.xml
Programmatische Sicherheit wird Programmiert, z.Bsp. Authentifizierung eines Users gegen einen LDAP dienst.
Vorteile: Losgelöst von Software selbst
Programmatische Security
Innerhalb der Bean-Implementation kann auf die Identity zugegriffen werden, damit Context-spezifische Security angewendet werden kann Deklarative and Programmatische Security werden typischerweise zusammen verwendet
Welche Ziele verfolgen die Java EE Sicherheitsspezifikationen?
Portabilität: „Write Once, Run Anywhere“
Transparenz: Applikationsentwickler müssen keine tiefgründigen Kenntnisse über Security haben um ihre Applikationen zu entwickeln
Isolation/ Abstraktion: Trennung von Business und Security – Der Deployer kann die Sicherheit hinzufügen
Erweiterbarkeit: Die Portabilität der Applikation wird durch die Einbindung von Sicherheits-Services nicht behindert
Unabhängigkeit: Die Einbindung von verschiedenen Sicherheitstechnologien soll möglich sein
“oh my god, they’ve got laser beams - ptieu, ptieu ptieu!”
Was ist ein Realm?
Realm?
• komplette „Datenbank“ mit Usern und Gruppen (Webapplikation)
• identifiziert valide User einer Applikation
Realm-Typen:
• File-Realm
• Certificate-Realm
• LDAP-Realm
Was sind die wichtigsten Objekte im JAAS?
Benutzer sind entweder Personen oder Dienste (Subject) und können mehrere Identitäten (Principal) und Berechtigungen (Credential) besitzen.
Zeichnen Sie die JEE Sicherheitsarchitektur!
EJB Security Modell - Web Security Modell
(zugr. Meth)--------------------(zugr. URL)
Roles
Container Security Services
Principals
Transport Level Security (SSL)
Network Infrastructure
Wie setzen sie die deklarative Sicherheit für die Autorisation im EJB Tier um?
1. Der Deployer definiert die Rollen im Deployment Descriptor (kann auch über Annotations im Code hinterlegt werden)
2. Der Deployer definiert im Deployment Descriptor die Zugriffsrechte der Business-Methoden mittels zuweisen der Rollen (kann auch über Annotations im Code hinterlegt werden)
3. Deployer definiert das Mapping der Gruppen zu den deklarierten Rollen im herstellerspezifischen Deployment Descriptor
4. Optinonal (Herstellerspezifische Deployment Descriptors, nicht in standard / Herstellerspezifische Einstellungen, nicht in Standard XML)
Wie setzen Sie die programmatische Sicherheit für die Autorisation im EJB Tier um?
1. Applikationsentwickler implementiert die programmatische Authorizations-Logik innerhalb des Bean-Codes
2. Applikationsentwickler deklariert die abstrakte Security-Rolle im Deployment Descriptor der Bean
3. Der Deployer definiert das Mapping der abstrakten Security- Rollen zu den deklarierten Rollen (der spezifischen Umgebung) im Deployment Descriptor
4. Deployer definiert das Mapping der Gruppen zu den deklarierten Rollen im herstellerspezifischen Deployment Descriptor
AJAx Komponenten mit Erklärungen im Detail
f:ajax render=@form -> update felder in form
Attribute vom f:ajax Tag
- event: Name des Ereignisses, das die Ajax-Anfrage auslöst. Mögliche Werte sind valueChange für Eingabekomponenten, action für Steuerkomponenten.
- execute: Eine durch Leerzeichen separierte Liste der IDs jener Komponenten, die beim Bearbeiten der Ajax-Anfrage durch JSF im Lebenszyklus ausgeführt werden sollen.
- render: Eine durch Leerzeichen separierte Liste der IDs jener Komponenten, die beim Bearbeiten der Ajax-Anfrage durch JSF im Lebenszyklus gerendert werden sollen.
- onevent: Erlaubt das Registrieren einer JavaScript-Callback-Funktion für Ajax-Ereignisse.
- onerror: Erlaubt das Registrieren einer JavaScript-Callback-Funktion für Fehler, die beim Bearbeiten der Ajax-Anfrage auftreten.
- disabled: Das Ajax-Verhalten wird "abgeschaltet", wenn dieses Attribut auf true gesetzt ist.
Java Script API
-
jsf.ajax.request(source, event, options):
-
Diese Methode sendet eine Ajax-Anfrage an den Server.
-
-
jsf.ajax.response(request, context):
-
Diese Methode bearbeitet die Anwort des Servers auf die AjaxAnfrage und ist für Endanwender nicht relevant.
-
-
jsf.ajax.addOnError(callback):
-
Diese Methode registriert eine Callback-Funktion zum Behandeln von Fehlern, die während der Bearbeitung der Ajax-Anfrage aufgetreten sind.
-
-
jsf.ajax.addOnEvent(callback):
- Diese Methode registriert eine Callback-Funktion zum Behandeln von Ajax-Ereignissen.