Thoughts on CSNS2 SecurityThe main goal of CSNS2 is to support multiple departments. From the security perspective, this requires that access control decisions be made based on department-level roles instead of systemwide roles. For example, a CS department administrator should be able to manage all CS department resources like classes and surveys, but none of the Tech department resources. The security implementation should be clean (which means separating security code from application code), simple (by taking full advantage of what Spring Security provides), and of course, efficient. Roles
Note that we no longer have ROLE_STUDENT as it would have the same privileges as ROLE_USER. Role ManagementThere's no user interface for managing systemwide roles:
Department roles are managed using the department management interface. In particular, each department keeps tracks of its own lists of administrators, faculty, instructors, and reviewers (see the Department class). When a user is added to (or removed from) a list, the system will automatically add (or remove) the corresponding role to the user. Only department administrators can access the department management interface. User ManagementExpire password and change user credentials (including username) while the user is logged in. URL Access ControlApproach 1: same configuration as regular role-based url access control but use a customized role vote that recognize department roles. Need to get department symbol from URL. Approach 2: secure controller. Need to get department symbol from controller URL mapping. Method Access ControlObject Access Control |