User Authentication and Authorization

CATS security infrastructure for user authentication and authorization to handle both web sessions and API calls. 

Target releaseRelease 1
Theme
Document statusDRAFT
Document ownerYared Ayalew
Designer
DevelopersMichael Debela (Unlicensed)
QA

Goals

  • Provide user authentication for web interface clients and API calls.
  • Provide single-sign-on (SSO) for users who have access to more than one CATS module.
  • To provide a role based user authorization system allowing system administrators define roles using a combination of permissions defined in CATS.
  • User profile management for setting user options such as interface language, themes, keyboard input methods etc.
  • Allow users to manage their account by performing tasks such as password reset and password changing.

Background and strategic fit

CATS security feature initially is based on ASP.NET Membership which is a strict role based user authorization method. Membership provider in ASP.NET provides basic user authorization and authentication feature but falls short for hierarchical user roles. In addition all the user roles need to be hard coded inside the application logic making not only rigid but also impossible the addition of new roles ones the application is deployed. The main goal of this library is to address the above issues by providing separate components for handling user authentication and authorization. In addition user profile management is also considered to be a key component of CATS since other libraries such as Ethiopic Date Library Package and Language Translation Package depend on user profiles.  

Assumptions

  • It should be easy to define new user roles with out requiring redeployment or recompilation of CATS
  • It should be easy to define hierarchical roles allowing administrators to define delegation and permission inheritance between roles
  • It should allow users manage their profile and account information
  • It should be able to store sensitive user information in encrypted format
  • It should not allow the decryption of sensitive user information such as passwords

Requirements

#User Story TitleUser Story DescriptionPriorityNotes
1

Change Password

 

As a user I should be able to change my password

so that I can protect my user information.

High
2Reset Password

As a user I should be able to reset password so that

I can reclaim my user information if I lost my password

High 
3Create Users

As an administrator I want to create users so that they

can log into CATS

High 
4Assign Roles

As an administrator I want to assign roles to users so

that they can access information relevant to their

permission levels

High 
5Create Role Hierarchy

As an administrator I want to create role hierarchy so

that I can simplify permission management in CATS

Medium 
6

Associate Permissions

to Roles

As an administrator I want to associate permissions to

roles so that I will be able to define the access level for

users.

High 
7Manage User Profile

As a user I want to manage my profile so that I will be

able to configure CATS according to my interests

High 
8Configure Roles

As a CATS administrator I want to be able to manage roles

within the system so that I'll be able to manage user

permissions

High 
9Associate Roles with Permissions

As a CATS administrator I want to be able to associate roles with

permissions so that I'll be able to define authorisation for CATS.

High 
10Create Roles

As CATS administrator I want to be able to create new roles so that

I'll be able to provide users the required level of permissions to access

CATS

High 
11Get all permissions for a user

As a developer I want to be able to get the list of all permissions a user

is authorized so that I can use it to render the requested page/UI according

to his/her permission level.

High 

User interaction and design

Questions

Below is a list of questions to be addressed as a result of this requirements document:

QuestionOutcome

Not Doing