Time for me to stick my head above the parapets!
A little while ago I put my hand up to help Mike out with the AD provider and now I'm part of his team. To Mike's credit, he's done an awesome job of keeping the AD provider moving forward AND there's hardly a posting in the forum that he has not personally responded to.
As a way of introduction, we, Glanton, make a living out of implementing a slightly modified version of DNN as an intranet solution mainly for a very, very large global company. I'm the co-owner and technical director.
The AD provider is largely inherited from the work of Tram Tran Minh who originally wrote it in the days when the norm was still windows NT and Windows Server 2000 was cutting edge. Everything has moved on enormously since then and the provider has morphed into a spaghetti junction of code and calls as it to be all things to all men..
Michael's post (not Mike Horton) stirred me into action and I totally agree that the provider should be re-written from the ground up. I see a need to re-write it as a provider for providers so that if you wanted to write a Facebook provider (e.g.), the DNN provider would provide the best practise frmework to do so, so all you need to do is write three routines:
- IsAuthenticated - and return true or false if you've authenticated the users credentials against your identity store,
- GetUserProfile - and pass an object with name, address, email etc
- Get UserRoles - and pass the "roles' the user belongs to.
and let the DNN provider handle the rest (security, registration settings, profiles, synching roles, notifications etc).
I'm happy to put together a conceptual model for this but before we do so, are there any strong views out there as to what's required?
Consideration (off the top of my head):
Different provider models:
- Active directory (considering intranets, extranets, multple domains and different server environments)
- LDAP
- SQL data stores.
- OpenID
- CardSpace
- LiveID
- Salesforce (i'm really keen to progress this.)
- Facebook
- ??
Common functions to every provider.
- Authentication against the external store.
- Grabbing user profile info from the external store
- Checking if a DNN user exists and either registering or syncing user profile data.
- Role syncing
- Portal registration,
- managing users across multiple portals
- security
- ??
I'm also interested in some of the commercial aspects as a number of people have invested a lot of time and money in developing commercial products. I don't see this proposed excercise as competing but rather moving the whole eco-system forward.
Cheers
Ian