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