Windows Azure Access Control Service

Single Sign On in der Cloud

14.09.2010 von Thomas Joos
Die Nutzung von Cloud-Anwendungen entbindet Benutzer nicht von einer ordentlichen Authentifizierung. Doch die kann je nach Szenario relativ komplex ausfallen. Der Access Control Service aus der Windows Azure AppFabric soll das Procedere vereinfachen.

Immer mehr Unternehmen lagern Teile ihrer Services in Cloud-Dienste aus oder nutzen Anwendungen "aus der Steckdose". Diese Dienste stehen entweder über Partnerunternehmen wie Microsoft zur Verfügung oder lassen sich selbst betreiben.

Bei solchen Anwendungen spielt die Authentifizierung eine besondere Rolle. Die Anmeldung der Benutzer muss sicher sein, darf die Anwender aber nicht überfordern. Außerdem müssen Entwickler in der Lage sein, einfach, aber sicher mit Benutzerberechtigungen zu arbeiten - unabhängig davon, ob die Anwendung lokal läuft, als Webanwendung zur Verfügung steht oder in der Cloud gehostet ist.

Unternehmen, die mehrere Anwendungen gleichzeitig in der Cloud nutzen, zum Beispiel in Windows Azure, erreichen eine starke Steigerung der Effizienz, wenn sich Anwender nicht an jeder Anwendung separat anmelden müssen, schlimmstenfalls noch über verschiedene Token-Anbieter.

Besser ist eine einzige Anmeldung, also das Single-Sign-On (SSO)-Verfahren, welche die verschiedenen Anwendungen und Authentifizierungsdienste zentral miteinander verbindet. Ein solcher Dienst ist Windows Azure Access Control Service (ACS), ein standardisierter Token-Anbieter in der Cloud, der andere Anbieter anbinden kann. Unternehmen können die Access Control Services zusätzlich über die neue AppFabric in Windows Azure buchen.

Entwickler und Administratoren, die Interesse am Einsatz von Windows Azure Access Control Service haben, sollten sich den Webcast von Microsoft im MSDN anschauen. Er ist deutschsprachig und bietet vor allem für Entwickler wertvolle Hinweise zum Einbinden der Authentifizierung in Cloud-Anwendungen.

Grundsätzlich ist die Anbindung von Access Control Service an Anwendungen in Windows Azure eine Aufgabe von Entwicklern und erfolgt über Visual Studio. Es gibt keine Steuerung wie in Active Directory, vielmehr müssen sich Administratoren und Entwickler in die Token-basierte Authentifizierung mit verschiedenen Formaten und Protokollen hineindenken.

Authentifizierung mit Identity Federation

Eine wesentliche Neuerung in der Authentifizierung von Cloud-Diensten ist die Tatsache, dass die Benutzer nicht mehr nur in Active Directory oder anderen Verzeichnisdiensten angelegt sind, sondern in einem Authentifizierungsdienst, der ebenfalls in der Cloud läuft.

Solche Dienste arbeiten zur Authentifizierung meistens mit zertifikatsbasierten Token. Zu ihnen zählt Windows Azure Access Control Service (ACS), ein Teil der Windows Azure AppFabric. Der Dienst lässt sich separat mit anderen Diensten buchen und lizenzieren. ACS unterstützt verschiedene Authentifizierungsformen, zum Beispiel auch die Anbindung an Windows Live, Google, Yahoo, OpenID oder Facebook. Ebenfalls unterstützt sind die neuen Active Directory Federation Services (ADFS) 2.0. ADFS 2.0 bauen auf ADFS 1.1 auf, die als Serverrolle in Windows Server 2008 und Windows Server 2008 R2 zur Verfügung stehen.

Einfach ausgedrückt basiert die Authentifizierung in ADFS und Access Control Service auf Zertifikaten, welche die angebundenen Computer, Server, Anwender und Anwendungen gegeneinander authentifizieren. Windows Azure Access Control Service (ACS) ist aber kein eigenständiger Authentifizierungsanbieter, sondern verbindet lediglich verschiedene Anbieter miteinander und kann deren Tokens auswerten. Darüber hinaus kann der Dienst Anwendern von Unternehmen, die Windows Azure nutzen, standardisierte Tokens ausstellen.

