Implementing An Extensible Role-Based Security Module in a Java Web Development Framework Joe Hesse Technology Director, UCSF Memory and Aging Center Dept.

Slides:



Advertisements
Similar presentations
Pharos Uniprint 8.3.
Advertisements

Design Validation CSCI 5801: Software Engineering.
METALOGIC s o f t w a r e © Metalogic Software Corporation DACS Developer Overview DACS – the Distributed Access Control System.
SESSION TWO SECURITY AND GROUP PERMISSIONS Security and Group Permissions.
Securing web applications using Java EE Dr Jim Briggs 1.
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
U of R eXtensible Catalog Team MetaCat. Problem Domain.
EmpowHR EmpowHR Security Overview. 2 Application Security Administration Permission List Roles User Profiles Row level security Distributed Security Administration.
Chapter 14: Advanced Topics: DBMS, SQL, and ASP.NET
SiS Technical Training Development Track Technical Training(s) Day 1 – Day 2.
LDS Account and the Java Stack. Disclaimer This is a training NOT a presentation. – Be prepared to learn and participate in labs Please ask questions.
Localization Roadmap Content Localization in DNN neXt Sebastian Leupold.
Page 1 ISMT E-120 Desktop Applications for Managers Introduction to Microsoft Access.
1 ASP.NET SECURITY Presenter: Van Nguyen. 2 Introduction Security is an integral part of any Web-based application. Understanding ASP.NET security will.
Welcome 2013 User Group Meeting Voting on New Features.
Information storage: Introduction of database 10/7/2004 Xiangming Mu.
1 Kuali Identity Management Advanced CAMP: Identity Services Summit for Higher Ed Open / Community-Source Projects.
Web Application Development. Define ER model in QSEE Generate SQL Create Database mySQL Write Script to use TableEditor class Process to create A simple.
Web Application Development. Tools to create a simple web- editable database QSEE MySQL (or PHPMyAdmin) PHP TableEditor.
Eric Westfall – Indiana University Jeremy Hanson – Iowa State University Building Applications with the KNS.
Enticy GROUP THE A Framework for Web and WinForms (Client-Server) Applications “Enterprise Software Architecture”
Building Search Portals With SP2013 Search. 2 SharePoint 2013 Search  Introduction  Changes in the Architecture  Result Sources  Query Rules/Result.
RECALL THE MAIN COMPONENTS OF KIM Functional User Interfaces We just looked at these Reference Implementation We will talk about these later Service Interface.
Extending Vista The PowerLinks WebServices SDK John Hallett Senior Product Manager WebCT, Inc
Microsoft SharePoint Server 2010 for the Microsoft ASP.NET Developer Yaroslav Pentsarskyy
WDK Overview How the WDK implements MVC and provides a base from which custom sites can be created.
11 CORE Architecture Mauro Bruno, Monica Scannapieco, Carlo Vaccari, Giulia Vaste Antonino Virgillito, Diego Zardetto (Istat)
Building Applications with the KNS. The History of the KNS KFS spent a large amount of development time up front, using the best talent from each of the.
Dr. Mustafa Cem Kasapbaşı Security in ASP.NET. Determining Security Requirements Restricted File Types.
Oracle Data Integrator Transformations: Adding More Complexity
What’s new in Kentico CMS 5.0 Michal Neuwirth Product Manager Kentico Software.
New & Improved Events List Relationships and Joins Large List Support Field & List Item Validation.
1 Kuali Nervous System (KNS) Part 1 Presented by: Jerry Neal – KFS Development Manager Geoff McGregor – KC Lead Developer Brian McGough – KRice Project.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
Kuali Identity Management Overview. Why did we write KIM? Common Interface for Kuali Applications Provide a Fully-Functional Product A Single API for:
Matt Arena, Fermilab.  Overview of SPMS  SPMS History & Statistics  Fermilab  Users, Roles & Privileges (Fine-grained Access)  System Parameters.
Secure Systems Research Group - FAU SW Development methodology using patterns and model checking 8/13/2009 Maha B Abbey PhD Candidate.
Building Secure Web Applications With ASP.Net MVC.
Information Management System “Good Practice Module" Information Management System “Good Practice Module" The Good Practice / Success Stories module is.
What is Web Site Administration Tool ? WAT Allow you to Configure Web Site With Simple Interface –Manage Users –Manage Roles –Manage Access Rules.
2/26/021 Pegasus Security Architecture Author: Nag Boranna Hewlett-Packard Company.
Windows Role-Based Access Control Longhorn Update
Permissions Lesson 13. Skills Matrix Security Modes Maintaining data integrity involves creating users, controlling their access and limiting their ability.
 Registry itself is easy and straightforward in implementation  The objects of registry are actually complicated to store and manage  Objects of Registry.
