Security
HTTPS HTTP over SLL Publieke sleutel certificaat Getekend door betrouwbare bron In transport laag
Vereisten JEE: applicatie laag Data integriteit Confidentialiteit Non-repudiation Quality-of-service Auditing
Belangrijke begrippen Identificatie Authenticatie Authorizatie Gebruiker Groep Rol DB Deploy JEE: rol gebaseerd flexibel
Drie manieren Declaratief in WDD Annotaties in klassen Programmatorisch
Authenticatie
Begrippen Realm is verzameling gebruikers met zelfde authenticatie beleid file certificate admin
BASIC Weblaag: met authenticatie paswoord server vraagt een gebruikersnaam en paswoord aan de webclient en verifiëert of deze naam en paswoord geldig zijn door ze te vergelijken met een databank van geauthoriseerde gebruikers. HTTP basisauthenticatie client web browser 1. requests a protected resource 2. requests username/password 3. sends username/password 4. returns requested resource server deployment descriptor: <login-config> <login config> <auth method>basic</auth method> <realm name>file </realm name> </login config> <auth-method>basic </auth-method> <realm-name>file </realm-name> </login-config>
Zelf met FORM form-based authenticatie met zelfontwikkelde loginscherm en errorpagina s client web browser 1. requests a protected resource login.jsp 3. form submitted error.jsp 2. redirect to login page 4. redirected to source error page returned server security check success? failure <login-config> <login config> <auth method>form</auth method> <auth-method>form </auth-method> <realm name>file </realm name> <realm-name>file <form login config> </realm-name> <form login page>/logon. jsp</form login page> <form-login-config> <form error page>/logonerror. jsp</form error page> </form login config> </login config> <form-login-page>login.jsp</form-login-page> <form-error-page>error.jsp</form-error-page> </form-login-config></login-config>
login.jsp <form method=post action="j_security_check" > <input type="text" name= "j_username" > <input type="password" name= "j_password" > </form>
Certificaat met paswoord gebruikersnaam en paswoord gebaseerde mutuele authenticatie truststore server.cert server.keystore server.cert 3. verifies certificate client web browser 1. requests a protected resource 2. presents certificate 4. sends username/password 5. accesses protected resource server
Certificaat Als gebruiker certificaat heeft <login-config> <auth-method>client-cert</auth-method> <realm-name>certificate </realm-name> </login-config>
Wederzijds met certificaat certificaat gebaseerde mutuele authenticatie client.keystore client.cert truststore client.cert server.cert 5. verifies certificate server.keystore server.cert 3. verifies certificate client web browser 1. requests a protected resource 2. presents certificate 4. presents certificate 6. accesses protected resource server
Authorizatie
WDD <security-role-mapping> <role-name> intranet-gebruiker </role-name> <group-name> personeel </group-name> <principal-name> gastdocent </principal-name> </security-role-mapping>
<security-constraint> <web-resource-collection> <web-resource-name>bla</web-resource-name> <url-pattern> /intern/* </url-pattern> <http-method>get</http-method> <http-method>post</http-method> </web-resource-collection> <auth-constraint> <role-name>intranet-gebruiker</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>confidential </transport-guarantee> </user-data-constraint> HTTPS </security-constraint>
Annotaties @RolesAllowed( personeel ) public class SessieBoon {... } @PermitAll @DenyAll public class SessieBoon{ @RolesAllowed( personeel ) public void doewat() {... } }
Programmatie @DeclareRoles( personeel ) class Bla { @Resource SessionContext ctx; public void doewat() { if (ctx.iscallerinrole( personeel ) {...} Principal user = ctx.getcallerprincipal(); } }
Propagatie @RunAs( rol ) public class Bla {... }
Toevoegen van security In web.xml bij tab Security authenticatie methode rollen toevoegen security constraints In Glassfish admin server Config->Realms->File->Manage Users In sun-web.xml bij tab Security Afbeelding gebruikers op rollen