Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Hosted-services / Azure

Fairlie Authentic - Cloud based user management

0.00/5 (No votes)
28 Apr 2013CPOL3 min read 6.3K  
A cloud based authentication and user management service

This article is an entry in our Windows Azure Developer Challenge. Articles in this sub-section are not required to be full articles so care should be taken when voting. Create your free Azure Trial Account to Enter the Challenge.

Introduction

If you intend to develop a cloud based service one of the first challenges is how to manage users that sign up to your service and authenticate them.  

While there are cloud based services that provide this functionality as a separate service from your core application some might prefer to keep this development in-house and have it integrated with your core service. The intention here is to open source the code so producers of cloud based services can modify the code as they see fit for their particular business needs and maintain control of their user base independent of third parties. 

The purpose of this project is to produce a module that can be slotted into your cloud based application that can handle user registration, authentication, roles & subscriptions.  

It is intended that developers will be able to integrate the service directly into their application and be able call it from a number of platforms e.g. browser/http or Windows Phone App. 

This application will be based on a company model where billing will be done at the company level based on the number of users belonging to that company. The principles will remain the same, and the code should be able to be modified quite easily, if you choose to base your subscriptions at an individual level. 

Background 

This article has been created for the Windows Azure Developer Challenge

Azure benefits

When building a system that uses authentication, security is a huge concern - Azure provides a trusted, secure and reliable server environment so that I, as the developer, can concentrate on application security and features. 

Also, the ease with which Azure can be scaled means you can be sure it will be a great platform when the application you have developed has succeeded and is taking on lots of new users. 

Requirements 

  • A User can resister for the service 
  • A User belongs to at least 1 Company
  • A new User can join an existing company or create a new company 
  • A Company may be billed for the number of Users it has 
  • A Company has at least 1 Company Admin User 
  • A User can register with OAuth & Windows live account. Or; 
  • A User can register directly with the application 
  • A User can edit their profile 
  • A Company Admin can edit all users in their company 

Technical Details

We're still in the planning stages here but the likely technologies for the Service will be:

  • Azure Website or Azure Cloud Service 
  • Web API  
  • Lightspeed ORM
  • Azure SQL Databases 
And for the front end we will provide code examples for:

  • Azure website running a .NET website 
  • Windows Phone App based on HTML/JavaScript 

Nice to haves

The following is a list of features that are intended to be part of the end solution but may not be developed as part of this competition:

  • Windows Phone 8 App - test application for service
  • Direct Messaging System - Send notifications to users (e.g. "Site will be down for maintenance...")
  • Push notifications - Send notifications to WP users. 
  • Integration with a payment provider
  • Integration with SendGrid 
  • An Umbraco based Azure Website for marketing the code 

Points of interest

I've learnt a lot so far from the following sites:

http://devhammer.net/blog/building-back-end-data-and-services-for-windows-8-apps-odata---part-1#.UXtIIrX-Em7

http://www.windowsazure.com/en-us/develop/net/tutorials/web-site-with-sql-database/ 

History 

Version 1.0 - 27 Apr 2013. First draft

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)