Unterstützte Protokolle von Access Control Service sind OAuth WRAP, WS-Trust, und WS-Federation. ACS ist somit eine Art Proxy oder Brückenkopf für die verschiedenen Authentifizierungsanbieter der Anwender und kann Tokens ausstellen, mit denen sich Anwender wiederum an den Cloud-Anwendungen des Unternehmens anmelden.

Authentifizieren müssen sich die Anwender an einem Authentifizierungsdienst, der Access Control Service unterstützt und durch Entwickler und Administratoren an ACS angebunden ist. Wie das geht, sehen Sie im erwähnten Webcast.

Die Aufgabe von Access Control Service besteht vor allem darin, die Cloud-Anwendungen von Authentifizierungsanfragen mehrerer Anbieter zu entlasten, doch dazu später mehr. Ein weiterer Vorteil von Windows Azure Access Control Service ist die Möglichkeit, mehrere Authentifizierungen gleichzeitig durchzuführen, auch mit x.509-Zertifikaten.

Konfiguration, Oberfläche und Beispiele

Die Konfiguration des Access Control Service findet in einer Weboberfläche statt. Dies gilt eigentlich für jeden Dienst, den Sie in Windows Azure nutzen. Entwickler können auch das kostenlose Windows Azure AppFabric SDK V1.0 herunterladen. Dieses enthält eine grafische Oberfläche für Windows mit der Bezeichnung Access Control Service Management Browser (AcmBrowser).

Einrichtung: Windows Azure-Oberfläche zur Konfiguration des Namensraums.

Sie finden nach der Installation die Visual-Studio-Lösung im Verzeichnis C:\Program Files\Windows Azure platform AppFabric SDK\V1.0\Samples\AccessControl\ExploringFeatures\Management\AcmBrowser. Um den Browser zu nutzen, müssen Sie die Bezeichnung Ihres Namensraums eingeben, den Sie beim Erstellen in Windows Azure genutzt haben, sowie den Verwaltungsschlüssel, den Sie ebenfalls in der Weboberfläche erhalten.

Direktzugriff: Der Access Control Service lässt sich auch über die Befehlszeile verwalten.

Die Beispiele sind auf der Download-Seite des SDK gesondert herunterzuladen und zu installieren. Um mit Windows Azure zu experimentieren, sollten Sie die Beispiele parallel zum SDK herunterladen und die ZIP-Archive in die genannten Verzeichnisse exportieren. Auch ohne installierte Beispiele steht im Verzeichnis Tools des Windows Azure SDK bereits die Befehlszeilenoberfläche acm.exe zur Verfügung. Mit dieser können Entwickler ebenfalls Access Control Service konfigurieren und eigene grafische Oberflächen bauen.

Authentifizierung mit Tokens

Die Anmeldung an Webanwendungen in der Cloud läuft meistens ein wenig anders ab als bei den üblichen Anwendungen. Wenn Sie mit Anwendungen in der Cloud arbeiten und Ihre Anwender sich mit Diensten von Drittanbietern authentifizieren, zum Beispiel einer Windows Live ID oder an ADFS, melden sich Anwender am Authentifizierungsserver des Anbieters an und erhalten von diesem ein Token. Dieses übergibt der Anwender, beziehungsweise dessen Computer, in einfachen Umgebungen dann der Cloud-Anwendung, mit der er arbeiten will.

Der Entwickler der Anwendung muss zuvor festlegen, dass die Anwendung dem Token des Authentifizierungsanbieters vertraut und dass die Anwendung alle Benutzer akzeptiert, die ein Token vorweisen können. Das bedeutet, dass sich die Anwender nicht an der eigentlichen Anwendung in der Cloud authentifizieren, sondern nur besagtes Token übergeben. Das funktioniert recht einfach, wenn nur ein einzelner Anbieter im Einsatz ist. Sobald aber mehrere Anbieter zur Verfügung stehen und sich Anwender an diese anmelden, ist die Konfiguration nicht mehr so einfach.

