HowTo: Windows Live ID Web Authentication (Grundlagen & Installation)

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

Letzte Posts

  • image.png
    Azure AppInsights: Ein mini Google Analytics für Websites

    Seit der Build Konferenz ist das neue Azure Portal für alle freigeschaltet. Durch das neue Portal ist mir ein “Dienst” aufgefallen, den ich bisher nicht gesehen hatte: Azure Application Insights Viel weiss ich nicht über den Dienst, aber wer eine Azure Website hat der sollte mal die “Analytics” Box öffnen. Im Grunde handelt es sich […]

  • image.png
    Source Code veröffentlichen – aber bitte mit Lizenz

    Seit es den Blog gibt wird auch meist der gesamte Demo Source Code mit veröffentlicht. Das Ganze hatte ich am Anfang noch als .zip verteilt, später lag es mal auf Google Code und nun liegen alle Samples und sonstige Sachen auf GitHub. Beim letzten User Group Treffen in Zürich mit dem Titel “Open Source: Get […]

  • Fix: Cannot convert from ‘CConnectProxy::_ComMapClass *’ to ‘AddInDesignerObjects::IDTExtensibility2 *’

    Mal einen etwas esoterischer Blogpost, welcher auftaucht wenn man zu viel mit Office Addins rumspielt. Der Fehler passiert beim Bauen von C++ Projekten, welchen diesen Typ benötigen. Lösung (auf 64bit Systemen): C:\Program Files (x86)\Common Files\DESIGNER>regsvr32 MSADDNDR.DLL And Rebuild. Meine lieben Kollegen hatte mir dies schon mehrfach gesagt, allerdings hatte ich es immer wieder vergessen Das […]

  • Gegen das Gesetz verstoßen: X Jahre Haft. Gegen die Terms of Use verstoßen: Bann auf Lebenszeit. Danke Google & co.

    Bei fast allen Diensten die man im Internet nutzen kann muss man den “Terms of use” zustimmen. Völlig logisch dass da natürlich drin steht was erlaubt und was nicht. Wenn man gegen diese Regelungen verstößt hat das Unternehmen natürlich das Recht etwas dagegen zu unternehmen. In der heutigen Welt beherrschen einige wenige Unternehmen die digitale […]

  • image.png
    RSS Feed samt Kommentaranzahl und andere nicht Standard Elemente mit dem SyndicationFeed auslesen

    Jetzt mal ein Blogpost ohne ein fancy NuGet Package: Seit .NET 3.5 gibt es die SyndicationFeed Klasse. Eine schon etwas ältere API, reicht aber aus um Atom bzw. RSS Feeds zu lesen. In diversen RSS Feeds gibt es aber Erweiterungen, welche man natürlich auch auslesen möchte. So gibt WordPress z.B. auch die Anzahl der geposteten […]

Support us!