Absicherung einer ASP.NET Webapp mit dem Windows Azure Access Control Service und dem “Identity and Access Tool” unter Visual Studio 2012 RTM

Visual Studio 2012 hat einige tolle Neuerungen mit sich gebracht. Allerdings auch einige Veränderungen. Manche Add-ons funktionieren nicht mehr oder wurden durch neue ersetzt. Nachdem ich mich ein wenig mit der Absicherung einer Website mit dem Windows Azure Access Control Service beschäftigt habe, musste ich feststellen, dass der im Windows Azure Training Kit beschriebene Weg zum Einsatz des Windows Azure ACS unter Visual Studio 2012 so nicht mehr funktioniert. Die gute Nachricht ist: alles ist viel einfacher geworden! Dies möchte ich zum Anlass nehmen, einen Überblick darüber geben, wie man in wenigen Schritten ACS in eigene Webapps integrieren kann. Der Prozess besteht aus lediglich 5 Schritten:

  • Anlegen und konfigurieren einer neuen Webapp
  • Anlegen und konfigurieren eines ACS Namespace
  • Installation des “Identity and Access Tool” (bei Bedarf)
  • Integration des ACS in die Webapp
  • Test der Webapp

Und los geht’s…

Anlegen und konfigurieren einer neuen Webapp

Öffnen Sie Visual Studio 2012 RTM. Wählen Sie den Menüpunkt File/New Website. In der sich öffnenden Eingabemaske wählen Sie den Punkt Installed/Templates/Visual C#/ASP.NET Web Forms Site.

image

Wählen Sie als Web Location “http” und einen Namen, dessen URL auf https:// beginnt. Nach Bestätigung mit OK legt Visual Studio eine neue Solution an. Öffnen Sie in dieser Solution die Datei Site.master. Löschen Sie dort das HTML-Element <section id=”login”>…</section>. Die Datei sollte im <header>-Abschnitt wie folgt aussehen.

    1: <header>
    2:     <div class="content-wrapper">
    3:         <div class="float-left">
    4:             <p class="site-title"><a runat="server" href="~/">your logo here</a></p>
    5:         </div>
    6:         <div class="float-right">
    7:             <nav>
    8:                 <ul id="menu">
    9:                     <li><a runat="server" href="~/">Home</a></li>
   10:                     <li><a runat="server" href="~/About.aspx">About</a></li>
   11:                     <li><a runat="server" href="~/Contact.aspx">Contact</a></li>
   12:                 </ul>
   13:             </nav>
   14:         </div>
   15:     </div>
   16: </header>

Öffnen Sie nun die Datei web.config und löschen Sie dort folgende Elemente:

  • configuration/system.web/authentication
  • configuration/system.web/profile
  • configuration/system.web/membership
  • configuration/system.web/roleManager

Die Datei sollte nun wie folgt aussehen:

    1: <?xml version="1.0" encoding="utf-8"?>
    2: <!--
    3:   For more information on how to configure your ASP.NET application, please visit
    4:   https://go.microsoft.com/fwlink/?LinkId=169433
    5:   -->
    6: <configuration>
    7:   <configSections>
    8:     <!-- For more information on Entity Framework configuration, visit https://go.microsoft.com/fwlink/?LinkID=237468 -->
    9:     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
   10:   </configSections>
   11:   <connectionStrings>
   12:     <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\aspnet-WebSite-20120827161205.mdf;Initial Catalog=aspnet-WebSite-20120827161205;Integrated Security=True;User Instance=True"
   13:       providerName="System.Data.SqlClient" />
   14:   </connectionStrings>
   15:   <system.web>
   16:     <compilation debug="false" targetFramework="4.0" />
   17:     <sessionState mode="InProc" customProvider="DefaultSessionProvider">
   18:       <providers>
   19:         <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
   20:       </providers>
   21:     </sessionState>
   22:   </system.web>
   23:   <system.webServer>
   24:     <modules runAllManagedModulesForAllRequests="true" />
   25:   </system.webServer>
   26:   <entityFramework>
   27:     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
   28:   </entityFramework>
   29: </configuration>

Anlegen und Konfigurieren eines ACS Namespace

Öffnen Sie nun das (klassische, Silverlight-basierte) Windows Azure Management Portal unter https://windows.azure.com. Wählen Sie dort (unten links) den Menüpunkt Servicebus, Zugriffssteuerung und Cache. Wählen Sie im Ressourcenbaum den Eintrag Zugriffssteuerung. Sofern Sie noch keinen Namespace konfiguriert haben, wählen Sie in der Ribbon-Leiste die Schaltfläche Neu.

