Project for Rui G. -- 2

Hi Rui G., I noticed your profile and would like to offer you my project. We can discuss any details over chat.

* Overall Objective

Create the architecture and design of a LDAP based single sign-on platform.

Implement the system's services and applications.

* Prerequisites

The following prerequisites should be respected.

*. Use one major technology stack for development:

1. C# 6.0

2. ASP.NET MVC for web application development

3. ASP.NET Web API for REST API development

4. MSTest for unit tests

*. Use the following database and development environment tools according to the technology stack chosen:

1. Visual Studio 2015

2. MS SQL Server

3. The web applications should be built using some modern MVVM/MVP/MVC javascript architecture:

*. You must use one of these front-end frameworks:

1. AngularJS (version 1 or 2)

2. ReactJS

*. The javascript code should have unit tests. You must use one of these frameworks:

1. Jasmine

2. Mocha

*. You must automate testing and deployment of the web application using one of these task automation tools:

1. Gulp

2. Grunt

** Requirements

** Functional Specifications

The system allows custom authentication and authorization based upon an LDAP directory. In an organization, users and groups are stored in an LDAP directory.

All the intranet applications are supposed to use this directory for authentication and authorization, to implement SSO. You have to create a common system for these applications to use for such authentication and authorization.

The system is composed of the following components:

* Create a REST API that:

1. Authenticates users against the LDAP directory.

2. Keeps track of currently authenticated users, for later validations.

*. Create a web application that:

1. Contains a login page where users accessing client applications are redirected for authentication. This page should authenticate users using the REST API described in the previous item.

*. Create a http interceptor that:

1. Provides custom authentication and authorization for the client applications using the REST API.

2. Can be installed either on web server for all applications or be enabled in a specific application.