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
JEE: rol gebaseerd • flexibel
DB Deploy
Drie manieren • Declaratief in WDD • Annotaties in klassen • Programmatorisch
Authenticatie
Begrippen • Realm is verzameling gebruikers met zelfde authenticatie beleid
• file • certificate • admin
BASIC met paswoord Weblaag: authenticatie
server vraagt een gebruikersnaam en paswoord aan de webclient en verifi¨eert of deze naam en paswoord geldig zijn door ze te vergelijken met een databank van geauthoriseerde gebruikers. HTTP basisauthenticatie client
1. requests a protected resource
server
2. requests username/password web browser
3. sends username/password 4. returns requested resource
BASIC f i l e l o g i n −c o n f i g >
BASIC file deployment descriptor:
Zelf met FORM
form-based authenticatie met zelfontwikkelde loginscherm en errorpagina’s
client web browser
1. requests a protected resource 2. redirect to login page
login.jsp 3. form submitted
error.jsp
server
4. redirected to source error page returned
security check success ?failure
FORM file login.jsp error.jsp
FORM f i l e l o g i n −c o n f i g >
login.jsp
Certificaat met paswoord
gebruikersnaam en paswoord gebaseerde mutuele authenticatie trustStore
server.keystore
server.cert
server.cert
3. verifies certificate client
1. requests a protected resource 2. presents certificate
web browser
4. sends username/password 5. accesses protected resource
server
Certificaat • Als gebruiker certificaat heeft CLIENT-CERT certificate
Wederzijds met certificaat
certificaat gebaseerde mutuele authenticatie
client.keystore
server.keystore trustStore client.cert server.cert server.cert 5. verifies certificate
client.cert 3. verifies certificate client
1. requests a protected resource 2. presents certificate
web browser
4. presents certificate 6. accesses protected resource
server
Authorizatie
WDD <security-role-mapping> intranet-gebruiker personeel <principal-name> gastdocent
<security-constraint> <web-resource-collection> <web-resource-name>bla /intern/* GET POST intranet-gebruiker <user-data-constraint> CONFIDENTIAL HTTPS
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