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