Seminarvortrag – Security

Werbung
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
Herunterladen