Master Data Management & Microsoft Master Data Services Presented By: Jeff Prom Data Architect MCTS - Business Intelligence (2008), Admin (2008), Developer.
KEW Definitions Document Type The Document Type defines the routing definition and other properties for a set of documents. Each document is an instance.
Database and Information Management Chapter 9 – Computers: Understanding Technology, 3 rd edition.
Introduction to KE EMu
Database Security Cmpe 226 Fall 2015 By Akanksha Jain Jerry Mengyuan Zheng.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
Information Management System “Institutions Module" Information Management System “Institutions Module" The System management module is an integrated part.
Computer Security: Principles and Practice
8 Copyright © 2004, Oracle. All rights reserved. Making the Model Secure.
Information Management System “Project Module" Information Management System “Project Module" The Project module is an integrated part of System. The back.
Module 6: Administering Reporting Services. Overview Server Administration Performance and Reliability Monitoring Database Administration Security Administration.
Securing Web Applications Lesson 4B / Slide 1 of 34 J2EE Web Components Pre-assessment Questions 1. Identify the correct return type returned by the doStartTag()
Module 5: Managing Content. Overview Publishing Content Executing Reports Creating Cached Instances Creating Snapshots and Report History Creating Subscriptions.
Active Directory Domain Services (AD DS). Identity and Access (IDA) – An IDA infrastructure should: Store information about users, groups, computers and.
Spaso Lazarević Microsoft MVP Nova banka ad Banja Luka Building business application using Visual Studio 2013 LightSwitch.
VOCAB REVIEW. A field that can be computed from other fields Calculated field Click for the answer Next Question.
Building KFS using KNS Presented by James SmithJustin Beltran University of ArizonaUniversity of California, Irvine.
Developing Custom ASP.NET Providers For Membership And Role Manager Stefan Schackow PRS404 Program Manager – Web Platform and Tools Microsoft Corporation.
October 2014 HYBRIS ARCHITECTURE & TECHNOLOGY 01 OVERVIEW.
Architecture Review 10/11/2004
CollegeSource Security Application &
TPM and TPM Security Technologies
…and web frameworks in general
…and web frameworks in general
Access Control What’s New?
Presentation transcript:

Implementing An Extensible Role-Based Security Module in a Java Web Development Framework Joe Hesse Technology Director, UCSF Memory and Aging Center Dept. of Neurology Memory and Aging Center June 17, 2009 UCCSC 2009, June 17, :45-3:45PM

Talk Overview Framework security code that is reusable –Needs to work for different types of applications –Present the core framework structures and how they have been extended to support our Clinical Research Data Management system. Authorization (not authentication) –What can the user do (not who the user is)

Our Environment Clinical research: neurodegeneration (Alzheimer’s) –Multiple projects with different protocols that share the same participants –Projects with multiple sites (across institutions) –Multi-disciplinary approaches / assessments imaging, pathology, genetics, neurology, cognitive science Different data models and business workflow (e.g. clinical vs. laboratory) –Requirement to integrate data Use central / common databases where possible Use common development platform –Highly regulated environment for security and patient confidentiality (HIPAA, IRB/CHR)

Requirement 1: Restrict / Allow Access to Application Functionality User requests to access and/or perform application functionality need to be validated against configurable “rights” assignments Initial Design Questions: –How is application functionality structured –How are users and user “rights” structured –How are authorization checks performed

