I have been asked by an AE whether it would be possible for us to create a custom login page for iMIS that allowed users to login to iMIS using either their Facebook, google or twitter credentials, 
All these apps now use OAuth 2 - which I have been reading about here developers.facebook.com/docs/authentication/. and here oauth.net/2/
I know that normally we like to do things the other way around - make the CRM system the master login, and then pass an authentication cookie out to whatever sites. What we are trying to achieve is to make it easier for people to login to an iMIS website and make transactions or create content etc... So, if a user, for example sees an event promoted by a friend on facebook, they can click on the event link and just sign up for the event, without having to log in to iMIS. This would require us to work the other way around to how we like to . Facebook does the authorisation and passes that over to iMIS which logs the user in.
I wanted to ask some developer types whether it is feasible for us to create a custom iPart that would allow us to do this. My concerns regards this are:-
- How do we link a specific iMIS account to a specific facebook account? When I log in to (say) FlickR with my google account, it creates a new FlickR account for me under that google login, and there seems to be no way to link my current FlickR account with my Google login. This would be disastrous in iMIS.
- How do we stop the creation of duplicates when new accounts are created off (eg) Facebook (see above)?
- What happens if we have disabled the person's login in iMIS (eg if they didn't pay their membership fees), but they can authenticate against facebook successfully?
- What are the security implications? If someone's twitter account gets hacked, could this expose iMIS data?
Also interested
I'm also interested in this. I'm 3/4 of the way through a project to provide single-sign-on between eCM and several other client sites using Shibboleth. While all login screens live on the Shibboleth server, Shibboleth validates against the iMIS 15 logins (aspnet_Users et al).
Shibboleth allows users to be authenticated (prove who they are) using any one of multiple providers. For this client, iMIS is the only source. Once Shibboleth knows who the person is, the identification (what do we know about you?) and authorization (what can you access?) can draw from multiple sources at the same time (e.g. membership status from iMIS, community selections from Drupal, exam registration status from Experient).
As part of this research, I learned a bit about how iMIS authenticates and how ASP.NET security works. iMIS uses a custom Membership Provider, which covers authentication and authorization. (Note: then they built a web service around this called MembershipWebService.) It should be possible to configure IIS to use a completely different custom Membership Provider -- one which asks how they want to log in (iMIS vs. OAuth2). If they choose a different login source, then once the identity is known, the existing MembershipWebService takes care of the basic identity information. If they choose iMIS, then the new custom Membership Provider would call on ASI's.
It may also be that you could just tell iMIS to use OAuth for all authentication. This would be unsupportable by ASI Tech Support, but then most SSO solutions worth talking about cause the same problems.
This is all theoretical. I would expect a custom membership provider to be something that takes effort measured in weeks or months, not days.
--
Bruce Wilson
Director, Technical Services
RSM McGladrey, Inc.