Im erwähnten Szenario muss die Anwendung in der Cloud jedem Anbieter vertrauen, was die Anmeldung verzögert und die Anwendung unnötig belastet. Hier ist es sinnvoll, wenn die einzelnen Token-Anbieter an einen weiteren Dienst angebunden sind, dem wiederum die Webanwendung vertraut. Die Webanwendung vertraut dann aber nicht den Authentifizierungsanbietern, sondern nur dem zentralen Dienst, der wiederum den Authentifizierungsanbietern vertraut - eine "Vertrauensschleife" sozusagen. Das erleichtert die Authentifizierung und entlastet die Anwendung, die nur noch einem Dienst vertrauen muss.

Funktionsweise des Access Control Service

Hier setzt Access Control Service an: Er steht als zentraler Authentifizierungsmechanismus für Anwendungen in Windows Azure zur Verfügung. Als Format für die Tokens unterstützt ACS die Standards SAML 1.1, SAML 2.0 und Simple Web Token (SWT) - also alle wichtigen Standards in diesem Bereich. Setzen Sie mehrere Provider zur Authentifizierung ein, vertraut die Anwendung normalerweise einem einzelnen speziellen Authentifizierungsdienst. Der vertraut dann wiederum den verschiedenen Anbietern für die Authentifizierungsdienste. Der Vorteil bei dieser Lösung ist, dass die Anwendung in der Cloud immer nur einem Authentifizierungsdienst vertrauen muss, der seine Authentifizierungsdaten von verschiedenen Providern erhalten kann.

Melden sich Anwender an einem der Provider an, erhalten sie ein Token. Das erhält jetzt aber nicht die Anwendung, mit welcher der Anwender arbeiten will, sondern der Authentifizierungsdienst, dem die Anwendung vertraut, in diesem Fall also Access Control Service. Von ACS erhält der Anwender ein neues Token, mit dem er sich schließlich an der Anwendung anmeldet. Auf diese Weise ist die Cloud-Anwendung komplett von komplexen Anmeldungstechniken entlastet, und der Authentifizierungsdienst verbindet sich mit den verschiedenen Authentifizierungsanbietern. Genau das ist die Aufgabe von Windows Azure Access Control Service: Er unterstützt verschiedene Anbieter und Typen und stellt für jeden einen eigenen Enddienst zur Verfügung.

Kontrolle: Windows Azure Access Control Service mit dem Access Control Service Management Browser verwalten.

Anwender melden sich an ihrem jeweiligen Authentifizierungsanbieter an und erhalten von Access Control Service ein gültiges Token für die Cloud-Anwendung. Der Vorteil von Access Control Service ist, dass er ebenfalls in der Cloud läuft. Das heißt, Unternehmen müssen keinen Server für die Authentifizierung hosten und verwalten, sondern lediglich Access Control Service (ACS) mitbuchen und die Authentifizierung in die Anwendung integrieren. Für die Verwaltung des eigenen Namensraums im Browser-Verwaltungs-Tool benötigen Sie den Management Key, den Sie im AppFabric-Portal erstellen und anzeigen können. Außerdem sehen Sie in der Weboberfläche auch die Endpunkte des Access Control Service. Diese beiden Daten geben Sie beim Starten des Access Control Service Management Browsers ein, um sich am Webdienst zu authentifizieren.

Konfiguration und Einstellungen

Policies zur Authentifizierung steuern Sie im Access Control Service Management Browser als Token Policy. In dieser Policy legen Sie den Schlüssel für die Signierung des Tokens sowie die Dauer der Gültigkeit fest. Über den Menüpunkt Issuers bestimmen Sie die Authentifizierungsanbieter, die mit ACS verbunden sind.

Über Scopes legen Sie einen Identifier für die Anwendung an, die der Access Control Service steuern soll. Hier wählen Sie auch die erstellte Policy aus. Die Einstellungen können Sie im Browser lokal als XML-Datei abspeichern. Das heißt: Für die Konfiguration können Sie zunächst offline arbeiten. Haben Sie alle Einstellungen vorgenommen, können Sie die Daten in die Cloudanwendung überspielen. Achten Sie aber darauf, dass der Browser noch kein vollständiges und fertig entwickeltes Werkzeug ist - soll heißen: Es sind noch Fehler vorhanden.

