Monday, May 25, 2009 2:33 PM
by
jansche
Verzeichnis-Autorisierung für LiveID-User ohne lokale Benutzerverwaltung
Ein Kollege fragte mich neulich, ob ich einen Weg weiß, auf einer ASP.NET-Seite ein Verzeichnis nur für LiveID-User frei zu geben. Sprich jeder, der sich mit einer LiveID authentifizieren kann, soll auf das Verzeichnis Zugriff haben, anonyme Besucher allerdings nicht. Der Haken: er wollte keine ASP.NET-Authentifizierung einbetten, da das zusätzlichen Aufwand bedeuten würde, und nicht gefordert ist.
ES GEHT!
Im Beispielprojekt wird eine LiveID-Implementierung eingesetzt, die einen eigenen Membership-Provider mitbringt. Der setzt den gemappten User auf immer den selben Account. Der ASP.NET-Authentifizierung wird somit vorgegaukelt, es handle sich um einen validen User. Die User-ID aus dem Windows Live Account bleibt trotzdem transparent und kann geloggt werden.
Der Trick ist dann, eine web.config im zu schützenden Verzeichnis anzulegen, die folgende Zeilen enthält:
1: <?xml version="1.0"?>
2: <configuration>
3: <appSettings/>
4: <connectionStrings/>
5: <system.web>
6: <authorization>
7: <deny users="?"/>
8: </authorization>
9: </system.web>
10: </configuration>
Durch die Zeile <deny users=”?”> wird anonymen Benutztern der Zugriff verweigert, alle authentifizierten User haben Zugriff.
Das Projekt gibt es hier:
http://cid-6d192a3f356c76dd.skydrive.live.com/self.aspx/Visual%20Studio%20Solutions/LiveID%7C_advanced.zip
WICHTIG: Ihr müsst den IIS7 installiert haben und Visual Studio als Administrator starten, damit ihr das Web-Projekt öffnen könnt. Falls ihr da Probleme habt, wird das Web-Projekt typischerweise nicht geladen und sieht leer aus. Der Virtuelle Server im IIS heisst WebAuth, das solltet ihr auch nicht ändern, da sonst die absoluten Links für den Test-LiveID-Zugang nicht mehr funktionieren.
Credit: Das Originalprojekt ist von dieser Seite http://blog.webjak.net/2008/08/13/silverlight-windows-live-id/, schöne Anleitung.