One of the more thankless jobs at MSN Windows Live is to work on the Passport team.
Many of the product teams that are customers of the service tend to
view it as a burden, myself included. One of the primary reasons for
this is that instead of simply being the username/password service for MSN
Windows Live it is actually a single-sign in system which encompasses a
large number of sites besides those owned by Microsoft. For example, you can use the same username and password to access your email, travel plans or medical information.
Trevin Chow of the Passport team has written a blog post entitled Why does Passport sign-in suck? where he addresses one of the pain points its customers face due to its legacy as a single sign-in system. He writes
Q: Why do you keep asking me to sign in over and over again even
though I've checked "automatically sign me in"? What don't you understand about
"automatic"?!
One of the biggest problems with see in the network of MSN, Windows Live
and Microsoft sites is that Passport sign-in is seen way too often by users. It
appears as if we are disregarding your choice of "automatically sign me in" and
randomly asking you to sign in when we want with no rhyme or reason...
Passport sign-in 101
Passport sign in is based on cookies. Because HTTP is stateless, we have
only 2 ways of persisting information across requests -- the first being to
carry it on the query string, and second via HTTP cookies. The first
method (query string) isn't useful across browser sessions (open IE, close it,
and re-open), which leaves us only option 2 (cookies). Cookies are the mainstay
of modern web sites, and allows very powerful personalization and state
management. Passport leverages this to provide the world's largest web
authentication (aka sign-in) system in the world.
Passport first validates your identity by validating your "credentials"
(email address and password combination) that you typed in on our sign-in UI.
Once validated, Passport uses cookies in the passport.com and the partner's
domain (eg. www.live.com, MSN Money, MSDN) to
vouch for your identity. The cookies in our partner's domain act as assertions
that you are who you say you are. Because each partner site trusts Passport,
the sign-in authority, assertions about a user's identity from Passport are also
trusted by the partner.
...
After you sign into one partner site in the "passport network", users can
freely go to subsequent partner sites and sign in. This is where the magic of
Passport comes into play and single sign-on is
achieved. When you visit another partner site, and click "sign in" you
are redirected to Passport servers. Because you already authenticated once to
Passport (represented through your passport.com cookies), we don't need to
validate your credentials again and can issue a service ticket for this new
partner website.
But Trevin, you just said that "because you already
authenticated once to Passport <snip>, we don't need to validate you
credentials again...". That clearly isn't the case since I seem to keep
getting asked for my password!
In the last section, especially the last paragraph, I purposely left out
some detail for simplicity. We can dive into more detail now that you have a
better high-level understanding of the flow of passport sign-in.
In order to have a secure single sign-on system, you simply cannot have one
prompt for a login then be able to access any site. It sounds
counter-intuitive, since that's what "single sign-on" seems to imply. This
would only be possible if every single website you accessed had the same level
of security and data sensitivity. We all know that this is not the
case, and instead, sites vary in the level of security needed to protect it.
On the lower end of the spectrum (least sensitive), we have sites like www.live.com, which is merely personalization.
In the middle, have sites like Live
Mail, which has personal information such as email from your friends. On
the extreme end of the scale (most senstitive) we have sites like Microsoft Billing which contains your
credit card information. Because of this varying levels of data sensitivity,
each site in the Passport network configures what we'll call their "security
policy" which tells passport parameters to enforce during sign in which is
supposed to be directly related to their data sensitivity -- the more sensitive
the information therein, the "tighter" the security policy.
...
All our partner websites currently have a mis-matched set of security
policies, each set at their own discretion of their team's security champ. It's
because of the inconsistent security plicies, you keep getting asked for your
password over and over.
Wow, so this sounds like a tough problem to solve. How are you
going to fix this?
Our team is absolutely committed to make the sign in
experience the best on the internet. To fix this
specific problem, our team is moving to a centralized definition of security
policies. What does this mean? Instead of each partner website telling us the
specific parameters of the security policy (such as time window), they instead
will tell us an ID of a security policy to enforce, whose definition will be on
the Passport sign-in servers. This means, that by offering a limited set of
security policies we limit the mistakes partner websites can make, and we will
inherently have more consistency across the entire network for sign in.
Additionally, it gives us more agility to tweak both the user experience and
security of the network since Passport is in total control of the
parameters.
This is just one consequence of Passport's legacy as a single-sign in system causing issues for MSN Windows Live sites. Another example of an issue we've faced was when deciding to provide APIs for MSN Spaces. If you read the Getting Started with the MetaWeblog API for MSN Spaces
document you'll notice that instead of using the user's Passport credentials for
the MetaWeblog API, we instead use a different set of credentials. This
is because a user's Passport credentials were deemed to be too valuable to
have them being entered into random blog editing tools which may or may
not be safeguarding the user's credentials properly.
I now consider identity systems to be one big headache based on my
experiences with Passport. This is probably why I've steadfastly
avoided learning anything about InfoCard.
I know there are folks trying to make this stuff easier at Microsoft
but it seems like everytime I think about identity systems it just
makes my teeth hurt. :(