+ All Categories
Home > Documents > Web Application Access Control with Java SE...

Web Application Access Control with Java SE...

Date post: 24-Jun-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
30
Java Forum Stuttgart 2009 Web Application Access Control with Java SE Security Jürgen Groothues Stuttgart, 02.07.2009
Transcript
Page 1: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Java Forum Stuttgart 2009

Web Application Access Control with Java SE Security

Jürgen Groothues

Stuttgart, 02.07.2009

Page 2: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.20092

Agenda

1. Access Control Basics

2. The Java Authentication and Authorization Service (JAAS)

3. Enhancement and Application of JAAS

4. Role-Based Access Control

5. Instance-Based Access Control

6. Sample Application: A Personal Health Record

Page 3: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.20093

Access Control Basics

SubjectResource

Environment

Action

Subject : A user, system, etc.

Resource : A file, printer, domain object, etc.

Action : An operation on a resource (read, print, create, etc.)

Environment : Access control relevant attributes not available from Subject,Action or Resource (time, location, …)

Access Control : Controls performing an Action in accordance with a Policy

Access Control

Page 4: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.20094

Access Control Architecture

Subject Resource

PEP

PDP

PAPPEP: Policy Enforcement PointPDP: Policy Decision PointPAP: Policy Administration Point

Environment

Policy Store

1. Businessrequest

6. Businessrequest

5. Access decision

2. Accessrequest

4. Policy

3. Attributes(optional)

Page 5: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.20095

Agenda

1. Access Control Basics

2. The Java Authentication and Authorization Service (JAAS)

3. Enhancement and Application of JAAS

4. Role-Based Access Control

5. Instance-Based Access Control

6. Sample Application: A Personal Health Record

Page 6: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.20096

Limitations of JEE Security

With the declarative JEE security model, it is difficult to change security policies when new requirements arise

The declarative model limits the expressiveness of security policies

Only one authentication method per application allowed

Supports only limited set of authentication methods

Page 7: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.20097

Java Authentication and Authorization Service (JAAS)

Originally, Java SE Authorization was based exclusively on the code accessing resources and authentication was based on digital signatures applied to the code

JAAS was designed to address this shortcoming and is part of Java SE since V. 1.4

JAAS authentication is an implementation of the Pluggable Authentication Module (PAM) framework and allows applications to authenticate independently from the underlying technology (user/password, certificate,…)

JAAS authorization allows access control based on who is executing the code

Page 8: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.20098

JAAS Authentication

JAAS Authentication

JAAS Configuration

javax.security.auth.login.LoginContext

API

SPI

javax.security.auth.spi.LoginModule

login() throws javax.security.auth.login.LoginException

initialize(Subject s, CallbackHandler c,Map sharedState, Map options);

login() throws LoginException;

commit() throws LoginException;

abort() throws LoginException;

logout() throws LoginException;

Page 9: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.20099

JAAS Authorization

JAAS Authorization

Permission: encapsulates access control relevant attributes of Action and ResourceAccessControlException: thrown if access to Resource is deniedProtectionDomain: provides Subject

java.security.AccessController

API

SPI

java.security.Policy

checkPermission(java.security.Permission)throws java.security.AccessControlException

implies(java.security.ProtectionDomain,java.security.Permission)

Page 10: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200910

Agenda

1. Access Control Basics

2. The Java Authentication and Authorization Service (JAAS)

3. Enhancement and Application of JAAS

4. Role-Based Access Control

5. Instance-Based Access Control

6. Sample Application: A Personal Health Record

Page 11: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200911

Application of JAAS Authentication

JAAS Authentication

ServletFilter-driven Enforcement

DefaultLoginModule

LoginModule

LoginContext

User Store

FormLoginFilter

ServletFilter

BasicLoginFilter

ServletFilter

CertificateLoginFilter

ServletFilter

PinLoginFilter

ServletFilter

JAASConfiguration

PluggableAuthenticator

Page 12: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200912

Subject and Principals

javax.security.auth.Subject

UserPrincipal

A successful authenticated subject is represented in Java by a javax.security.auth.Subject instance

A subject is associated with identities. In Java an identity is represented by the java.security.Principal interface

An application provides Principal implementations

java.security.Principal

RolePrincipal

*

Page 13: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200913

Application of JAAS Authorization

JAAS Authorization

Annotation-driven Enforcement

Subject Resource

Security AnnotationFramework (SAF)

Access DecisionFramework

ExtensibleAccess Decision

Policy

AccessController

Page 14: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200914

AspectJ

Security Annotation Framework (SAF)

SpringAOP Proxy

SpringBean

JAASAdapter

DomainObject

Subject

Resource

Resource

MethodInterceptor

AspectJAdvice

Spring AOP

Created at runtime

RT

RT

Created at compile timeCT

1 1

2

4

3

2

3

4

EnhancedBytecode

CT

SAF AccessManager

Page 15: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200915

public interface RecordService {

@Filter

public Set<Record> findAll();

public Record create (@Secure (SecureAction.CREATE) Record record);

}

SAF Service Annotations

Page 16: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200916

@SecureObject

public class Record {

private Set<Medication> medications;

@Secure (SecureAction.UPDATE)

public void addMedication(Medication medication) {

medications.add(medication);

}

...

}