Application Functionality Structure Applications are composed of “actions” Actions are organized into meaningful “modules” and “sections” Each action has a specific workflow (e.g. entity CRUD flow: create, read, update, delete) [Format][instance].[scope].[module].[section].[target] Patientlava.crms.people.patient.patient Change Password lava.core.home.prefs.changePassword User Listlava.core.admin.auth.authUsers

lava.crms.people.patient.patient

lava.core.home.prefs.changePassword

lava.core.admin.auth.authUsers

Role Based Security Model User is defined for each user of the system Users are assigned to one or more Groups Groups (or users) are assigned Roles Roles are assigned Permissions on Actions

ER Diagram - Role Based Security Model

Permission Assignment to Roles

Authorization Checking Every action request is checked for authorization by the controller layer –Action type defines what requests are checked (e.g. view, edit, delete, add for entity actions). –Simple refreshes of screens, filtering or paging of lists do not require authorization check. Results of the authorization checks are cached for quicker lookup on repeated actions Using a delegate pattern to abstract application specific authorization code from the core framework.

Authorization Check Sequence Diagram

Authorization Cache Sequence Diagram

Authorization Check Code

Role Cache Initialization Psuedo-code: initialize(actions, permissions ){ rolePermissions = {re-group permissions by role} defaultPermissions = {extract permissions for Default Role} for each Action { Events = { get authorization events for the action type} for each event { add key to cache for [action-event] for each role { record in cache whether role is authorized for [action/event] Uses isPermitted() routine }

isPermitted() algorithm isPermitted(action, defaultPermissions, rolePermissions) 1) if any role permission denies the action then not permitted 2) if any role permission permits the action then a) if the role permission is NOT “overridden” by a default denying permission then permitted. 3) if any default permission denies the action then not permitted. 4) if any default permission allows the action then permitted. 5) otherwise… not permitted.

Default deny override example…

Requirement 2: Filter Data Access Based on needs of the Application Restrict access to actions backed by entities that the user is not authorized to access –Handles when user is authorized to access the action, but not the specific data requested at runtime –e.g. opening the patient info screen for a patient the user is not authorized to view Restrict the data displayed on list screens –Hibernate Filtering –User is authorized to access the listing action, but only a subset of the data in the database.

Patient / Project Authorization Every patient record is associated with at least one project. Authorization structures extended to support assigning roles to users in the context of specific research projects Base Entity Java Interface/Class extended to support patient and project authorization Hibernate Persistence Layer filtering for project and patient access verification.

Patient - Project ER Diagram

CRMS Authorization Extensions CrmsAuthUserRole –Added Project / Unit properties to model. –Wildcards (“*”) allow role assignment to “all” projects CrmsAuthUser –Added Project / Patient Access Lists (used by data filters) and properties CrmsAuthorizationDelegate –Extends authorizationCheck() routine to make authorization check in the context of a specific project. CrmsAuthorizationContext –Passed to authorization checks for crms actions –wraps the project/unit properties used for auth checks

CRMS User Role Assignments

Crms Entity Extensions All model objects in the framework implement the LavaEntity interface. Crms model objects are derived from the CrmsEntity base class: –getPatientAuth() & getPatient() True if the the entity is associated with a specific patient If true, the entity must return the patient through getPatient() e.g. visit is for a single patient –getProjectAuth() & getProject() True if the the entity is associated with a specific project If true, the entity must return the project through getProject() e.g. enrollment status record is for a specific project

CRMS Auth Checking Code

Data Filtering: Hibernate Filters Hibernate persistence layer “writes” all the SQL based on mapping files that link tables and columns to classes and attributes. Hibernate has a filter mechanism that allows the developer to write a piece of SQL that gets added to the where clause when enabled Filter can be turned on/off and parameterized programmatically

CRMS Filter Definitions Project in (Select Project from ProjectUnit Where Project in (:projectList)) PIDN in (select PIDN from EnrollmentStatus where Project in (:projectList))

Hibernate Query Code

CrmsAuthUser Filters Code