Wenn Sie beispielsweise Änderungen vornehmen, dauert es eine Weile, bis diese in Windows Azure zur Verfügung stehen. Klappt die Übertragung nicht, können Sie den Namensraum im Browser löschen und neu anlegen. In diesem Fall überträgt der Browser die Daten zu Windows Azure, und die sind dann auch recht schnell verfügbar.

Check: Fehlersuche bei der Authentifizierung mithilfe von Fiddler.

Integrieren Entwickler Access Control Service in ihre Anwendung, sollten Sie mit dem kostenlosen Zusatztool Fiddler arbeiten. Das Tool bindet sich als Proxy zwischen Browser und IIS ein und liefert umfangreiche Debug-Informationen für Webentwickler und Administratoren. Vor allem bei Entwicklern, die mit Windows Azure arbeiten, gibt das Tool oft wertvolle Hinweise. Im bereits erwähnten Webcast sehen Sie, wie das genau funktioniert und wie Sie dabei vorgehen.

Wir empfehlen zudem die Lektüre der Anleitungen zu Access Control Service im Blog von Jason Follas; auch hier erhalten Sie wertvolle Hinweise zur Integration in Cloud-Anwendungen.

Next Generation Active Directotory

Unternehmen, die gleichzeitig mit Cloud-Anwendungen, lokalen Anwendungen in einem Active Directory und mit eigenen lokalen Webanwendungen arbeiten, können ACS problemlos mit Active Directory Federation Service (ADFS) 2.0 verbinden.

Dazu benötigen Sie die neue Version der ADFS, die Sie auf Windows Server 2008 und Windows Server 2008 R2 installieren können. Auf diese Weise können Unternehmen ein Single-Sign-On (SSO) für alle Anwendungen bieten und dabei auch auf Active Directory-Authentifizierung setzen.

Zusammen mit ADFS lässt sich so mit Access Control Service eine hochverfügbare Authentifizierungslösung zur Verfügung stellen, die in der Cloud positioniert ist. Wie Sie sicher leicht feststellen, sind die grundsätzliche Technik von Windows-Azure-Anwendungen sowie deren Verwaltung und Authentifizierung nicht gerade ein Kinderspiel, sondern erfordert viel Know-how und Experimentierfreude sowie Entwicklerfachwissen.

Unternehmen, die bereits auf Windows Azure setzen und Entwickler beschäftigen, die mit Azure arbeiten, sollten einen Blick auf Windows Azure Access Control Service werfen. Mit diesem Dienst wird die Anbindung der Authentifizierung von Anwendern erleichtert.

Durch die Verbindung von ADFS und Active Directory bietet Access Control Service eine sichere und hochverfügbare Authentifizierungslösung in der Cloud. Beschäftigen Sie sich näher mit Azure-Anwendungen, werden Sie schnell feststellen, dass Microsoft mit ACS einen zentralen Authentifizierungsdienst zur Verfügung stellen will. Um einen solchen kommen Unternehmen auf Dauer nicht herum, wenn sie mit Cloud-Anwendungen arbeiten wollen.

Schnittstelle: Auf der Professional Developers Conference 2009 wurde bereits eine frühe Version des Meta Directory vorgestellt. (Quelle: Microsoft)

Allerdings ist Access Control Service sicher nicht das Ende der Fahnenstange. Microsoft hat bereits das Next Generation Active Directory angekündigt, das seine Daten nicht mehr im Dateisystem speichert, sondern in einer SQL-Datenbank. Außerdem soll die neue Version auch direkt Authentifizierung von Cloudanwendungen bieten. Als weiterer Vorteil wird die SSO-Unterstützung von Anwendungen genannt, die derzeit weder ADFS noch ACS unterstützen.

Durch die SQL-Integration können Entwickler direkt auf Authentifizierungsdaten von Anwendern zugreifen und diese nutzen. So lässt sich beispielsweise auslesen, welcher Abteilung der Anwender zugeordnet ist, in welcher Niederlassung er arbeitet und wie alt er ist - allesamt Daten, die in die Authentifizierung einfließen können.

Auf jeden Fall wird eines schnell klar: Microsoft legt größten Wert darauf, künftige Herausforderungen der Authentifizierung von lokalen Anwendungen, Webanwendungen, virtualisierten Produkten und Clouddiensten zu standardisieren und in Active Directory einzubinden - in welcher Form auch immer. (mje)