SAF Domain Object Annotations

Page 17: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200917

Access Decision Framework

java.security.Policy

Product

use via runtime configuration

*

AccessPolicy

1AccessDecision

Voter

AccessDecisionCombiner

ProductAccessDecision

Combiner

ProductAccessDecision

Voter A

ProductAccessDecision

Voter B…

implements useextends

1

Page 18: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200918

Enabling JAAS in a Web Application

A JEE-compliant Web Application Server (WAS) is required to support JAAS

However, the JEE specification does not require a WAS to use JAAS as its own authentication and authorization mechanism

JAAS has to be enabled by the web application itself:Set the JAAS policy during application startup, i.e. call java.security.Policy.setPolicy(customPolicy) in the ContextListener

Use one (or more) JAAS authentication servlet filter/s

Use a JAAS authorization servlet filter that adds a Subject to the JAAS access control context (i.e. call javax.security.auth.Subject.doAsPrivileged(…)

JAASAuthentication

Filter

request JAASAuthorization

Filter

requestServlet

request

e.g. FormLoginFilter, PinLoginFilter, etc…

DoAsPrivilegedFilter

Page 19: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200919

Agenda

1. Access Control Basics

2. The Java Authentication and Authorization Service (JAAS)

3. Enhancement and Application of JAAS

4. Role-Based Access Control

5. Instance-Based Access Control

6. Sample Application: A Personal Health Record

Page 20: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200920

Role-Based Access Control (RBAC)

Role A Role B Role C

P1 P2P3

“Bob”

P4

Pn Permission n

Permission Assignment

Principal

Effective Permissions for Subject “Bob”: P1,P2,P3,P4

JAAS Subject “Bob” :

Bob

Role A

Role B

Role C

P4

P1

-

P2,P3

PermissionRole Assignment

Page 21: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200921

Hierarchical Role-Based Access Control (HRBAC)

User

Professional

Physician

P1

P2P3

“Bob”

Pn Permission n Permission Assignment

Physician

Bob

PermissionPrincipal

Effective Permissions for Subject “Bob”: P1,P2,P4

JAAS Subject “Bob” :

Pharmacist

Non-Professional

Parent Role Assignment

P4

-

P4

P2

P1

Professional

User

Page 22: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200922

Principal Provider Pattern

JAAS Authentication

CompositePrincipalProvider

LoginModule

LoginContext

JAASConfiguration

RolePrincipalProvider

OrganizationPrincipalProvider

PrincipalProvider

DefaultLoginModule

use via JAAS configuration implements use

Product

*

Page 23: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200923

Agenda

1. Access Control Basics

2. The Java Authentication and Authorization Service (JAAS)

3. Enhancement and Application of JAAS

4. Role-Based Access Control

5. Instance-Based Access Control

6. Sample Application: A Personal Health Record

Page 24: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200924

Instance-Based Access Control (IBAC)

“Bob”

:Recordowner=“Bob”

:Recordowner=“Alice”

:Recordowner=“Paul”

:Recordowner=…

Policy:Bob has access on Recordswhere owner = “Alice” or “Bob”

No Access on other Records

Instances of domain objects are secured resources

Access decisions are based on the state of the instances

:Recordowner=“Sue”

Page 25: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200925

@SecureObject

public class Record {

...

@SecurityRelevant

private String owner;

...

}

Annotation-Driven IBAC

The PEP extracts all security relevant attributes from the domain object instance and puts them into a java.security.Permission implementation.

Page 26: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200926

Agenda

1. Access Control Basics

2. The Java Authentication and Authorization Service (JAAS)

3. Enhancement and Application of JAAS

4. Role-Based Access Control

5. Instance-Based Access Control

6. Sample Application: A Personal Health Record

Page 27: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200927

Sample Application

Record

Use Cases- Create a new user with roles and an associated new record

- Grant access rights to a user

- Add medications and observations to a record

Medication

*

Personal Health Record User Management

Observation

* *

User

Role

*

Domain Model

owner 1

Page 28: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200928

Sample Application Technology

Libraries:Java SE 6

Spring IOC / AOP / MVC V. 2.5

Security Annotation Framework (SAF) V. 0.9

Servlets V. 2.5

AspectJ V. 1.6

TestingJUnit V. 4.4

EasyMock V.2.4

BuildMaven V. 2.0

PlatformTomcat V. 6.0

Page 29: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200929

Resources

Java SE Securityhttp://java.sun.com/javase/technologies/security/

Security Annotation Platform (SAF)http://safr.sourceforge.net/

OASIS eXtensible Access Control Markup Language (XACML)http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml

Enterprise Java Security: Building Secure J2EE Applications by Marco Pistoia et al., Addison Wesley, 2004

Creative Commons Iconshttp://creativecommons.org/licenses/by-nd/3.0/

Page 30: Web Application Access Control with Java SE Securityalt.java-forum-stuttgart.de/jfs/2009/folien/F1.pdf · 07-02-2009  · Access Control Basics 2. The Java Authentication and Authorization

Web Application Access Control with Java SE Security02.07.200930

Contact

E-Mail: [email protected]

www.icw-global.com

InterComponentWare AGJürgen Groothues

Industriestraße 41

69190 Walldorf, Germany


Recommended