Jeder der schonmal irgendein Microsoft Dienst genutzt hat, hat entweder mit dem ("gescheiterten") Passport oder der Windows Live ID schon zu tun gehabt.
Mir persönlich gefällt es nicht, dass ich mich bei jedem Dienst immer eine neues Passwort merken muss - warum bindet man denn zum Beispiel nicht den Windows Live ID Dienst mit in seine eigene Website ein?

image 

Erstmal ein Wort der Warnung:

SingleSignOn Dienste wie zum Beispiel Windows Live ID sind immer wieder in der Kritik unsicher & datenschutztechnisch bedenklich zu sein. Angenommen viele Websiten würden sich nur auf den Windows Live ID Dienst als Anmeldeverfahren speziallisieren, dann gäbe es das Problem, dass Microsoft die Profile der Nutzer quasi immer weiter ausbauen könnte. Datenschutztechnisch nicht gerade so toll.
Auf der anderen Seite muss man nur ein Sicherheitsloch bei Microsofts Windows Live ID finden und man würde viele Websiten aushebeln - Sicherheitstechnisch auch nicht gerade super.

Ich persönliche würde es so angehen wenn ich eine ernsthafte Anwendung entwickeln würde: Die Windows Live ID zu nutzen finde ich praktisch, allerdings würde ich dem Nutzer die Wahl stellen ob er sich mit Windows Live ID anmeldet oder über einen eigenes Anmeldesystem. OpenID wäre auch mal ein Blick wert.
Windows Live ID vorauszusetzen wäre etwas frech, aber als Feature einen Blick wert - daher der Blogeintrag.

Fangen wir jetzt mal an was man alles dazu braucht, um die Windows Live ID zu nutzen:

 

SDK von Windows Live ID herunterladen

Auf der MSDN Seite findet man allgemeine Informationen zum Web Autentication SDK. Das direkte SDK kann man direkt bei Microsoft Download runterladen. Dabei gibt es das SDK nicht nur für Microsofts hauseigenes ASP.NET, sondern auch für:

- Java
- PHP
- Phyton
- Ruby
- Perl

(wie gut oder schlecht diese Beispiele sind, möchte ich hier jetzt nicht sagen)

Achtung: Die MSI läuft auf nicht-englischen Windows Versionen nicht durch und bricht ab, Grund: Der Installer sucht nach zwei Benutzergruppen, welche in der englischen vorhanden sind, aber in der deutschen nicht: Power Users & Users. D.h. damit der Installer durchläuft einfach die beiden Gruppen anlegen.

 

Windows Live ID Applikation anmelden

Um den Windows Live ID Dienst zu nutzen, muss man sich auf dieser Website registrieren. Hier ist der Vorgang kurz beschrieben.

 

Überblick über die Datein des SDKS (ASP.NET Implementation)

(Ich hab die Ordnerstruktur leicht geändert - Original liegen die ASPX Seiten in einem "Sample" Ordner, den hab ich einfachheitshalber entfernt und die Datein direkt ins Root Verzeichnis verschoben)

image

Wichtigste Datei ist die "WindowsLiveLogin.cs" welche die Kernarbeit übernimmt.
Im Überblick habe ich mir diese Datei mal angesehen, allerdings kann man diese so als gegeben betrachten.

Datei: Default.aspx

Die Default.aspx ist für die Anzeige des "Sign In" / "Sign Out" verantwortlich und bindet dazu ein ÍFrame ein:

image

In der "src" wird als Parameter noch eine Schriftart/größe etc. mitgegeben, damit man den Sign In / Sign Out entsprechend noch formatieren kann - es gibt bestimmt auch Bilder die man einblenden kann. Außerdem hängt man dort noch seine AppID dran - das sieht man aber gut in der SDK Datei.

Im Codebehinde wird geprüft ob das Logincookie schon abgelegt wurde, wenn nicht ist man nicht angemeldet.

Die "Zugangsdaten" stehen dabei in der Web.Config:

image 
(aus dem SDK)

Datei: webauth-handler.aspx

Diese legt das Cookie an oder löscht es und dient als ReturnURL für den Windows Live ID Dienst. Im Anschluss leitet die Seite an die Default.aspx weiter.

In dem Schaubild hab ich mal den Datenfluss zusammengestellt:

image 
(Ich brauch unbedingt Visio daheim)

 

Anwendung des ganzen

Ich hab die SDK Datein mal online gestellt, damit jeder sehen kann, was der Seitenbetreiber nach dem Anmelden eigentlich sieht:
Eine eindeutige User ID zum Weiterverarbeiten.

Hier die Demoseite zum Anschauen. 

Wichtige Links im Überblick:

- Windows Live ID Anmeldung
- Windows Live ID Blog
- Windows Live ID MSDN Seite
- Windows Live Application ID
- Windows Live ID Web Authentication SDK Download
- Windows Live ID Web Authentication Sample Demopage