image

Legen Sie nun in der erscheinenden Eingabemaske einen neuen Namespace an.

image

Aktivieren Sie hierzu den Punkt Zugriffssteuerung. Wählen Sie einen noch nicht vergebenen Namen für Ihren Namespace. Unter diesem Namespace werden später alle Ressourcen zur Zugriffssteuerung (ggf. auch für den ServiceBus und Cache) verwaltet. Legen Sie ebenfalls die Region fest, in der der Dienst bereitgestellt werden soll. Bestätigen Sie Ihre Eingaben mit Namespace erstellen.

Sobald der Namespace erstellt wurde, wählen sie diesen und klicken in der Ribbon-Leiste auf die Schaltfläche Zugriffssteuerungsdienst.

image

Damit wechseln Sie in die Konfigurationsseite des Access Control Service. Wählen Sie dort den Menüpunkt Vertrauensstellungen/Identitätsanbieter. Durch Auswahl des Links Hinzufügen können Sie nun Identitätsanbieter (Identity Provider) hinzufügen.

image

Wählen Sie nun den Menüpunkt Verwaltung/Verwaltungsdienst.

image

Wählen Sie auf dieser Seite den Link ManagementClient.

image

Wählen Sie auf dieser Seite den Link Symmetrischer Schlüssel.

image

Generieren Sie hier ggf. einen neuen Schlüssel und kopieren Sie diesen in die Windows Zwischenablage (brauchen wir später für die Konfiguration der Webapp). Damit ist der Access Control Service bereit.

Installation des “Identity and Access Tool” (bei Bedarf)

Installieren Sie nun das Identity and Access Tool in Visual Studio. Wechseln Sie hierzu zurück ins Visual Studio. Wählen Sie dort den Menüpunkt Tools/Extensions and Updates. Wählen Sie dort das Element Online/Visual Studio Gallery. Suchen Sie nach dem Tool, indem Sie in das Suchfeld oben rechts den Begriff identity eingeben.

image

Die Eingabemaske sollte Ihnen nun das Tool anzeigen. Wählen Sie die Schaltfläche Download. Dies installiert das Tool und fordert anschließend zum Neustart von Visual Studio auf. Schließen Sie also Visual Studio und starten es neu. Damit ist auch das Tool installiert.

Integration des ACS in die Webapp

Bleibt nun noch der vorletzte Schritt, den Access Control Service in die Webapp zu integrieren. Klicken Sie mit der rechten Maustaste im Solution Explorer auf die Webapp. Es öffnet sich ein Kontextmenü, in dem nun der Punkt Identity and Access enthalten ist.

image

Wählen Sie diesen Menüpunkt. Es erscheint eine Auswahlmaske.

image

Diese Auswahlmaske schlägt drei Alternativen für den Identity Provider vor. Wählen Sie Use the Windows Azure Access Control Service. Konfigurieren Sie den Service, indem Sie auf den Link Configure klicken. Es öffnet sich eine kleine Eingabemaske.

image

Geben Sie dort den Namen Ihres ACS-Namespace an und kopieren Sie den zuvor zwischengespeicherten Management-Schlüssel in das Eingabefeld. Aktivieren Sie die Checkbox Save management key und bestätigen Sie Ihre Eingabe mit OK. Damit kehren Sie zur ACS-Konfiguration zurück.

image

Markieren Sie dort die Identity Provider, die zur Authentifizierung an Ihrer Anwendung herangezogen werden sollen. Aktivieren Sie auch die Checkbox Overwrite existing rules configuration for this application. Bestätigen Sie Ihre Eingabe mit OK. Damit wird zum einen der ACS konfiguriert und zum anderen werden zugehörige Einträge in die Datei web.config geschrieben (ein Blick dort hinein lohnt sich).

Damit sind Konfiguration des ACS und der Webapp abgeschlossen. Bleibt noch der abschließende Test.

Test der Webapp

Starten Sie Ihre Anwendung mit F5. Sie werden sehen, dass nicht die Startseite der Anwendung sondern eine Auswahlmaske des ACS angezeigt wird.

image

Dort haben Sie die Möglichkeit einen Identity Provider auszuwählen und sich bei diesem zu authentifizieren. Erst nach erfolgreicher Authentifizierung erscheint die Startseite der Anwendung.

image

Das war’s Smile.

So einfach ist die Integration des Windows Azure Access Control Service in eigene Anwendungen.

Weitere Informationen