Seminarvortrag – Security
Vortragender: Sven Engel
Gliederung
Einleitung
Deklarative Sicherheit
Programmatische Sicherheit
Security in Jboss
Einleitung – Warum Security ?
Datenschutz
Informationssicherheit
Schutz Personenbezogener Daten
Vertraulichkeit
Integrität
Verfügbarkeit
Authentizität
Einleitung
Begriffe:
Rolle:
Gruppierung von Benutzern
mit gemeinsamen Rechten.
Authentifizierung:
Wer ?
Autorisierung:
Womit ?
Einleitung - Gedanke der Sicherheit
Die Autorisierung eines Benutzers
umfasst die Feststellung Seiner
Identität und die Authentisierung
dieser Identität.
Das einfachste Verfahren hierfür ist
die Eingabe von Benutzername und
Passwort.
Deklarative Sicherheit
Die Sicherheitsrichtlinien werden im
Deployment Deskriptor festgelegt
Vorteile:
Leicht zu verstehen und ausserhalb
des Quellcodes
Programmatische Sicherheit
Sicherheitsrichtlinien werden im
Quellcode festgelegt
Vorteil:
Flexibel innerhalb des Quellcodes
Nachteil:
Meist schwer nachvollziehbar
Security in JBoss
JAAS
Java Authentication and Authorization Services
Konfiguriert via
login-config.xml
jboss-web.xml
web.xml
Unterstützt benutzerbasierte Autorisierung
NullSecurityManager als Standard
Security in JBoss –
Authentifizierungsverfahren
Kein
Basic
Standard-Eingabe via Browser
Form Based
Startseite und Fehlerseite werden dem
Server vorgegeben
Client Certificate
Authentifizierung via Zertifikat
Security in JBoss - Login Module
Identity login module
nur zu Testzwecken, Nutzer- u. Rolleninfos im Modul
Users roles login module
Infos zu Nutzer und Rollen in Property-Files
LDAP login modul
Infos liegen in einem LDAP-Server
Database login module
Infos liegen in einer Datenbank
Client login module
führt keine Authentifizierung durch
Security in JBoss – login-config.xml
Definieren der Security Domain in der Serverkonfiguration
<application-policy name=„MusterDomain“>
<authentication>
<login-module code=
„org.jboss-security.auth.spi.UserRolesLoginModule“
flag = „required“>
</login-module>
</authentication>
<application-policy>
Hier können auch zusätzliche Moduloptionen definiert werden. Z.b.:
<module-option name „principalsQuery“>
SELECT PW FROM USER WHERE LOGIN=?
</module-option>
Security in JBoss – web.xml
Definition des Security Constraint
<security-constraint>
<display-name>
MusterSecurityConstraint
</display-name>
<web-resource-collection>
<web-resource-name>SicherResource</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description></description>
<role-name>Musterrolle</role-name>
</auth-constraint>
</security-constraint>
Security in JBoss – web.xml
Definition der Login Variante
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/logon.jsp</form-login-page>
<form-error-page>/logonError.jsp</form-error-page>
</form-login-config>
</login-config>
Alternativen:
<auth-method>BASIC</auth-method>
<auth-method>CLIENT-CERT</auth-method>
Security in JBoss – jboss-web.xml
Security Domain dem Web-Projekt zuordnen
<jboss-web>
<security-domain>
java:/jaas/MusterDomain/
</security-domain>
.
.
.
</jboss-web>
Security in JBoss
getRemoteUser()
getUserPrincipal()
liefert den Namen des authentifizierten Nutzers oder null
liefert das Objekt, in dem die Benutzerdaten gespeichert
sind oder null
isUserInRole(String role)
true, falls der authentifizierte Nutzer zu der angegebenen
Rolle gehört andernfalls false
Security in JBoss
Session Bean schützen
import javax.annotation.security.RolesAllowed;
import org.jboss.annotation.security.SecurityDomain;
@Stateless
@SecurityDomain(„MusterDomain")
@RolesAllowed(„superuser")
@RolesAllowed({„superuser", „user„, …})
@PermitAll