Interoperabilitätsanalyse föderierter Identitätsmanagement
Transcription
Interoperabilitätsanalyse föderierter Identitätsmanagement
INSTITUT FÜR INFORMATIK DER LUDWIG-MAXIMILIANS-UNIVERSITÄT MÜNCHEN Diplomarbeit Interoperabilitätsanalyse föderierter Identitätsmanagement-Systeme Frederik Weishäupl Aufgabensteller: Prof. Dr. Hans Jürgen Ohlbach Betreuer: Benjamin Weyl (BMW Group Forschung und Technik) Felix Grabmeyer (BMW Group) Abgabetermin: 09. Juli 2005 Hiermit versichere ich, dass ich die vorliegende Arbeit selbstständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel verwendet habe. München, den 7. Juli 2005 …………………………………. (Unterschrift des Kandidaten) Zusammenfassung Das Ziel dieser Arbeit ist die Durchführung einer umfassenden Produktanalyse im Bereich Federated Identity Management. Da in heutigen Netzwerken eine Vielzahl von heterogenen Systemarchitekturen miteinander kommunizieren, ist der Interoperablitätsaspekt dieser Systeme von besonderer Bedeutung. Vor allem für den Einsatz von IdentitätsmanagementSoftwareprodukten ist es entscheidend, dass diese in der Lage sind, Föderationen mit Produkten anderer Hersteller bzw. Domänen unterschiedlicher Unternehmen und Organisationen aufzubauen. Drei solcher weit verbreitender Sicherheitslösungen werden im Rahmen dieser Diplomarbeit vorgestellt und analysiert. Dies sind der Netegrity Siteminder 6.0 SP1, der RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5 und der IBM Tivoli Access Manager 5.1 & IBM Federated Identity Manager 6.0. Eine zentrale Rolle nimmt in dieser Arbeit die Security Assertion Markup Language (SAML) ein. Dieser XML-basierte Standard kann verwendet werden, um Informationen bzgl. der Identität eines Benutzers (z.B. Authentifizierungsdaten) plattform- und herstellerunabhängig über Domänengrenzen hinweg auszutauschen. Dabei werden diese Domänen meist von unterschiedlichen Unternehmen bzw. Organisationen verwaltet. Durch die Übertragung von sog. SAML-Assertions ist es nun möglich, Authentifizierungs-, Autorisierungs- und Attributdaten eines Benutzers vertrauenswürdigen Partnerunternehmen mitzuteilen. Dies ermöglicht u.a. die Umsetzung einer Single Sign-On Umgebung, in der sich User - nach einer einmaligen Authentifizierung - frei zwischen unterschiedlichen Domänen bewegen können. Die im Rahmen dieser Diplomarbeit verwendeten Sicherheitsprodukte unterstützen den domänenübergreifenden Austausch von SAML-Nachrichten. Bei der durchgeführten Interoperablitätsanalyse ist die Konformität dieser Softwareprodukte bzgl. des offiziellen SAML-Standards von entscheidender Bedeutung. Für meinen Vater LUDWIG WEISHÄUPL der mir sagte, ich soll aus mir machen, was ich will. 1932 - 2004 Danksagung Eine Reihe von Leuten hat die ganze Diplomarbeit oder Teile davon auf verschiedenen Stufen ihres Enstehens gelesen. Ich möchte ihnen allen für ihre wertvollen Anregungen und ihre Kritik danken. Mein besonderer Dank gilt Herrn Prof. Dr. Hans Jürgen Ohlbach, der immer ein offenes Ohr für die Probleme und Anliegen seiner Studenten hatte und mir bei der Betreuung meiner Diplomarbeit jederzeit hilfreich zur Seite stand. Ein wichtiges Anliegen ist es mir, mich ganz besonders bei meinen Betreuer Benjamin Weyl von der BMW Forschung und Technik zu bedanken. Er hat mit seiner außergewöhnlichen Hilfsbereitschaft und Menschlichkeit einen gewaltigen Anteil daran, dass diese Diplomarbeit zu einem erfolgreichen Abschluß gebracht werden konnte. Beim Auftreten von Problemen half er mir immer durch das Einbringen neuer kreativer Ideen. Er unterstützte mich zudem jederzeit mit seinem ausserordentlich fundierten Fachwissen. Ferner bedanke ich mich ganz herzlich bei meinem Betreuer Felix Grabmeyer (BMW IT), der mich auf eine erfrischende und praxisnahe Art und Weise in das Forschungsfeld Federated Identity Management einführte und meine Begeisterung für dieses Thema weiter gefördert hat. Ebenfalls möchte ich mich bei meinen Kollegen der BMW Forschung und Technik für die stete Unterstützung und die tolle Arbeitsatmosphäre bedanken. Nicht vergessen möchte ich an dieser Stelle meinen Bruder, der während der Diplomarbeit meinen Stressfaktor stets zu steigern wusste, indem er mich mit seinen eigenen IT-Problemen belästigte. Abschließend möchte ich besonders meine Mutter hervorheben, ohne deren unermüdlichen Einsatz beim Korrekturlesen so manches fehlende Komma unentdeckt geblieben wäre. Inhaltsverzeichnis 1. Einleitung 1 1.1 Motivation................................................................................................................................... 1 1.2 Ziel der Arbeit............................................................................................................................. 4 1.3 Aufbau und Gliederung der Arbeit ............................................................................................. 5 2. Grundlagen des Federated Identity Managements 7 2.1 Identifikation in einem Computer Netzwerk .............................................................................. 7 2.1.1 2.1.2 2.1.3 2.1.4 Zugang zu Ressourcen..................................................................................................................... 7 Multiple Sign On vs. Single Sign On .............................................................................................. 8 Federated Identity Single Sign-On .................................................................................................. 9 Beispielszenarios ........................................................................................................................... 10 2.2 Konzepte einer Föderation........................................................................................................ 13 2.3 Web-Services ............................................................................................................................ 15 2.4 Sicherheitsstandards in einer Identity Federation ..................................................................... 17 2.4.1 Microsoft .NET Passport ............................................................................................................... 17 2.4.2 Security Assertion Markup Language – SAML ............................................................................ 20 2.4.3 OASIS SAML 1.1 Spezifikation ................................................................................................... 22 2.4.4 Liberty Alliance Projekt ................................................................................................................ 40 2.4.5 Web-Services Security .................................................................................................................. 45 2.4.6 WS-Federation............................................................................................................................... 46 2.5 Vergleich der Föderationsstandards.......................................................................................... 49 2.6 Zusammenfassung .................................................................................................................... 49 3. Einrichtung der Testumgebungen 52 3.1 Netegrity Siteminder 6.0........................................................................................................... 52 3.1.1 3.1.2 3.1.3 3.1.4 Funktionalitäten ............................................................................................................................. 52 Architektur..................................................................................................................................... 53 Federated Identity Management .................................................................................................... 57 Installation ..................................................................................................................................... 58 3.2 RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5.................................................... 60 3.2.1 3.2.2 3.2.3 3.2.4 Funktionalitäten ............................................................................................................................. 60 Architektur..................................................................................................................................... 62 Federated Identity Management .................................................................................................... 64 Installation ..................................................................................................................................... 65 3.3 IBM Tivoli Access Manager 5.1 & Tivoli Federated Identity Manager 6.0............................. 67 3.3.1 3.3.2 3.3.3 3.3.4 Funktionalitäten ............................................................................................................................. 67 Architektur..................................................................................................................................... 68 Federated Identity Management .................................................................................................... 70 Installation ..................................................................................................................................... 72 3.4 Vergleich der eingesetzten IAM-Softwareprodukte ................................................................. 74 3.5 Aufbau einer föderierten Systemumgebung ............................................................................. 76 4. Anwendungsfälle für ein föderiertes Identitätsmanagement i 82 4.1 Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On ........................... 82 4.2 Anwendungsfall: Föderierter Attribut-Austausch..................................................................... 86 4.3 Anwendungsfall: Lokale Autorisierung.................................................................................... 87 4.4 Anwendungsfall: Entfernte (Remote) Autorisierung................................................................ 88 4.5 Anwendungsfall: Föderiertes Single Logout ............................................................................ 90 5. Umsetzung und Analyse 91 5.1 Testszenario Netegrity Siteminder 6.0 (IdP) – SAML Affiliate Agent 6.x QMR2 (SP) .......... 92 5.1.1 Konfiguration der Testumgebung.................................................................................................. 92 5.1.2 Test der Anwendungsfälle ............................................................................................................. 93 5.1.3 Fazit ............................................................................................................................................... 96 5.2 Testszenario Netegrity Siteminder 6.0 (IdP) – RSA Cleartrust 5.5 & FIM 2.5 (SP)................ 97 5.2.1 Konfiguration der Testumgebung.................................................................................................. 97 5.2.2 Test der Anwendungsfälle ............................................................................................................. 98 5.2.3 Fazit ............................................................................................................................................. 105 5.3 Testszenario Netegrity Siteminder 6.0 (IdP) – IBM TAM 5.1 & TFIM 6.0 (SP) .................. 106 5.3.1 Konfiguration der Testumgebung................................................................................................ 106 5.3.2 Test der Anwendungsfälle ........................................................................................................... 107 5.3.3 Fazit ............................................................................................................................................. 110 5.4 Testszenario RSA Cleartrust 5.5 & FIM 2.5 (IdP) – Netegrity Siteminder 6.0 (SP).............. 110 5.4.1 Konfiguration der Testumgebung................................................................................................ 110 5.4.2 Test der Anwendungsfälle ........................................................................................................... 111 5.4.3 Fazit ............................................................................................................................................. 114 5.5 Testszenario RSA Cleartrust 5.5 & FIM 2.5 (IdP)–IBM TAM 5.1 & TFIM 6.0 (SP) ........... 115 5.5.1 Konfiguration der Testumgebung................................................................................................ 115 5.5.2 Test der Anwendungsfälle ........................................................................................................... 116 5.5.3 Fazit ............................................................................................................................................. 120 5.6 Testszenario IBM TAM 5.1 & TFIM 6.0 (IdP)–RSA Cleartrust 5.5 & FIM 2.5 (SP) ........... 120 5.6.1 Konfiguration der Testumgebung................................................................................................ 120 5.6.2 Test der Anwendungsfälle ........................................................................................................... 122 5.6.3 Fazit ............................................................................................................................................. 124 5.7 Testszenario IBM TAM 5.1 & TFIM 6.0 (IdP) – Netegrity Siteminder 6.0 (SP) .................. 124 5.7.1 Konfiguration der Testumgebung................................................................................................ 124 5.7.2 Test der Anwendungsfälle ........................................................................................................... 125 5.7.3 Fazit ............................................................................................................................................. 127 5.8 OpenSAML-Autorität der BMW Group................................................................................. 127 6. Zusammenfassung und Ausblick 130 A. Anhang 134 A.1 Quellcode Assertion Generator Plugin (Netegrity Siteminder 6.0 SP1)................................ 134 A.2 Beispiele zum Liberty ID-FF 1.2 Protokoll ........................................................................... 141 A.3 SAML-Requests & SAML-Responses .................................................................................. 142 A.3.1 Testszenario Netegrity Siteminder 6.0 – SAML Affiliate Agent 6.x QMR2.............................. 142 A.3.2 Testszenario Netegrity Siteminder 6.0 – RSA Cleartrust & RSA FIM 2.5................................. 143 A.3.3 Testszenario RSA Cleartrust & RSA FIM 2.5 – Netegrity Siteminder 6.0................................. 145 A.3.4 Testszenario IBM TAM 5.1 & TFIM 6.0 – RSA Cleartrust 5.5 & FIM 2.5 ............................... 145 A.3.5 Testszenario IBM TAM 5.1 & TFIM 6.0 – Netegrity Siteminder 6.0 ........................................ 147 ii Abkürzungsverzeichnis 149 Literaturverzeichnis 151 iii Abbildungsverzeichnis Abbildung 1: Föderation zwischen Unternehmen .................................................................................................. 2 Abbildung 2: Identity Lifecycle Management ........................................................................................................ 2 Abbildung 3: Austausch von Identitäten in einer Trust Relationsship ................................................................. 10 Abbildung 4: B2C Szenario – Beispiel Reiseindustrie ......................................................................................... 11 Abbildung 5: B2B Szenario - Beispiel Outsourcing von Dienstangeboten .......................................................... 12 Abbildung 6: B2B Szenario – Aufbau von Wertschöpfungsketten ...................................................................... 13 Abbildung 7: Beispiel Account Linking ............................................................................................................... 14 Abbildung 8: Struktur einer SOAP-Nachricht ..................................................................................................... 17 Abbildung 9: Struktur einer SAML-Assertion ..................................................................................................... 24 Abbildung 10: Austausch von SAML-Request- & Response-Nachrichten .......................................................... 31 Abbildung 11: Single Sign-On mit dem Browser/Artifact Profile ........................................................................ 36 Abbildung 12: Single Sign-On mit dem Browser/POST Profile........................................................................... 37 Abbildung 13: Liberty Alliance SSO-Prozess....................................................................................................... 43 Abbildung 14: Erweiterungen des Liberty ID-FF Protokolls................................................................................ 44 Abbildung 15: Architektur Netegrity Siteminder 6.0............................................................................................ 54 Abbildung 16: Komponenten des SAML Affiliate Agents .................................................................................. 56 Abbildung 17: Architektur RSA Cleartrust 5.5..................................................................................................... 62 Abbildung 18: Architektur IBM Tivoli Access Manager 5.1................................................................................ 69 Abbildung 19: Architektur IBM Federated Identity Manager 6.0......................................................................... 72 Abbildung 20: Föderierte heterogene Systemarchitektur...................................................................................... 77 Abbildung 21: Ablauf Föderierte Authentifizierung/Föderiertes Single Sign-On ................................................ 82 Abbildung 22: Ablauf Föderierter Attribut-Austausch (explizite Übertragung) ................................................... 87 Abbildung 23: Ablauf Entfernte Autorisierung (dynamisch)................................................................................ 90 Abbildung 24: Lokale Autorisierung durch den IBM TAM 5.1 ......................................................................... 119 Abbildung 25: Klassendiagramm OpenSAML-Autorität (BMW Forschung &Technik) ................................... 128 Abbildung 26: Ergebnisse der Interoperablitätsanalyse ...................................................................................... 132 iv Tabellenverzeichnis Tabelle 1: Vergleich Liberty Alliance - WS-Federation ....................................................................................... 48 Tabelle 2: Vergleich der SSO-Protokolle.............................................................................................................. 49 Tabelle 3: Vergleich IAM - Softwareprodukte ..................................................................................................... 76 Tabelle 4: SSO-Einstellungen Netegrity Siteminder............................................................................................. 78 Tabelle 5: SSO-Einstellungen RSA FIM .............................................................................................................. 79 Tabelle 6: SSO-Einstellungen IBM FIM .............................................................................................................. 79 Tabelle 7: SAML-Features Netegrity Siteminder vs. SAML Affiliate Agent....................................................... 93 Tabelle 8: Einstellungen Netegrity Siteminder & SAML Affiliate Agent ............................................................ 93 Tabelle 9: Testergebnisse - Netegrity Siteminder (IdP) & SAML Affiliate Agent (SP)...................................... 94 Tabelle 10: SAML-Features Netegrity Siteminder vs. RSA FIM ......................................................................... 98 Tabelle 11: Einstellungen Netegrity Siteminder & RSA FIM .............................................................................. 98 Tabelle 12: Testergebnisse - Netegrity Siteminder (IdP) & RSA FIM (SP) ......................................................... 98 Tabelle 13: SAML-Features Netegrity Siteminder vs. IBM TFIM..................................................................... 106 Tabelle 14: Einstellungen Netegrity Siteminder & IBM TFIM .......................................................................... 107 Tabelle 15: Testergebnisse - Netegrity Siteminder (IdP) & IBM TFIM (SP)..................................................... 107 Tabelle 16: SAML-Features RSA FIM vs. Netegrity Siteminder ....................................................................... 111 Tabelle 17: Einstellungen RSA FIM & Netegrity Siteminder ............................................................................ 111 Tabelle 18: Testergebnisse - RSA FIM (IdP) & Netegrity Siteminder (SP) ....................................................... 112 Tabelle 19: SAML-Features RSA FIM vs. IBM TFIM ...................................................................................... 115 Tabelle 20: Einstellungen RSA FIM & IBM TFIM............................................................................................ 116 Tabelle 21: Testergebnisse - RSA FIM (IdP) & IBM TFIM (SP)....................................................................... 116 Tabelle 22: SAML-Features IBM TFIM vs. RSA FIM ...................................................................................... 121 Tabelle 23: Einstellungen IBM TFIM & RSA FIM............................................................................................ 121 Tabelle 24: Testergebnisse - IBM TFIM (IdP) & RSA FIM (SP)....................................................................... 122 Tabelle 25: SAML-Features IBM TFIM vs. Netegrity Siteminder..................................................................... 125 Tabelle 26: Einstellungen IBM TFIM & Netegrity Siteminder .......................................................................... 125 Tabelle 27: Testergebnisse - IBM TFIM (IdP) & Netegrity Siteminder(SP)...................................................... 126 v Kapitel 1: Einleitung 1. Einleitung 1.1 Motivation Die heutige E-Business-Landschaft bietet Unternehmen und Organisationen zahlreiche Möglichkeiten für eine Zusammenarbeit weit über die eigenen Standorte hinaus. Da immer mehr Dienstleistungen heute als Web-Service angeboten werden, müssen Unternehmen neben stark steigenden Nutzerzahlen auch eine stetig steigende Anzahl von Geschäftsbeziehungen verwalten können. Vor allem Interaktionen mit externen Nutzern innerhalb moderner Business-to-Business (B2B), Business-to-Customer (B2C), Business-to-Employee (B2E) oder kombinierten B2B/B2C Umgebungen treten zunehmend in den Vordergrund. Die Folge dieser Entwicklung bedeutet für ein einzelnes Unternehmen oft Millionen, wenn nicht sogar Milliarden von potentiellen Nutzern und zugehörigen Speichersätzen. Identitäten müssen nun nicht mehr nur innerhalb interner Applikationen, sondern auch innerhalb Systemen und Diensten jenseits der Grenzen eines Unternehmens (Cross-Domain) verwaltet werden [TowFIM]. Diese Entwicklung führt dazu, dass Firmen ihre bisherigen Sicherheits- und Informations-Architekturen überdenken bzw. erweitern müssen, um den zukünftigen Anforderungen gerecht zu werden. Schnell wurde klar, dass diese neuen Herausforderungen mit Hilfe von herkömmlichen Identity Management Systemen nur schwer zu lösen sind. Kaum ein Unternehmen ist bereit, seinen Partnerunternehmen Zugriff auf die eigenen Nutzerdatenbanken zu gewähren. Die andere Alternative, eine vielfache Abspeicherung der gleichen Informationen innerhalb der verschiedenen Identitätsdomänen stellt ebenso keine zufriedenstellende Lösung dar. Ein aussichtsreicher neuer Ansatz, der Unternehmen hilft, diese Schwierigkeiten zu bewältigen, wird unter dem Begriff Federated Identity Management zusammengefasst: The agreements, standards, and technologies that make identity and entitlements portable across autonomous domains. -Burton Group [BurtonFIM] Dieses neue Konzept kann das Kosten- und Komplexitätsproblem der domänenübergreifenden Benutzerverwaltung nachhaltig lösen. Federated Identity Management dient als Rahmenwerk, um verteilte Benutzerdaten verwalten zu können. Identitäten und werden dabei in Zukunft nicht mehr vollständig zentral, sondern dezentral verwaltet, d.h., es existiert am Ende keine zentrale Stelle mehr, bei der alle für ein Unternehmen relevante Identitäten gespeichert sind. Bedingung hierfür ist jedoch eine Vertrauensbeziehung zwischen den Unternehmen, d.h., die Teilnehmer einer Föderation müssen sich gegenseitig kennen und vertrauen. Ansonsten sind alle ausgetauschten Informationen (z.B. Authentifizierungsinformationen) wertlos. Der Begriff Föderation betrifft dabei eine Gruppe von Unternehmen bzw. Organisationen, die Vereinbarungen getroffen haben, um gegenseitig Nutzer- und Ressourceninformationen austauschen zu können 1 Kapitel 1: Einleitung Das Prinzip ist mit einem Führerschein oder Reisepass vergleichbar: Ein Staat stellt einen Abbildung 1: Föderation zwischen Unternehmen [TowFIM] individuellen Berechtigungsnachweis bereit, der als absolut vertrauenswürdig gilt und somit auch in anderen Ländern als Identitätskennung anerkannt wird. Federated Identity Management beruht sowohl auf technischen als auch auf geschäftlichen Übereinkünften zwischen den Beteiligten einer Föderation. Die technologische Komponente sollte dabei einen Single Sign-On- bzw. Single Logout-Mechanismus, einen Identitätscheck bei den Partnern, eine Autorisierung (basierend auf definierten Sicherheitsregeln), einen domänenübergreifenden Austausch von Nutzer-Profilen bzw. Nutzer-Attributen, ein umfassendes Identity Lifecycle Management, die Bereitstellung von Benutzerdaten, eine sichere Infrastruktur sowie einen gesicherten Zugriff auf Ressourcen der Geschäftspartner unterstützen (vgl. Abbildung 2). Wesentlich für das Funktionieren eines unternehmensübergreifenden IdentitätenManagements sind Standards. Momentan gibt es mehrere, zum Teil parallel verlaufende Bemühungen, die versuchen, diesen Anforderungen gerecht zu werden (siehe Kapitel 2.4). Die momentan wichtigsten sind SAML, das Liberty Alliance Projekt und WS-Federation. Diese Föderationsstandards definieren einen Mechanismus, um Identitätsinformationen über mehrere Domänen hinweg, plattformunabhängig, austauschen zu können. Service Consumers Vertrauensbeziehung Benutzer Identifikation Authentifizierung Zugriffskontrolle Austausch von Identitäts- und Attributinformationen Identity Lifecycle Management Abbildung 2: Identity Lifecycle Management 2 Service Providers Kapitel 1: Einleitung Neben der technischen Herausforderung erfordert FIM jedoch auch ein komplettes wirtschaftliches Umdenken der Unternehmen. Es verändern sich Geschäftsmodelle und Unternehmensgrenzen verschwimmen. Over the next few years we have to deal with some very messy problems – namely what it takes to deploy federated technology along with what it takes to bash out contracts between partners... - Michael Barrett, Vice President of Internet Strategy at American Express & President of Liberty Alliance [PingID] Nutzer-Identitäten und Nutzer-Profile werden sich zukünftig zumindest teilweise außerhalb des Kontrollbereichs eines einzelnen Unternehmens befinden. Dieser Gedanke fällt Unternehmen nach wie vor sehr schwer. Langfristig werden Unternehmen jedoch, wenn sie im Wettbewerb weiter bestehen wollen, nicht um diese Veränderungen herumkommen. Diese Diplomarbeit ist in Kooperation mit der BMW Forschung und Technik und der BMW IT entstanden. Dort werden im Wesentlichen zwei Einsatzbereiche für ein Federated Identity Management gesehen. Dies ist zum einen die B2B-Kommunikation, d.h., BMW IT will den Mitarbeitern seiner zahlreichen Partnerunternehmen den Zugriff auf BMW-Interne Applikationen bzw. Ressourcen per Single Sign-On ermöglichen. Der andere Einsatzbereich betrifft die Telematik-Dienste im Auto. Der Trend in diesem Bereich entwickelt sich in die Richtung, dass immer mehr solcher Dienste wie z.B. MP3- oder Wetter-Service in die Autos von BMW integriert werden. Da diese Dienste meist nicht direkt von BMW, sondern indirekt von Partnerunternehmen angeboten werden, wird auch hier der Einsatz von föderierten Identity Management Systemen angestrebt. Neben der Automobilbranche besteht vor allem bei Telekommunikationsunternehmen großes Interesse am Federated Identity Management. Zum Beispiel gaben der Mobilfunkanbieter Orange und IBM im Juli 2004 bekannt, dass das Telekommunikationsunternehmen mit Hilfe eines föderierten Identitäts-Managements seinen Kunden den Zugang zu diversen Diensten vereinfachen will. Mit nur einer Nutzerkennung soll es möglich sein, Zusatzdienste wie EMail, Online-Banking, Instant-Messaging, Spiele-Download sowie Location-Based Services zu nutzen [ITSec]. Auch der Mobilfunkhersteller Nokia arbeitet aktuell daran, das Föderationsframework der Liberty Alliance in seine mobile Service-Infrastruktur zu integrieren [FedFuture]. Die Vorteile eines konsequenten Federated Identity Managements sind für Unternehmen und Nutzer enorm. Dass sich heute die meisten größeren Unternehmen des Konzeptes und der potentiellen Möglichkeiten dieser neuen Technologie bewusst sind, ist unbestritten. Nahezu jeder IT-Experte hat heutzutage schon einmal etwas von den Federated Identity Standards Security Assertion Markup Language (siehe Kapitel 2.4.2), Liberty Alliance (siehe Kapitel 2.4.4) und WS-Federation (siehe Kapitel 2.4.6) gehört. Jedoch besteht in diesen Kreisen 3 Kapitel 1: Einleitung oftmals noch eine große Unsicherheit und Verwirrung über den aktuellen Entwicklungsstand dieser Standards. Die Technologie Federated Identity befindet sich heute in der frühen Umsetzungsphase (engl. Early Adoption Phase). Vor allem große Unternehmen setzen diese neue Technologie bereits in ersten begrenzten Geschäftsgebieten ein. Dass ein umfassendes Federated Identity Management längst keine Vision mehr ist, sondern in nicht allzu ferner Zukunft liegt, zeigen die Anstrengungen der Hersteller von Identity- und Access- Management (IAM)-Software. Hier sind vor allem Computer Associates [CA], IBM [IBM], Microsoft [MS], RSA Security [RSA] und Sun Microsystems [SUN] zu nennen. Alle diese Unternehmen haben den Trend Federated Identity Management rechtzeitig erkannt und darauf reagiert. Sie bieten grundlegende Sicherheitslösungen an, welche es Organisationen auf einfache Weise ermöglichen soll, eine Federated Identity Umgebung aufzubauen und zu realisieren. 1.2 Ziel der Arbeit Im Rahmen dieser Diplomarbeit soll - auf Basis des föderierten Standards SAML (Security Assertion Markup Language) 1.0/1.1 - die Interoperabilität zwischen drei weit verbreiteten Web Identity- und Access-Management (IAM)-Produkten unterschiedlicher Hersteller evaluiert werden. Jedes dieser Sicherheitsprodukte enthält eine SAML-Implementierung, die es ermöglicht, SAML-Nachrichten zu erstellen und zu verschicken. Zu den Sicherheitslösungen, die analysiert werden, gehören der Netegrity Siteminder 6.0 SP1, der RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5 und der IBM Tivoli Access Manager 5.1 & IBM Federated Identity Manager 6.0 (Beta-Version). Die Produkte dieser Hersteller sind in der Praxis weit verbreitet. Bei der BMW Group Deutschland wird beispielsweise der Netegrity Siteminder als grundlegende Sicherheitslösung eingesetzt. SAML unterstützt einen standardisierten Austausch von Sicherheitsinformationen (z.B. Authentifizierungsdaten eines Benutzers) zwischen Domänen. Diese können sich dabei unter der Kontrolle unterschiedlicher Unternehmen bzw. Organisationen befinden. Um im Rahmen dieser Diplomarbeit eine solche heterogene Systemumgebung simulieren zu können, werden die drei verwendeten Produkte im ersten Schritt auf jeweils verschiedenen Testservern installiert und geeignet konfiguriert. Um eine umfassende und nachvollziehbare Interoperablitätsanalyse zwischen den unterschiedlichen Produkten durchführen zu können, werden in Kapitel 4 SAMLAnwendungsfälle definiert, die in einer komplexen föderierten Identitätsumgebung unbedingt umgesetzt werden sollten. In der Evaluierungsphase soll dann festgestellt werden, inwieweit sich diese Use-Cases von den SAML-Implementierungen der verschiedenen Hersteller realisieren lassen. Insbesondere soll dabei die Konformität der Softwareprodukte zum OASIS 4 Kapitel 1: Einleitung SAML 1.0/1.1 Standard überprüft werden. Für eventuell auftauchende Inkompatibilitäten zwischen den Produkten sollen sinnvolle Lösungsansätze entworfen und - wenn möglich umgesetzt werden. Anhand der Testergebnisse soll festgestellt werden, ob es für Unternehmen, wie z.B. die BMW Group, möglich und sinnvoll ist, Föderationen mit Partner- und Dienstleistungsunternehmen aufzubauen. Eine funktionierende Zusammenarbeit unterschiedlicher FIM-Produkte ist für Unternehmen wie die BMW AG maßgeblich für ein verstärktes Engagement im Bereich Federated Identity Management, da Partner- und Dienstleistungsunternehmen oftmals nicht die gleichen Sicherheitsprodukte verwenden. 1.3 Aufbau und Gliederung der Arbeit Die vorliegende Arbeit umfasst sechs Kapitel. Diese werden im Folgenden kurz vorgestellt. Im ersten Kapitel wird die Motivation und das Ziel der Diplomarbeit vorgestellt. Dabei wird auch der Begriff Federated Identity Management eingeführt. Das zweite Kapitel beschäftigt sich mit den Grundlagen, die für den Aufbau einer föderierten Identitätsumgebung unerlässlich sind. Neben der Vorstellung und Erklärung fundamentaler Konzepte, wie der föderierten Authentifizierung und Autorisierung von Nutzern, umfasst dieses Kapitel vor allem die Einführung und den Vergleich anerkannter Föderationsstandards. Diese bilden die Basis für einen standardisierten Austausch von Identitätsinformationen in einem heterogenen Netzwerk. Das Hauptaugenmerk liegt dabei auf der OASIS SAML (Security Assertion Markup Language) 1.0/1.1 Spezifikation. Dieser XML-Dialekt bietet die Möglichkeit, Identitätsinformationen (wie z.B. Authentifizierungsdaten eines Benutzers) zwischen unterschiedlichen Domänen auszutauschen. In Kapitel 3 werden die drei verwendeten Identity/Access-Management-Produkte vorgestellt, mittels derer eine föderierte und heterogene Systemumgebung simuliert wird. Insbesondere wird an dieser Stelle detailliert auf die Federated Identity Management Fähigkeiten dieser Produkte eingegangen. Abschließend wird die komplette Systemarchitektur vorgestellt, die das technologische Fundament für die durchgeführten Interoperablitätsanalysen bildet. Um eine umfassende und nachvollziehbare Interoperablitätsevaluierung zu gewährleisten, werden in Kapitel 4 wichtige SAML-Anwendungsfälle definiert. Grundlage für diese Testfälle bilden die föderierten Dienste (föderierte Authentifizierung, Autorisierung und Attributsauskünfte). Anhand dieser Use-Cases wird die Interoperablitätsanalyse umgesetzt. In Kapitel 5 werden die in Kapitel 4 definierten Anwendungsfälle auf die aufgebaute Testumgebung angewendet. Dabei wird jedes Produkt einer genauen Interoperablitätsanalyse 5 Kapitel 1: Einleitung unterzogen. Insbesondere wird dabei jedes der verwendeten Produkte bzgl. seiner Konformität zum SAML Standard überprüft. Die Ergebnisse dieser Evaluierung sollen aufzeigen, ob die getesteten Sicherheitslösungen den Ansprüchen einer komplexen heterogenen Föderation genügen. Das letzte Kapitel gibt eine Zusammenfassung der wichtigsten Ergebnisse dieser Diplomarbeit wieder und endet mit einem Ausblick. 6 Kapitel 2: Grundlagen des Federated Identity Managements 2. Grundlagen des Federated Identity Managements 2.1 Identifikation in einem Computer Netzwerk Einer der Hauptgründe für den Einsatz heutiger moderner Computer Netzwerke ist die Möglichkeit, auf entfernte Ressourcen bzw. Objekte lokal zuzugreifen und diese nutzen zu können. Zunehmend möchten Organisationen ihren Mitarbeitern, aber auch ihren Partnern und Kunden, einen sicheren und einfachen Zugriff auf Ressourcen bieten und dabei das Firmenwachstum gewährleisten, die Zugriffskosten senken, die Sicherheit verbessern und behördlichen Anforderungen gerecht werden. Der Begriff Ressource ist dabei eine Abstraktion von z.B. Daten, Computerprogrammen, Netzwerkdruckern etc.. Um Missbrauch zu verhindern, ist es jedoch wichtig, dass die unterschiedlichen Ressourcen vor unerlaubten Zugriff geschützt werden. Dieses Problem führt uns zur Identifikation und Authentifizierung von Nutzern bzw. Entitäten. 2.1.1 Zugang zu Ressourcen Bevor eine Entität auf eine Ressource zugreifen und diese nutzen kann, muss sich die Entität gegenüber dem betreffenden Netzwerk identifizieren. Um den Begriff „identifizieren“ besser verstehen zu können, ist es sinnvoll, den Begriff der „Identität“ bzw. der „Identifikation“ zu definieren: Identität: Der Begriff der Identität beschreibt die einzigartige Kombination von persönlichen und damit unverwechselbaren Eigenschaften des Individuums und umfasst dabei beispielsweise den Namen, das Geschlecht und den Beruf - durch diese Charakteristika lässt sich die Person von anderen Individuen unterscheiden. [DefID] Identifikation: Identifikation beschreibt den Prozess, in dem der Nutzer seine Identität einem anderen Nutzer bzw. einer anderen Entität wie z.B. einem Computerprogramm übermittelt. In Computernetzen geschieht dies oft durch Angabe eines User Namens. [DefIF] Nachdem der Nutzer nun den Identifikationsprozess eingeleitet hat, muss die Autorität, welche die Ressourcen vor unerlaubten Zugriff schützen soll, die Identität des Nutzers prüfen, d.h., sie muss feststellen, ob der Nutzer wirklich der ist, der er behauptet zu sein. Diesen Prozess bezeichnet man gewöhnlich als „Authentifizierung“. Authentifizierung: Authentifizierung bezeichnet die Überprüfung der Identität einer Person oder eines Prozesses. Dies erfolgt über die Kenntnis eines Geheimnisses (z.B. Passwort oder biometrische Attribute). Bei erhöhten Sicherheitsanforderungen kommen kryptografische Methoden zum Einsatz, die entweder das Geheimnis oder auch den gesamten Authentifizierungsvorgang absichern. [DefAuth] 7 Kapitel 2: Grundlagen des Federated Identity Managements Nachdem sich ein Nutzer (bzw. Prozess) erfolgreich authentifiziert hat, kann dieser jedoch nur auf die Objekte zugreifen, für die ihm entsprechende Rechte zugeteilt wurden. Den Vorgang, welcher entscheidet, ob eine authentifizierte Entität auf eine Ressource zugreifen (z.B. lesender und/oder schreibender Zugriff) darf, bezeichnet man als „Autorisierung“: Autorisierung: Autorisierung bzw. Autorisation ist der Prozess, durch den bestimmt wird, ob ein Nutzer oder eine Entität Zugriff auf eine Ressource erhalten soll, d.h., ob der Zugriff autorisiert und damit die Integrität gewährleistet ist. Dazu müssen Sicherheitsregeln (Policies) angewendet bzw. ausgewertet werden. [DefAuz] Die tatsächliche Authentifizierung und Autorisierung von Nutzern oder Prozessen werden in Netzwerken von zahlreichen Authentifizierungs- bzw. Autorisierungs-Servern übernommen. Jeder dieser Server verwaltet einen Teil der Ressourcen in einem verteilten Netzwerk. Dieser Bereich wird oft als administrative Domäne (engl. Domain) bezeichnet. Will nun der Nutzer, obwohl er sich schon einmal in seiner Heim-Domäne eingeloggt hat, auf ein Objekt einer anderen Domäne zugreifen, so muss sich dieser dort meist neu authentifizieren, da für diese neue Domäne ein anderer Authentifizierungs-Server verantwortlich ist. Muss sich nun der Nutzer bei jedem Wechsel in eine neue Domäne wieder neu authentifizieren, so spricht man von Multiple Sign On (MSO) [FIMReq]. 2.1.2 Multiple Sign On vs. Single Sign On Unternehmen, staatliche Einrichtungen und Universitäten stehen heute vor dem Problem, dass sie nicht mehr nur den Zugang zu ihren eigenen administrativen Domänen, sondern auch zu den Domänen von Partnerunternehmen und anderen externen Einheiten bereitstellen müssen. Im Falle von Multiple Sign On muss ein Nutzer bzgl. jeder Domäne, für die er Rechte besitzt, eigene Zugriffsdaten wie z.B. Username und Passwort verwalten. Bewegt sich ein Nutzer nun innerhalb vieler Domänen, so muss dieser - neben dem nicht unerheblichen Aufwand der Verwaltung zahlreichen Authentifizierungsdaten - viel Zeit damit verbringen, sich ständig neu einzuloggen. Eine Reduktion dieses zeitlichen Aufwandes könnte die Produktivität der Mitarbeiter bzw. die Zufriedenheit der Kunden und Partner maßgeblich erhöhen. Im Jahr 2002 führte die „PricewaterhouseCoopers /Meta Group“ unter Unternehmen in Nord-Amerika eine Studie mit dem Namen „The Value of Identity Management“ [ValIM] durch. Diese Studie kam zu dem Ergebnis, dass der durchschnittliche User täglich 16 Minuten mit der Authentifizierung und Anmeldung verbringt. Für ein großes Unternehmen - in der Untersuchung als eine Organisation mit 10.000 Benutzern definiert - entspricht dies pro Tag 2.666 Stunden bzw. dem Äquivalent von 1,3 Vollzeitstellen. Zudem entstehen Organisationen hohe Kosten für die Unterhaltung von Helpdesks. Da sich jeder Nutzer zahlreiche Usernamen und Kennwörter merken muss, erhöht sich die Wahrscheinlichkeit, dass dieser seine Authentifizierungsdaten häufig vergisst. 45 % aller Anrufe bei den Helpdesks betreffen das Zurücksetzen von Kennwörtern. 8 Kapitel 2: Grundlagen des Federated Identity Managements Ein weiteres Problem ist die redundante Datenhaltung. Durch die Beseitigung von mehrfach gespeicherten Identitätsdaten können die Verwaltungsprozesse vereinfacht und die Betriebskosten reduziert werden. 38 % der externen Nutzer und 75 % der internen Nutzer sind in mehreren Datenspeichern enthalten. Wären die Identitäten eines jeden Benutzers nur noch einmal gespeichert, so ließen sich laut der Studie jährlich bis zu 1236 Stunden an Verwaltungsaufwand einsparen [MSTech]. Alle diese oben genannten Probleme entstehen durch den Einsatz von uneffektiven Multiple Sign-On Umgebungen. Obwohl solche Umgebungen immer noch die Regel sind, gewinnt ein relativ neues Konzept immer mehr an Bedeutung. Dieses wird unter dem Namen Single SignOn (SSO) zusammengefasst. Die Open Group definiert SSO folgendermaßen [OpenSSO]: Single Sign-On (SSO) is a mechanism whereby a single action of user authentication and authorization can permit a user to access all computers and systems where that user has access permission, without the need to enter multiple passwords. Ziel von SSO ist es, dass User nach einer einmaligen Authentifizierung auf alle lokalen und entfernten Ressourcen, für die sie Rechte besitzen, zugreifen können. Es gibt jedoch zwei Arten von SSO. Einfaches SSO betrifft nur eine Domäne, d.h., Nutzer sind in der Lage, viele verschiedene Applikationen und Objekte innerhalb einer Domäne zu benutzen, ohne sich jedes Mal neu authentifizieren zu müssen. Diese Art von SSO ist heute schon problemlos möglich und hat sich deshalb in den meisten größeren Unternehmen bereits durchgesetzt. Schwieriger wird es, wenn SSO über viele unterschiedliche Domänen hinweg, d.h. Domänen mit verschiedenen Authentifizierungs- und Autorisierungsautoritäten, funktionieren soll. Erschwerend kommt hinzu, dass sich diese zahlreichen Authentifizierungs- und Autorisierungsautoritäten meist unter der Kontrolle von unterschiedlichen, eventuell unabhängigen Organisationen befinden. Diese Art von SSO wird oft auch als Federated Identity Single Sign-On [FedSSO] bezeichnet. Während einfaches SSO heute bei vielen Unternehmen und anderen Einrichtungen allgemeiner Standard ist, befindet sich Federated Identity Single Sign-On aufgrund seiner Komplexität noch in der Forschungs- bzw. Testphase. 2.1.3 Federated Identity Single Sign-On Das Konzept Identity Federation ist entwickelt worden, um den Nutzern die Möglichkeit zu geben, sich innerhalb einer Föderation übergangslos zwischen verschiedenen Domänen bewegen zu können. Da die Identitätsinformationen nun nicht mehr zentral gespeichert werden können, muss zwischen den verschiedenen Domänen ein Vertrauensverhältnis (engl. trust relationsship) bestehen. Loggt sich beispielsweise ein Nutzer in der Domäne der Organisation A ein und versucht anschließend, auf eine Applikation der Organisation B zuzugreifen, so muss Organisation A 9 Kapitel 2: Grundlagen des Federated Identity Managements der Organisation B bestätigen, dass sich der Nutzer bereits erfolgreich authentifiziert hat. Um Federated Identity SSO zu ermöglichen, muss die Organisation B den Zusagen von Organisation A vertrauen. Innerhalb einer Föderation wird die Stelle, welche den Nutzer authentifiziert als Asserting Party (AP) bzw. Identity Provider (IdP) und die Stelle, welche Ressourcen und Dienste zur Verfügung stellt als Relying Party (RP) bzw. Service Provider (SP) bezeichnet. Abbildung 3: Austausch von Identitäten in einer Trust Relationsship [RSATech] Für die Übermittlung der Sicherheitsinformationen zwischen IdP und SP gibt es verschiedene Standards (z.B. X509 Zertifikate [X509], Kerberos Tokens [Kerb], SAML-Assertions [SAMLDef]). Zur Übertragung der sicherheitsrelevanten Informationen wird gewöhnlich das Kommunikationsprotokoll SOAP (Simple Object Access Protocol) eingesetzt [RSATech]. 2.1.4 Beispielszenarios Die folgenden Beispiele zeigen die grundlegenden Einsatzmöglichkeiten von Federated Identity Management [FIMReq]: B2C (Business-to-Customer): Beispiel Reiseindustrie Dieses Beispiel umfasst eine Fluglinie, eine Autovermietungsfirma und eine Hotelkette. Alle drei Beteiligten haben ein Bündnis geschlossen, dass es ihnen erlaubt, Identitätsinformationen auszutauschen. Innerhalb dieser Föderation (im Englischen oft auch Circle of Trust genannt) existiert eine Partei, welche als IdP fungiert. An dieser Stelle sind die Nutzerprofile gespeichert. Abbildung 4 zeigt ein solches Szenario. Nutzer Bob will seinen Urlaub für das nächste Jahr buchen. Deshalb besucht er die Webseite seiner bevorzugten Fluglinie. Auf dieser Seite authentifiziert sich Bob, um eine Flugreise nach New York City zu buchen. Anschließend 10 Kapitel 2: Grundlagen des Federated Identity Managements benötigt er noch eine Unterkunft. Dazu folgt Bob einem Link auf der Webseite der Fluglinie und wird daraufhin - per Single Sign-On-Mechanismus - auf die Webseite der Hotelkette umgeleitet. Dort kann er nun sofort ein Hotel seiner Wahl buchen. Die Buchung eines Mietwagens erfolgt analog. Airline, Inc. TravellsUs.com CarRentals.com Identity Store CheapHotel, Inc. Bob Abbildung 4: B2C Szenario – Beispiel Reiseindustrie [FIMReq] Im diesem Szenario ist der Identity Provider gewöhnlich eine Portal-Seite (TravelsUs.com), welche an der Föderation beteiligt ist. B2E (Business-to-Employee): Outsourcing von Dienstangeboten In diesem Beispiel ermöglicht ein Arbeitgeber seinen Angestellten, ausgelagerte Dienste (engl. Benefits) zu nutzen. Diese werden von externen Dienstleistungsunternehmen erbracht. Die angebotenen Dienste betreffen beispielsweise die medizinische Vorsorge, Rentenvorsorge, Angebote von kostengünstigen Versicherungen, Pläne für die Geldanlage etc. Arbeitgeber und Dienstanbieter bilden wieder einen Circle of Trust. Innerhalb dieser Geschäftbeziehung fungiert der Arbeitgeber als IdP, d.h., er authentifiziert seine Angestellten und leitet auf Wunsch die Authentifizierungs-/Autorisierungsinformationen an die externen Dienstleistungsunternehmen weiter. Abbildung 5 zeigt ein Beispiel für eine solche B2E-Umgebung. Dabei ist Jane eine neue Angestellte. Für sie wird sowohl auf Arbeitgeberseite als auch auf Seite der Dienstanbieter ein Nutzer-Konto erstellt. Im Fachjargon wird die Verknüpfung dieser Konten Account Linking genannt. Mit Account Linking können Anwender Konten, die sie bei verschiedenen Webseiten bzw. Unternehmen haben, miteinander verbinden, sobald die Dienste eine Zusammenarbeit erlauben. Das Sign-On auf verlinkte Konten ist dann nur einmal notwendig. Will Jane nun ihre Rentenversicherungsbeiträge verwalten, so wird sie mittels SSO von der Intranet-Seite des Arbeitgebers auf die Seite des zuständigen Dienstproviders weitergeleitet. 11 Kapitel 2: Grundlagen des Federated Identity Managements Geht Jane fünf Jahre später in Ruhestand, so müssen die Account-Verbindungen zwischen den Benefits-Providern und dem Arbeitgeber gelöst werden, damit Jane nicht mehr die Möglichkeit hat, von der Webseite ihres ehemaligen Arbeitgebers aus auf die Dienstangebote zuzugreifen. Employee Portal Jane’s Employer Benefits Provider Identity Store 401k Provider Jane Abbildung 5: B2B Szenario - Beispiel Outsourcing von Dienstangeboten [FIMReq] Da Jane jedoch immer noch auf ihr Rentenkonto zugreifen soll und darf, übernimmt in diesem Fall der Benefits-Provider sowohl die Aufgabe des IdPs als auch die des SPs. B2B (Business-to-Business): Management einer Wertschöpfungskette Im Bereich eines B2B-Umfeldes ist es interessant, heutige logistische Wertschöpfungsketten von Unternehmen zu betrachten. Aufgrund der bestehenden Konkurrenzsituationen ist gerade in diesen Szenarios Sicherheit von enormer Bedeutung. Deshalb ist es innerhalb solcher Geschäftsbeziehungen nicht ungewöhnlich, dass jeder Teilnehmer der Föderation sowohl als IdP als auch als SP auftritt. Dieser Umstand erlaubt es Unternehmen als IdP für seine eigenen Angestellten und als SP für die Mitarbeiter von den Partnern der Föderation aufzutreten. Abbildung 6 zeigt ein Beispiel für eine B2B-Umgebung. Dabei ist Bob ein Einkaufsleiter, welcher die Aufgabe bekommen hat, für seine Firma eine größere Menge von Produkten (engl. widgets) zu bestellen. Dem Unternehmen von Bob stehen dabei mehrere Zuliefererfirmen für dieses Produkt zur Auswahl. Bob authentifiziert sich nun auf der Plattform seines Arbeitgebers und kann dann per SSO auf den Zulieferer seiner Wahl zugreifen und die Bestellung durchführen. Wichtig ist, dass Bob nur auf die Dienste der Partnerunternehmen zugreifen darf, für die innerhalb der Geschäftsbeziehung eine Berechtigung ausgehandelt wurde. Er darf keinesfalls Zugriff auf alle Daten und Ressourcen besitzen. 12 Kapitel 2: Grundlagen des Federated Identity Managements Widget Provider A Bob’s Employer Identity Store Widget Provider C Widget Provider B Bob Abbildung 6: B2B Szenario – Aufbau von Wertschöpfungsketten [FIMReq] 2.2 Konzepte einer Föderation Dieser Abschnitt führt vier wesentliche Konzepte ein, die föderierte Identitäts-Umgebung unterstützen sollten: Single Sign-On Siehe Kapitel 2.1.2 bzw. 2.1.3 Account Linking Account Linking (siehe Kapitel 2.4.4) erlaubt es einem Benutzer, seine zahlreichen Konten aus unterschiedlichen Domänen zu verbinden, um den zukünftigen Authentifizierungs- und Autorisierungsprozess zu vereinfachen und SSO zu ermöglichen. Dazu werden die verschiedenen Konten eines Nutzers aufeinander abgebildet bzw. miteinander verbunden. Beispiel (vgl. Abbildung 7): Alice hat ein Nutzerkonto (UserID Alice123) bei einem Bankinstitut, um Online-Banking nutzen zu können. Zusätzlich zu diesem Bank-Account besitzt sie ein Konto bei einer OnlineBuchhandlung (UserID BücherWurmAlice). Damit das Versandhaus Identitätsinformationen vom Bankinstitut empfangen und zudem Anfragen bezüglich der Kreditwürdigkeit stellen kann, müssen die beiden Unternehmen ihre Account-Identifier aufeinander abbilden, d.h., das Versandhaus muss wissen, dass die ID „Alice123” der Identität „AliceBücherWurm” entspricht. Aus Gründen der Sicherheit und des Datenschutzes wird beim Account Linking statt des tatsächlichen Usernamens meist ein Pseudonym (Alias) verwendet. In Abbildung 7 werden beispielsweise statt der tatsächlichen Nutzernamen „AliceBücherWurm” bzw. „Alice123” die Pseudonyme „PEIIKD889“ bzw. „JKR67HY“ zwischen den beteiligten Parteien ausgetauscht. Neben der dadurch gewährleisteten Anonymität verhindert der Einsatz 13 Kapitel 2: Grundlagen des Federated Identity Managements von Pseudonymen darüber hinaus Namenskonflikte zwischen verschiedenen Service Providern. Attributaustausch Das Konzept der Föderierung von Identitäten bedeutet mehr als ausschließlich die Fähigkeit, eine Single Sign-On Umgebung aufbauen zu können. Es sollte auch den sicheren domänenübergreifenden Austausch individueller Attribute wie z.B. Kontonummer, Rollenbezeichnungen oder Standort eines Nutzers beinhalten. Die Übertragung von Attributen - zusammen mit der Identität eines Nutzers - soll Applikationen die Möglichkeit geben, dem Benutzer personalisierte Dienste und Ressourcen anbieten zu können. Zudem besteht die Möglichkeit, anhand übersendeter Attributwerte feingranulare Zugriffsentscheidungen (Autorisierung) zu treffen. Buchhandel Bankinstitut Local User: AliceBücherWurm Alias : PEIIKD889 Local User: Alice123 Alias : JKR67HY Mapping: JKR67HY = BücherWurmAlice Mapping: PEIIKD889 = Alice123 Abbildung 7: Beispiel Account Linking Im obigen Beispiel wäre es zum Beispiel sinnvoll, wenn das Versandhaus berechtigt wäre, vom Bankinsitut die Kreditkartennummer von Alice in Form eines Attribut/Werte-Paares zu erhalten. Dadurch müsste Alice bei einer Online-Bestellung nicht jedes Mal ihre Kreditkartennummer neu angeben. Datenschutz Innerhalb einer Föderation, in der Nutzerkonten miteinander verbunden und Attribute ausgetauscht werden, spielt der Datenschutz eine besondere Rolle. Dabei müssen personenbezogene Daten, neben starken Sicherheitsvorkehrungen bezüglich der Protokolle und der Transportschicht, unbedingt vor einem unerlaubten Zugriff geschützt werden. Auch die Anonymität eines Nutzers spielt eine große Rolle. Aus diesen Gründen darf eine Verbindung von Nutzerkonten nur durchgeführt werden, wenn der Benutzer sein ausdrückliches Einverständnis dafür gegeben hat. Welche Attribute dabei mit wem 14 Kapitel 2: Grundlagen des Federated Identity Managements ausgetauscht werden dürfen, sollte auf Regeln (Policies) basieren, welche vom Nutzer festgelegt wurden. Des Weiteren sollte die Möglichkeit bestehen, Attribute auf eine anonymisierte Art und Weise zu übermitteln. Oftmals ist es für einen Service Provider nicht notwendig, die tatsächliche Identität eines Benutzers zu kennen, was es unnötig macht, diese zu übermitteln. Ein Beispiel für einen solchen Service Provider wäre eine Wetterstation. Diese muss ausschließlich den Ort eines Nutzers erfahren, nicht aber seinen Namen, Telefonnummer oder ähnliche persönliche Daten. Management Jede Lösung bezüglich einer Föderierung von Identitäten muss Möglichkeiten zum Management dieser Technologie anbieten. Dies ist eine maßgebliche Vorraussetzung dafür, dass ein föderiertes Netzwerk geschaffen und verwaltet werden kann. Dies schließt die Schaffung von komplexen Geschäftsbündnissen mit ein, welche abgeschlossen werden müssen, um den Einsatz von Federated Identity Technologien zu ermöglichen. Solche Vertrauensbeziehungen werden oftmals, wie anfangs erwähnt, Circles of Trust genannt. 2.3 Web-Services Web-Services bilden die technologische Grundlage für eine Federated Identity Umgebung. Der Grundstein für die Entwicklung der Web-Services wurde mit XML gelegt. Während sich früher im HTML-basierten und damit rein Layout-Orientierten Web die Semantik nur dem menschlichen Betrachter aus Inhalt und Kontext erschließen konnte, hat XML die Semantik der Daten in den Vordergrund gestellt. Ein universelles Austauschformat für Daten war damit geschaffen. Was aber noch fehlte, war ein entsprechender Transportmechanismus. Technologien wie CORBA [CORBA] oder Java RMI [RMI] sind solche Mechanismen. Deren Anwendung ist aber zu komplex für bezahlbare und einfache Projekte. In diese Lücke trat die Technologie der Web-Services. Web-Services richten sich primär an andere Rechnersysteme. Ein Dienst spricht mit einem anderen oder gleich mit mehreren auf einmal. So entsteht ein dynamisches Netzwerk aus unterschiedlichsten Anwendungen, sozusagen eine lose Kopplung verteilter Systeme unterschiedlichster Architekturen ohne menschliche Interaktion und damit auch ohne LoginMasken oder ähnlichen Schwachstellen bei der Erkennung und Authentifizierung von Benutzern. Web-Services stellen dabei Funktionen von Anwendungen nach außen zur Verfügung. Sie verhalten sich dabei nicht anders als Schnittstellen für CORBA oder Java RMI, nur eben einfacher und auch in heterogenen Umgebungen nutzbar. Anwendungen können Web-Services dynamisch nutzen. Die Idee von SOAs (Service Oriented Architectures) [SOA] sieht vor, dass Anwendungen Prozesse definieren, mit denen verschiedene Web-Services im Unternehmen und außerhalb miteinander verbunden werden. Anwendungen nutzen also Funktionen anderer Programme über Web-Services und verbinden diese miteinander. Der Web-Service ist dabei eine Schnittstelle. Google hat eine solche 15 Kapitel 2: Grundlagen des Federated Identity Managements Schnittstelle ebenso wie eBay. Aber auch bei Enterprise-Systemen wie SAP R/3 und PeopleSoft rücken Web-Services immer mehr in den Mittelpunkt des Interesses. Die technische Basis für Web-Services sind XML, SOAP 1.2 (Simple Object Access Protocol) [SOAP12], WSDL 1.1 (Web-Services Description Language) [WSDL11] und UDDI 2.0 (Universal Description, Discovery, and Integration) [UDDI2]. UDDI ist ein Verzeichnisdienst, der beschreibt, welche Web-Services in einem Netzwerk existieren. Unternehmen wie IBM, SAP und Hewlett-Packard bieten solche Verzeichnisse im Internet an. WSDL legt fest, wie ein Web-Service definiert werden muss. SOAP wird verwendet, um Informationen mit dem Web-Service auszutauschen. Dazu werden SOAP-Nachrichten über HTTP versendet. Neben der Anbindung an ein Transportprotokoll (z.B. HTTP) definiert SOAP ein Nachrichtenformat und Regeln zur Kodierung. Eine SOAP-Nachricht besteht aus drei Teilen: dem Umschlag (engl. envelope), optionalen Angaben im sog. Header und der eigentlichen Nachricht (engl. body). Die letzten beiden Teile sind in den Umschlag eingebettet. Abbildung 8 zeigt die Struktur einer SOAP-Nachricht. Ein Problem ist jedoch, dass weder TCP/IP noch HTTP, SOAP oder XML sichere Protokolle sind. Bei der Sicherheit von Web-Services gibt es zwei Ebenen. Da ist zum einen die Sicherheit auf Transportebene und zum anderen die Sicherheit auf Anwendungsebene. Die erste Herausforderung ist also die Sicherheit auf Transportebene. Da mit HTTP gearbeitet wird, kommt hier SSL [SSL3] in Frage. SSL (Secure Sockets Layer) ist ein von Netscape für die Authentifizierung und Verschlüsselung von HTTP entwickelter Standard. Das Problem bei SSL ist, dass es immer nur die Daten zwischen einem Client und einem Server verschlüsselt. Die Grenzen werden am besten am E-Mail Dienst deutlich. Eine E-Mail wird von einem Client über SMTP an seinen Postausgangsserver und von diesem dann in der Regel an mindestens einen weiteren SMTP-Server gesendet, auf den dann der Empfänger zugreift. SSL kann nun die Verbindung zwischen dem Client und seinem SMTP-Server oder zwischen den SMTP-Servern oder vom letzten SMTP-Server zum Empfänger sichern. Die Nachricht jedoch ist auf jedem Server ungeschützt. Daher gibt es spezielle E-MailVerschlüsselungstechnologien wie PGP (Pretty Good Privacy) [PGP] oder S/MIME [MIME]. SSL ist nur für Punkt-zu-Punkt Verbindungen geeignet. Bei SOAP werden sog. Envelopes verschickt, also eine Analogie zu E-Mails. Diese können ebenfalls über mehrere Server gehen. Wenn Client und Server bei Web-Services direkt zusammenarbeiten, kann die Verbindung über SSL geschützt werden. Bei mehreren genutzten Servern – manche sprechen auch von multiplen Web-Services – gibt es keinen durchgehenden Schutz. SSL reicht als Schutzmechanismus für Web-Services daher nicht aus, weil es mehrere Transportstrecken geben kann und weil die SOAP-Envelopes auf Servern zwischengespeichert und verarbeitet werden und dort nicht durch SSL geschützt werden. Protokolle wie SSL, die bei der Übertragung von Web-Services nur Schutz auf der TransportEbene bieten können, reichen also alleine nicht aus. Deswegen wurden Standards geschaffen die die Sicherheit auch auf Anwendungsebene gewährleisten sollen. Die wichtigsten 16 Kapitel 2: Grundlagen des Federated Identity Managements Standards dieser Ebene sind WS-Security (siehe Kapitel 2.4.5) und SAML (siehe Kapitel 2.4.2). [WSBasics] SOAP-Envelope SOAP-Header Headerblock Headerblock SOAP-Body Nachrichten -Body Abbildung 8: Struktur einer SOAP-Nachricht [SOAP12] 2.4 Sicherheitsstandards in einer Identity Federation Standards spielen in einer Identity Federation eine wichtige Rolle, indem sie die grundlegende Syntax, Semantik und die grundlegenden Verarbeitungsregeln definieren mit dem Ziel, eine Zusammenarbeit verschiedener heterogener Systemumgebungen zu erlauben. Diese Standards bilden die Basis für ein föderiertes Identitätsmanagement. Dieses Kapitel beschreibt die grundlegenden Standards bzw. Industrie-Initiativen, welche sich dem komplexen Problem der Identity Federation widmen: • • • • Microsoft Passport Security Assertion Markup Language (SAML) Liberty Alliance Identity Federation Framework WS-Security bzw. WS-Federation 2.4.1 Microsoft .NET Passport Microsoft .NET Passport [NETPass] wurde im Jahr 1999 ins Leben gerufen. Passport ist eine weit verbreitete, Web-basierte Single Sign-On Implementierung. Microsoft .NET Passport ermöglicht es seinen Nutzern, einen Usernamen und ein Passwort zu erstellen, mit dem der Benutzer auf jede Webseite, welche den Passport Single Sign-In (SSI) Dienst implementiert hat, zugreifen kann. Microsoft versucht mit diesem System, das Ziel einer individuellen und verteilten Authentifizierung von Benutzern im Internet durch einen zentralen Dienst zu ermöglichen. 17 Kapitel 2: Grundlagen des Federated Identity Managements Anbietern von Webangeboten soll dadurch die Möglichkeit eröffnet werden, die Authentifizierung an einen zentralen Dienst bei Microsoft auszulagern und sich somit den eigenen Implementierungsaufwand einer sicheren Single Sign-On Authentifizierung zu ersparen. Neben der Einsparung des Implementierungsaufwands soll dieses Verfahren auch die Sicherheit der Authentifizierung erhöhen, da der Authentifizierungsdienst in einer entsprechend abgesicherten Umgebung betrieben werden kann. Aus Sicht des Benutzers verspricht dieser Dienst einen höheren Komfort bei der Nutzung von webbasierten Diensten, da sich dieser nur noch ein Passwort für alle am Microsoft .NET Passport-Service teilnehmenden Webseiten merken braucht. Nach Aussagen von Microsoft gibt es mittlerweile weltweit mehr als 165 Mio. Passport-Konten, die monatlich mehr als zwei Milliarden Authentifizierungen generieren [MSInf]. Trotz dieser auf den ersten Blick recht beeindruckenden Zahlen wird Passport außerhalb der eigenen Seiten von Microsoft nur selten eingesetzt. Die meisten Konten, die momentan bestehen, stammen von dem freien E-Mail-Dienst Hotmail. Die grundlegende Funktionsweise der Microsoft Passport Services besteht darin, dass der/die Webserver eines Unternehmens die Authentifizierung eines Zugriffs auf eine geschützte Ressource nicht selbst übernimmt/übernehmen, sondern diese Aufgabe an einen zentralen Dienst auslagern. Loggt sich ein Nutzer mit seinem Passport Account auf einer Webseite ein, wird dieser mittels eines HTTP-Redirects auf einen Server der .passport.com Domäne weitergeleitet. Dort wird der Benutzer mittels seines Usernamens und Passwortes beim Passport-Service authentifiziert. Der Passport-Service legt bei erfolgreicher Authentifizierung mehrere Cookies sowohl in der .passport.com Domäne als auch im Browser des Nutzers ab, damit sich dieser später nicht erneut authentifizieren muss. Diese Cookies implementieren den Single Sign-On Mechanismus. Dieser Mechanismus basiert dabei grundlegend auf den Prinzipien von Kerberos [Kerb]. Die drei wichtigsten Cookies sind [AuthWeb]: • MSPSec: Dieses Cookie enthält das Passwort des Nutzers. Gespeichert wird dieses Cookie in der .passport.com Domäne. Es ist gültig, solange der Benutzer sein Kennwort nicht ändert. • MSPAuth: Dieses Cookie enthält eine eindeutige 64-bit Passport Unique ID (PUID), um den Nutzer gegenüber dem/den Server(n) in der .passport.com Domäne zu identifizieren. Zudem enthält dieses Cookie Informationen über den Zeitpunkt, an dem sich der Nutzer das letzte Mal manuell eingeloggt hat. Mit diesem Zeitstempel kann vom User z.B. verlangt werden, dass seine manuelle Authentifizierung nicht länger als 20 Minuten zurückliegen darf. Eine Abfrage dieser Art wird vor allem bei besonders sicherheitskritischen Diensten verwendet. 18 Kapitel 2: Grundlagen des Federated Identity Managements • MSPProf: Dieses Cookie speichert die Profilinformationen eines Nutzers. Die Gültigkeit besteht, solange der Nutzer seine Passport Profildaten nicht ändert. Im nächsten Schritt erstellt der Passport-Service ein Ticket für den Webserver des Nutzers, das die PUID des authentifizierten Benutzers sowie zusätzliche, vom Benutzer explizit zur Weitergabe an den Web-Dienstleister freigegebene Informationen, wie z.B. die E-Mail Adresse, enthält. Dieses Ticket wird mit einem für den Webserver individuellen Schlüssel kodiert. Der Benutzer wird danach wieder an den ursprünglichen Webserver zurückverwiesen, wobei das Ticket für diesen Webserver als Parameter übergeben wird. Der Webserver leitet das Ticket anschließend an den lokal installierten Passport-Manager weiter, der das Ticket entschlüsselt und die PUID sowie die zusätzlichen Daten zur weiteren Auswertung an der Webserver zurück liefert. Zum Schluss legt der Webserver selbst noch einige Cookies im Browser des Benutzers ab, unter anderem, um weitere Authentifizierungsanfragen beim Passport-Service zu vermeiden. An dieser Stelle wird deutlich, dass mit Hilfe des Passport-Services lediglich eine Authentifizierung des Benutzers vorgenommen wird. Der Web-Dienstleister weiß damit, dass der Benutzer mit dieser PUID sich gegenüber dem Passport-Service erfolgreich authentifiziert hat. Die anschließende Autorisierung des Zugriffs liegt aber weiterhin in der Verantwortung des Dienstleisters. Durch die Verwendung des Passport-Services entfällt nicht die Notwendigkeit, sich auf Websites registrieren zu lassen. Damit der oben beschriebene Authentifizierungsdienst von einem Web-Dienstleister oder einem Benutzer genutzt werden kann, müssen sich beide Parteien beim Passport-Service registrieren [AuthWeb]. Trotz mancher guter Ansätze von MS Passport hat sich diese Technologie in der Netzwelt nicht durchgesetzt. Das Hauptproblem an Passport ist, dass es auf einem zentralen und nicht auf einem föderierten Ansatz beruht. Deshalb wurde frühzeitig Kritik an diesem System laut. Datenschützer befürchten, dass Microsoft aus der Menge der Informationen, die jeder Passport-Nutzer meist unbewusst an die Microsoft Server liefert, Kundenprofile erstellen und speichern könnte. Zudem haben IT-Experten im Juni 2000 das Passport-Protokoll der Redmonder untersucht und kamen zu dem Schluss, dass das System erhebliche Sicherheitsrisiken bzw. Sicherheitslücken in sich trägt [PassTrouble]. Wohl vor allem aus diesen Gründen hat kürzlich das Online-Auktionshaus eBay angekündigt, ab Ende Januar 2005 auf .NET Passport verzichten zu wollen. Damit ist eBay nur der jüngste von vielen Kunden, die den Einsatz von Passport aufgegeben haben. Zuletzt hatte das Karriere-Netzwerk Monster.com im Oktober auf die Anmeldung via dem Microsoft-WebService verzichtet [ZDNet]. Aufgrund dieser Entwicklungen hat Microsoft im Oktober 2004 mitgeteilt, dass die Weiterentwicklung von .NET Passport eingestellt wird. Nachdem nun auch eBay Abschied von Passport genommen hat, wird Passport in der Zukunft wohl nur noch bei Microsoft19 Kapitel 2: Grundlagen des Federated Identity Managements Webseiten und Produkten wie dem MSN Messenger oder Hotmail zum Einsatz kommen [INQ]. 2.4.2 Security Assertion Markup Language – SAML Die Security Assertion Markup Language (SAML), entwickelt vom Security Technical Services Committee der Organization for the Advancement of Structured Information Standards (OASIS) [OASISTC], ist ein auf XML basierter Standard, um Nutzer-, Authentifizierungs-, Autorisierungs- und Attribut-Informationen über ein Netzwerk austauschen zu können. OASIS [OASIS] ist eine Non-Profit Organisation, die sich der Entwicklung von E-Business-Standards verschrieben hat. Diese Gruppe besteht aus zahlreichen bekannten Mitgliedern. Exemplarisch seien Computer Associates, IBM, SUN, Nokia und SAP genannt. Diese kurze Auflistung des Who-is-Who in der IT-Branche zeigt schon, dass SAML nicht fürchten muss, von der Wirtschaft nicht akzeptiert zu werden. SAML ist ein flexibles und erweiterbares Protokoll, welches von anderen Standards genutzt werden kann. Die Liberty Alliance [LibAll], das Internet2 Shibboleth-Projekt [Shibb] und der OASIS Standard Web-Services Security (WS-Security) [WS-Sec] nutzen SAML in unterschiedlich starkem Maße als technologische Grundlage. SAML 1.0 [SAML10] wurde Ende 2002 als OASIS Standard verabschiedet. SAML 1.1 [SAML11] folgte im September 2003 und erreichte einen beachtlichen Erfolg in verschiedenen Industriezweigen (z.B. Finanzwesen). SAML wird aktuell von nahezu allen namhaften Herstellern in ihren Web Identity/Access-Management Produkten unterstützt. Anfang dieses Jahres veröffentlichte die Gruppe der OASIS den Standard SAML 2.0 (vgl. Kapitel 2.4.3.7). Ein Ausblick auf diesen aktuellen Standard wird am Ende dieses Kapitels gegeben. Da SAML 2.0 aufgrund seiner Aktualität in den Softwareprodukten der großen ITFirmen noch keine Verwendung findet, beschränkt sich diese Diplomarbeit auf den Standard SAML 1.0 bzw.1.1. Vorteile des SAML-Standards: • Plattformunabhängig – SAML trennt das Sicherheits-Framework von den konkreten Implementierungen und Architekturen verschiedener Hersteller. • Lose Koppelung von Nutzerdatenbanken – SAML ermöglicht eine verteilte Speicherung von Nutzerdaten. Die verschiedenen Benutzerverzeichnisse müssen nicht synchronisiert werden. • Bedienungsfreundlichkeit für den End-Nutzer – SAML Authentication-Assertions ermöglichen Single Sign-On. • Reduzierung der administrativen Kosten für Service Provider – Verwendung von SAML reduziert innerhalb einer Federated Identity Umgebung die Kosten für den 20 Kapitel 2: Grundlagen des Federated Identity Managements Service Provider (SP), da die Verwaltung von Nutzerinformationen vom Identity Provider (IdP) übernommen wird. • Risiko Übertragung – SAML ermöglicht es, das Risiko für eine sichere Verwaltung der Nutzerdaten vom SP an den IdP zu übertragen. Die Spezifikation SAML alleine reicht jedoch nicht aus, um das gesamte Spektrum der Funktionalitäten abzudecken, die für einen Aufbau einer komplexen föderierten Identitätsumgebung nötig sind. Die Regelungen bzgl. eines Vertrauensverhältnisses zwischen zwei Partnern, wie Benutzerverwaltung und Datenschutz, bleiben außerhalb der SAMLSpezifikation. 2.4.2.1 Anwendungsbereiche von SAML SAML unterstützt in einer Federated Identity Umgebung zahlreiche Anwendungsbereiche. Die wichtigsten sollen hier noch einmal kurz vorgestellt werden. Web Single Sign-On Web SSO ermöglicht es einem Anwender, sich auf einer Webseite zu authentifizieren, um dann ohne eine erneute Authentifizierung auf weitere, eventuell personalisierte Ressourcen und Informationen einer anderen Webseite zugreifen zu können. Erreicht wird dies durch den Austausch von SAML Authentication-Assertions (siehe Kapitel 2.4.3.2) zwischen IdP und SP. Die Webseite, welche die SAML-Assertion erhält, kann nun, falls die Herkunft der Assertion bekannt ist, den Benutzer automatisch authentifizieren, ohne dass dieser noch einmal explizit seine Nutzerdaten angeben muss. Sicherung von Web-Services SAML-Assertions können innerhalb des SOAP Headers als Security-Token verwendet werden, um Sicherheits- und Identitätsinformationen zwischen den Beteiligten einer WebService Transaktion auszutauschen. Das SAML Token-Profile des OASIS WS-Security TCs [WSSTC] spezifiziert, wie SAML-Assertions in das <Security> Element von WS-Security (vgl. Kapitel 2.4.5) integriert werden kann. Das Liberty Alliance ID-Web-Service Framework (vgl. Kapitel 2.4.4.3) verwendet ebenso SAML-Assertions als grundlegendes Security-TokenFormat, um einen sicheren und anonymen Zugriff auf Web-Services zu gewährleisten. Attribut-basierte Autorisation Ähnlich dem Web SSO-Szenario kommunizieren im Attribut-basierten AutorisierungsModell zwei unterschiedliche Webseiten miteinander, um Identitätsinformationen auszutauschen. Jedoch, anders als im SSO Szenario, wird keine Authentication-Assertion, sondern eine Attribute-Assertion ausgetauscht. Diese Assertion enthält bestimmte Attribute (z.B. die Rolle eines Nutzers innerhalb eines B2B Szenarios), die einem Benutzer zugeordnet werden können. Mittels dieser übermittelten Attribute kann eine feingranularere Autorisierung bzgl. bestimmter Ressourcen vorgenommen werden als dies mit reinen Authentication-Assertions möglich wäre. 21 Kapitel 2: Grundlagen des Federated Identity Managements 2.4.3 OASIS SAML 1.1 Spezifikation Der Standard SAML 1.1 [SAML11], Nachfolger von SAML 1.0 [SAML10], wurde Ende 2003 vom Non-Profit-Konsortium OASIS (Organization for the Advancement of Structured Information Standards) [OASIS] offiziell herausgegeben. SAML liefert einen standardisierten Weg für die Beschreibung von existierenden SicherheitsModellen, ermöglicht den Austausch sicherheitsrelevanter Informationen zur Authentifizierung und Autorisierung, basiert darüber hinaus auf Standards und ist plattformund herstellerunabhängig. Konzeptionell unterteilt sich die SAML-Spezifikation 1.1 in folgende Hauptbestandteile [SAMLArch]: • SAML-Assertions: Hier werden Informationen zur Authentifizierung, Autorisierung sowie weitere Session-Attribute innerhalb eines XML-Dokuments beschrieben. • SAML-Request- und Response-Protokoll: Hier wird definiert, wie SAML-Assertions angefordert und übermittelt werden. • SAML Bindings und Profiles: Hier wird festgelegt, wie SAML-Dokumente (Assertions) in standardisierte Transport- und Messaging-Frameworks eingebunden werden. Die SAML-Assertions sind die Basis, um Informationen über ein Subjekt (z.B. über einen Benutzer) zwischen einem IdP und einem SP auszutauschen. Das SAML-Request-Protokoll wird vom SP genutzt, um beim IdP eine SAML-Assertion über einen bestimmten Nutzer abzufragen. Der IdP wiederum antwortet auf diese Anfrage mit einer SAML-ResponseNachricht, welche die angeforderten Informationen im Rahmen einer Assertion enthält. Verschickt werden die Request- bzw. Response-Nachrichten innerhalb von SOAP-Envelopes (SAML-Binding), welche per HTTP zwischen den beteiligten Providern ausgetauscht werden (SAML-Profiles). Die komplette Spezifikation besteht aus folgenden Dokumenten: • Assertion & Protocol [SAMLProt]: Diese Spezifikation definiert die Syntax und Semantik der SAML-Assertions und der Request- und Response-Protokolle. • Bindings & Profiles [SAMLBind]: Ein Binding definiert die Abbildung einer SAMLRequest- bzw. Response-Nachricht auf ein Kommunikationsprotokoll einer niedrigeren Schicht wie z.B. SOAP oder SMTP. Der Satz von Regeln, welcher die Einbettung und Extraktion von SAML Informationen in und aus diesen Kommunikationsprotokollen erlaubt, wird SAML-Profile genannt. • Conformance Specifications [SAMLConf]: In den verschiedenen SAMLImplementierungen unterschiedlicher Hersteller und Organisationen wird meist nicht die komplette, sondern nur Teile der OASIS SAML-Spezifikation integriert. Die Conformance Specifications definieren einen Basis-Standard, welcher unbedingt bei 22 Kapitel 2: Grundlagen des Federated Identity Managements einer SAML-Implementierung berücksichtigt werden sollte. Eine vollständige Beachtung dieser Regeln erleichtert die Interoperabilität und Kompatibilität zwischen verschiedenen unabhängigen SAML-Implementierungen. • Security & Privacy Specifications [SAMLSec]: Diese Spezifikation widmet sich den Sicherheitsrisiken innerhalb der SAML-Architektur. • Glossary [SAMLGlos]: Dieses Dokument erläutert die Fachwörter, welche in den anderen Dokumenten verwendet werden. Der Vorgänger von SAML 1.1 war SAML 1.0. Nach Angaben des OASIS Konsortiums korrigiert der SAML-Standard 1.1 die Richtlinien zum Einsatz von digitalen Zertifikaten bei der Unterzeichnung von Benutzerinformationen. Prateek Mishra von Netegrity Inc, Mitglied des OASIS Security Services Technical Committees berichtete, dass die Bestimmungen des SAML 1.0 Standards über die Signierung von SAML-Assertions zu vage waren. Dies sorgte oftmals für Probleme beim Zusammenspiel zwischen SAML 1.0 basierten Web-Services [TecChannel]. SAML 1.1 hat zudem viele Fehler (Bugs) der Vorgängerversion behoben. 2.4.3.1 SAML-Assertions Eine Assertion oder Bestätigung ist ein XML-Dokument mit einer bestimmten Syntax, welche von dem Konsortium OASIS in seiner SAML-Assertion & Protocol Specification [SAMLProt] festgelegt wurde. Eine Assertion kann Authentifizierungs-, Autorisierungs- und Attributdaten von einem Subjekt (z.B. einem Nutzer) enthalten. OASIS definiert drei Arten von Assertions, welche von einer sog. SAML-Autorität generiert werden können [SAMLProt]: • Authentication-Assertion: Diese Assertion enthält Aussagen, ob sich ein Subjekt mittels einer bestimmten Methode zu einem bestimmten Zeitpunkt, an einem bestimmten Ort bereits einmal erfolgreich bzw. nicht erfolgreich authentifiziert hat. • Attribute-Assertion: Diese Assertion enthält Eigenschaften bzw. Attribute eines Subjekts (z.B. Kontostand eines Nutzers). • Authorization-Assertion: Diese Assertion enthält Informationen über die Berechtigungen eines Subjekts bzgl. bestimmter Ressourcen. Eine SAML-Assertion kann gleichzeitig Authentifizierungs-, Eigenschafts- und Autorisierungsinformationen enthalten. Es ist jedoch auch möglich, diese Informationen auf mehrere SAML-Assertions aufzuteilen. Abbildung 9 stellt den prinzipiellen Aufbau einer SAML-Assertion vor. Die detaillierte Beschreibung des Aufbaus erfolgt in Abschnitt 2.4.3.2. 23 Kapitel 2: Grundlagen des Federated Identity Managements MajorVersion Issuer MinorVersion IssueInstant NotBefore Assertion Conditions AssertionID NotOnOrAfter Condition AudienceRestrictionCondition Audience Advice AttributeStatement SubjectStatement AuthenticationStatement AuthorizationDecisionStatement ds:Signature Abbildung 9:Struktur einer SAML-Assertion [SSOTele] Im Folgenden ein Beispiel für eine SAML Authentication-Assertion: <?xml version="1.0" encoding="UTF-8"?> <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:1.0: AssertionID="abc123" IssueInstant="2005-03-22T09:13:29Z" Issuer="http://www.bmw.de" MajorVersion="1" MinorVersion="1"> <saml:Conditions NotBefore="2005-03-22T09:12:29Z" NotOnOrAfter="2005-03-22T09:18:29Z"> </saml:Conditions> <saml:AuthenticationStatement AuthenticationInstant="2005-03-22T09:13:29Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"> <saml:Subject> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" NameQualifier="www.rsa.com"> uid=admin </saml:NameIdentifier> </saml:Subject> </saml:AuthenticationStatement> </saml:Assertion> 24 Kapitel 2: Grundlagen des Federated Identity Managements 2.4.3.2 Aufbau einer SAML-Assertion Die folgenden Punkte definieren die SAML-Konstrukte, welche in einer SAML-Assertion vorkommen müssen bzw. dürfen [SAMLProt]: Element <saml:Assertion> Das Element <saml:Assertion> ist das Wurzelelement einer SAML-Assertion. Folgende Attribute sind im <saml:Assertion>-Element enthalten: MajorVersion & MinorVersion [verpflichtend] Diese Attribute legen fest, auf welcher SAML-Version die Assertion beruht. AssertionID [verpflichtend] Der Identifier einer Assertion. Dieses Attribut verweist eindeutig auf eine Assertion und ist deshalb vom Typ xsd:ID. Issuer [verpflichtend] Bezeichnet den Namen der SAML-Autorität, welche die Assertion generiert hat. Der Typ dieses Attributs ist xsd:String. Der Name eines Issuers sollte eindeutig sein, damit bei den verschiedenen Service Providern keine Zuordnungsprobleme auftreten. Deshalb ist es sinnvoll, als Identifier eine URI-Referenz zu benutzen, die in jedem Kontext eindeutig ist. IssueInstant [verpflichtend] Der Zeitpunkt, zu dem diese Assertion ausgestellt wurde. Das Zeitformat ist dargestellt als Universal Coordinated Time (UTC). Als Typ wird der W3C XML Schema Simple-Type xsd:dateTime verwendet [W3CSchema]. Weiter können folgende Elemente verwendet werden: <Conditions> [optional] Dieses Element legt den Gültigkeitsbereich einer Assertion fest. <Advice> [optional] Zusätzliche Informationen, welche helfen sollen, eine Assertion in bestimmten Situationen verarbeiten zu können. Falls Applikationen das Advice-Element nicht unterstützen, kann dieses jedoch auch ignoriert werden. <ds:Signature> [optional] Aus Sicherheitsgründen kann eine Assertion mittels XML Digital Signature signiert werden. Zudem muss eine syntaktisch korrekte SAML-Assertion mindestens eines der folgenden Elemente enthalten: <SubjectStatement> Beschreibung eines Subjekts. <AuthenticationStatement> Aussage über die Authentifizierung eines Subjekts. <AuthorizationDecisionStatement> Aussage über die Autorisierung eines Subjekts bzgl. bestimmter Ressourcen. 25 Kapitel 2: Grundlagen des Federated Identity Managements <AttributeStatement> Enthält die Attribut-/Werte-Paare (Eigenschaften), welche einem Subjekt zugeordnet wurden. Das folgende Schema Fragment definiert das <saml:Assertion>-Element: <element name="Assertion" type="saml:AssertionType"/> <complexType name="AssertionType"> <sequence> <element ref="saml:Conditions" minOccurs="0"/> <element ref="saml:Advice" minOccurs="0"/> <choice maxOccurs="unbounded"> <element ref="saml:Statement"/> <element ref="saml:SubjectStatement"/> <element ref="saml:AuthenticationStatement"/> <element ref="saml:AuthorizationDecisionStatement"/> <element ref="saml:AttributeStatement"/> </choice> < element ref ="ds:Signature" minOccurs ="0"/> </sequence> <attribute name="MajorVersion" type="integer" use="required"/> <attribute name="MinorVersion" type="integer" use="required"/> <attribute name="AssertionID" type="ID" use="required"/> <attribute name="Issuer" type="string" use="required"/> <attribute name="IssueInstant" type="dateTime" use="required"/> </complexType> Element <saml:Conditions> Das Element <saml:Conditions> kann die folgenden optionalen Elemente und Attribute enthalten: NotBefore [optional] Spezifiziert den frühesten Zeitpunkt, zu dem die Assertion gültig ist. Das Zeitformat ist analog zum Attribut IssueInstant definiert. NotOnOrAfter [optional] Spezifiziert den Zeitpunkt, ab dem die Assertion ungültig ist. Das Zeitformat ist analog zum Attribut IssueInstant definiert. <Condition> [beliebige Anzahl] Dieses Element kann verwendet werden, um mit Hilfe eines Extension-Schemas neue Bedingungen zu definieren. <AudienceRestrictionCondition> [beliebige Anzahl] Spezifiziert, an welche Teilnehmer eine Assertion adressiert werden kann. <DoNotCacheCondition> [beliebige Anzahl] Dieses Element legt fest, dass eine Assertion sofort verwendet werden muss, d.h., sie darf nicht für einen zukünftigen Zeitpunkt aufbewahrt werden. Wird das <saml:Conditions> Element verwendet, so sind einige Regeln zu beachten: • Werden innerhalb des <saml:Conditions>-Elements Subelemente verwendet, so ist die SAML-Assertion gültig. 26 keine Attribute oder Kapitel 2: Grundlagen des Federated Identity Managements • Ist ein Attribut oder Subelement ungültig, so ist die gesamte SAML-Assertion ungültig. • Kann die Gültigkeit für eines der Attribute bzw. Subelemente nicht evaluiert werden, so ist die Gültigkeit unbestimmt, d.h., die Gültigkeit der Assertion kann nicht eindeutig bestimmt werden. • Sind alle Attribute und Subelemente gültig, so ist die gesamte SAML-Assertion gültig. Das folgende Schema-Fragment definiert das <saml:Conditions>-Element: <element name="Conditions" type="saml:ConditionsType"/> <complexType name="ConditionsType"> <choice minOccurs="0" maxOccurs="unbounded"> <element ref="saml:AudienceRestrictionCondition"/> <element ref=”saml:DoNotCacheCondition”> <element ref="saml:Condition"/> </choice> <attribute name="NotBefore" type="dateTime" use="optional"/> <attribute name="NotOnOrAfter" type="dateTime" use="optional"/> </complexType> Element <saml:SubjectStatement> Die Elemente <saml:Conditions> sowie <saml:Advice> sind optional. Sie enthalten Informationen über Annahmen sowie Hinweise für die Bearbeitung dieser Nachricht. Daran schließen sich eine oder mehrere Aussageelemente (Statements) an. Durch die Verwendung des <saml:SubjectStatement>-Elements können Subjekte (z.B. ein Benutzer) beschrieben werden. Dieses Element enthält ein <saml:Subject>-Element, welches die tatsächliche Identität des Subjekts sowie Informationen für die Durchführung der Authentifizierung enthält. Dabei kann die Identität in Form von Emailadressen, X509v3Zertifikaten oder aber Namen, die sich an die Windows-Domänen-Namenskonvention halten, vorkommen. Das <saml:Subject>-Element enthält entweder eines oder beide der folgenden Subelemente: <NameIdentifier> Identifizierung eines Subjekts durch seinen Namen und seine Sicherheitsdomäne. <SubjectConfirmation> Enthält Informationen, damit ein Subjekt authentifiziert werden kann. Das folgende Schema-Fragment definiert das <saml:Subject>-Element: <element name="Subject" type="saml:SubjectType"/> <complexType name="SubjectType"> <choice> <sequence> <element ref="saml:NameIdentifier"/> <element ref="saml:SubjectConfirmation" minOccurs="0"/> </sequence> <element ref="saml:SubjectConfirmation"/> </choice> </complexType> 27 Kapitel 2: Grundlagen des Federated Identity Managements Das Element <saml:NameIdentifier> hat folgende Attribute: NameQualifier [optional] Angabe einer Sicherheitsdomäne, welche den Namen des Subjekts bestätigt. Dieses Attribut ist sinnvoll, wenn mehrere verschiedene Autoritäten nebeneinander existieren. Subjektnamen können dann eindeutig einer bestimmten Autorität zugeordnet werden. Dieses Konzept entspricht im Wesentlichen den Konzepten der XML-Namespaces. Format [optional] Enthält eine URI-Referenz, welche das <saml:NameIdentifier>-Element vorgibt. Format der Informationen vom Das Schema vom Element <NameIdentifier> sieht folgendermaßen aus: <element name="NameIdentifier" type="saml:NameIdentifierType"/> <complexType name="NameIdentifierType"> <simpleContent> <extension base="string"> <attribute name="NameQualifier" type="string" use="optional"/> <attribute name="Format" type="anyURI" use="optional"/> </extension> </simpleContent> </complexType> Das Element <saml:SubjectConfirmation> innerhalb des Elements <saml:Subject> spezifiziert die Beziehung zwischen dem Subjekt und dem Aussteller (Autor) der SAMLAssertion. Das Element unterteilt sich in folgende Subelemente: <ConfirmationMethod> [eins oder mehr] Speichert eine URI-Referenz, die das Protokoll bezeichnet, welches zur Authentifizierung des Subjekts benutzt werden soll. Dieses Element ist nicht optional, d.h., es muss mindestens einmal innerhalb des Elements <saml:SubjectConfirmation> vorkommen. <SubjectConfirmationData> [optional] Dieses optionale Element speichert zusätzliche Authentifizierungsinformationen, die von einem spezifischen Authentifizierungsprotokoll verwendet werden können. <ds:KeyInfo> [optional] Enthält den Zugang für den kryptografischen Schlüssel des Subjekts. Das folgende Schema-Fragment definiert das <saml:SubjectConfirmation>-Element: <element name="SubjectConfirmation" type="saml:SubjectConfirmationType"/> <complexType name="SubjectConfirmationType"> <sequence> <element ref="saml:ConfirmationMethod" maxOccurs="unbounded"/> <element ref="saml:SubjectConfirmationData" minOccurs="0"/> <element ref="ds:KeyInfo" minOccurs="0"/> </sequence> </complexType> <element name="SubjectConfirmationData" type="anyType"/> <element name="ConfirmationMethod" type="anyURI"/> 28 Kapitel 2: Grundlagen des Federated Identity Managements Element <saml:AuthenticationStatement> Das <saml:AuthenticationStatement>-Element beinhaltet Informationen darüber, ob das Subjekt bereits von einer Stelle authentifiziert wurde. Dieses Element speichert Daten, die angeben, wo und wann diese Authentifizierung mit welchem Verfahren durchgeführt wurde. Die Basis für das Element stellt der SubjectStatementAbstractType. Folgende Attribute und Elemente kommen hinzu: AuthenticationMethod [verpflichtend] Eine URI-Referenz, welche den Authentifizierungsmechanismus spezifiziert, der zur Authentifizierung des Subjekts verwendet wurde. AuthenticationInstant [verpflichtend] Der Zeitpunkt, zu dem das Subjekt authentifiziert wurde (Format UTC). <SubjectLocality> [optional] Die DNS-Domäne und die IP-Adresse der Autorität, bei der das Subjekt authentifiziert wurde. <AuthorityBinding> [beliebige Anzahl] Referenz auf eine Instanz, bei der ggf. weitere Informationen bzgl. des Subjekts abfragbar sind. Das folgende Schema definiert das <saml:AuthenticationStatement>-Element: <element name="AuthenticationStatement" type="saml:AuthenticationStatementType"/> <complexType name="AuthenticationStatementType"> <complexContent> <extension base="saml:SubjectStatementAbstractType"> <sequence> <element ref="saml:SubjectLocality" minOccurs="0"/> <element ref="saml:AuthorityBinding"minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="AuthenticationMethod" type="anyURI"use=”required”/> <attribute name="AuthenticationInstant" type="dateTime"use=”required”/> </extension> </complexContent> </complexType> Element <saml:AuthorizationDecisionStatement> In diesem Element befinden sich Informationen über Autorisierungsentscheidungen bzgl. des Zugriffs eines Subjekts auf bestimmte Ressourcen. Dabei beschreibt dieses Element die Ressource, auf die zugegriffen werden soll, die Aktion, die darauf ausgeführt wird und letztendlich die Entscheidung, ob diese Aktion ausgeführt werden darf oder nicht (z.B. ein schreibender Zugriff). Die Ressource wird dabei durch eine URI-Referenz identifiziert. Der Typ SubjectStatementAbstractType wird um folgende Attribute und Elemente erweitert: Ressource [verpflichtend] Eine URI-Referenz, welche die Ressource identifiziert, auf die zugegriffen werden soll. 29 Kapitel 2: Grundlagen des Federated Identity Managements Decision [verpflichtend] Enthält die Entscheidung der SAML-Autorität. Mögliche Werte sind: Permit, Deny, Indeterminate. <Action> [eins oder mehr] Art der Aktionen, die auf der Ressource ausgeführt werden dürfen. <Evidence> [optional] Eine Menge von SAML-Assertions, welche von einer SAML-Autorität herangezogen wurden, um die Authorization-Assertion zu erstellen. Das folgende Schema definiert das <saml:AuthorizationDecisionStatement>Element: <element name="AuthorizationDecisionStatement" type="saml:AuthorizationDecisionStatementType"/> <complexType name="AuthorizationDecisionStatementType"> <complexContent> <extension base="saml:SubjectStatementAbstractType"> <sequence> <element ref="saml:Action" maxOccurs="unbounded"/> <element ref="saml:Evidence" minOccurs="0"/> </sequence> <attribute name="Resource" type="anyURI" use="required"/> <attribute name="Decision" type="saml:DecisionType" use="required"/> </extension> </complexContent> </complexType> Element <saml:AttributeStatement> Dieses Element enthält die Eigenschaften bzw. Attribute, welche einem Subjekt zugeordnet wurden. Die SAML-Autorität beglaubigt mit der Generierung eines Attribute-Statements die Eigenschaften eines Subjekts. Der SubjectStatementAbstractType wird um folgendes Element erweitert: <Attribute> [verpflichtend] Spezifiziert ein Attribut für ein Subjekt. Das Element muss mindestens einmal in einem <saml:AttributeStatement> vorkommen. Das folgende Schema-Fragment definiert das <saml:AttributeStatement>-Element: <element name="AttributeStatement" type="saml:AttributeStatementType"/> <complexType name="AttributeStatementType"> <complexContent> <extension base="saml:SubjectStatementAbstractType"> <sequence> <element ref="saml:Attribute" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> Das Element <saml:Attribute> enthält wiederum mindestens ein Unterelement <saml:AttributeValue>. Dieses Element speichert den Wert eines Attributs. 30 Kapitel 2: Grundlagen des Federated Identity Managements 2.4.3.3 SAML-Protokoll Das SAML-Request- bzw. Response-Protokoll definiert ein standardisiertes Nachrichtenformat, um Assertions von einer SAML-Autorität abfragen zu können. Die Anfrage wird als SAML-Request- und die Antwort als SAML-Response-Nachricht geschickt. Zur Übertragung dieser Nachrichten können Transportprotokolle verwendet werden. Ein solches Binding ist z.B. das SOAP über HTTP-Binding. Abbildung 10 zeigt den prinzipiellen Ablauf einer SAML-Anfrage und einer darauf folgenden SAML-Antwort. Identity Provider (Trusted SAML Authority) SAML-Request SAML-Response SAML Assertion SAML Query Service Provider (SAML Consumer) Abbildung 10: Austausch von SAML-Request- & Response-Nachrichten Das SAML-Request-Protokoll definiert folgende Anfragetypen [SAMLProt]: • • • • • • SubjectQuery AuthenticationQuery AttributeQuery AuthorizationDecisionQuery AssertionIDReference AssertionArtifact Der Aufbau einer SAML-Response-Nachricht bleibt stets gleich, unabhängig von der Art der Anfrage. Im Folgenden wird auf die Art und den Aufbau der SAML-Request-Nachrichten eingegangen. RequestAbstractType Dieser Complex-Type definiert Attribute und Elemente für den allgemeinen Aufbau einer SAML-Request-Nachricht. 31 Kapitel 2: Grundlagen des Federated Identity Managements Folgende Attribute und Elemente müssen bzw. können in einem SAML-Request vorhanden sein: RequestID [verpflichtend] Eine eindeutige ID für jede Anfrage (xsd:ID). MajorVersion [verpflichtend] SAML-Versionsnummer. MinorVersion [verpflichtend] SAML-Versionsnummer. IssueInstant [verpflichtend] Zeitpunkt, zu dem der SAML-Request generiert wurde (Format UTC). <RespondWith> [beliebige Anzahl] Art der Response-Nachricht (z.B. Authentication-Assertion), welche der Empfänger vom Sender erwartet. Beinhaltet ein SAML-Request kein <RespondWith> Element, so kann die SAML-Autorität mit einem Statement eines beliebigen Typs (z.B. Attribute-Statement) antworten. <ds:Signature> [optional] XML Signature, um die Anfrage zu authentifizieren. Element <samlp:Request> Dieses Element spezifiziert das Root-Tag eines SAML-Requests. Im Folgenden die Zusammensetzung eines <samlp:Request>-Elements: <SubjectQuery> [optional] Eine Erweiterung, die es mittels eines selbstdefinierten Schemas erlaubt, neue Anfragetypen zu definieren. <AuthenticationQuery> [optional] Anfrage nach einer Authentication-Assertion. <AttributeQuery> [optional] Anfrage nach einer Attribute-Assertion. <AuthorizationDecisionQuery> [optional] Anfrage nach einer Authorization-Assertion. <AssertionIDReference> [eins oder mehr] Anfrage nach einer Assertion mittels einer Referenz auf den Wert des Attributs AssertionID. <AssertionArtifact>[eins oder mehr] Anfrage nach einer Assertion mit Hilfe eines Artefakts. Dieses Artefakt ist ein eindeutiger Zeiger auf eine Assertion, welche von einer SAML-Autorität generiert wurde. 32 Kapitel 2: Grundlagen des Federated Identity Managements Das folgende Schema Fragment definiert das <samlp:Request>-Element: <element name="Request" type="samlp:RequestType"/> <complexType name="RequestType"> <complexContent> <extension base="samlp:RequestAbstractType"> <choice> <element ref="samlp:Query"/> <element ref="samlp:SubjectQuery"/> <element ref="samlp:AuthenticationQuery"/> <element ref="samlp:AttributeQuery"/> <element ref="samlp:AuthorizationDecisionQuery"/> <element ref="saml:AssertionIDReference" maxOccurs="unbounded"/> <element ref="samlp:AssertionArtifact" maxOccurs="unbounded"/> </choice> </extension> </complexContent> </complexType> Element <samlp:Response> Das <samlp:Response>-Element ist das Wurzelelement einer SAML-Response-Nachricht. Es spezifiziert den Status eines SAML-Requests. Die Antwort kann dabei keine, eine oder mehrere Assertions enthalten. Der Aufbau einer SAML-Response-Nachricht ist stets gleich, unabhängig von dem vorangegangenen SAML-Request. Die Basis dieses Elements bildet der ResponseAbstractType. Die Attribute bzw. Elemente entsprechen im Wesentlichen denen des RequestAbstractTypes mit der Ausnahme, dass das Attribut RequestID durch das entsprechende Attribut ResponseID ersetzt wurde. Zudem wurde das Element <samlp:RespondWith> durch <samlp:Recipient> ausgetauscht. Dieses optionale Element speichert den beabsichtigten Empfänger der Nachricht in Form einer URI. ResponseAbstractType wird darüber hinaus durch folgende Elemente erweitert: <Status> [verpflichtend] Enthält Statusinformationen bzgl. eines zugehörigen SAML-Requests. <Assertion> [beliebige Anzahl] Enthält eine SAML-Assertion eines beliebigen Typs (z.B. Authentication-Assertion). <element name="Response" type="samlp:ResponseType"/> <complexType name="ResponseType"> <complexContent> <extension base="samlp:ResponseAbstractType"> <sequence> <element ref="samlp:Status"/> <element ref="saml:Assertion" minOccurs="0" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> Das Element <samlp:Status> ist in folgende Subelemente unterteilt: <StatusCode> [verpflichtend] Enthält den Code, welcher den Status einer korrespondierenden SAML-Anfrage repräsentiert. 33 Kapitel 2: Grundlagen des Federated Identity Managements <StatusMessage> [optional] Nachricht, die an einen Operator zurückgegeben werden kann (z.B. Fehlermeldung). <StatusDetail> [optional] Speichert zusätzliche Informationen, um bestimmte Fehlermeldungen genauer zu erläutern. <element name="Status" type="samlp:StatusType"/> <complexType name="StatusType"> <sequence> <element ref="samlp:StatusCode"/> <element ref="samlp:StatusMessage" minOccurs="0"/> <element ref="samlp:StatusDetail" minOccurs="0"/> </sequence> </complexType> Das Element <samlp:StatusCode> spezifiziert eine beliebige, möglicherweise verschachtelte Anzahl von Codes, welche den Status eines zugehörigen SAML-Requests angeben. Es enthält die folgenden Attribute bzw. Elemente: Value [verpflichtend] Der Wert eines Status-Codes. Der Typ dieses Attributs ist QName. <StatusCode> [optional] Ein untergeordneter (verschachtelter) Status-Code, um die Fehlermeldung genauer zu spezifizieren. In der SAML Spezifikation 1.1 wurden folgende Standardwerte für <samlp:StatusCode>-Element bzw. für das zugehörige Attribut Value definiert: das Success Die Anfrage war erfolgreich, d.h., die angefragte SAML-Assertion konnte erfolgreich übermittelt werden. VersionMismatch Die SAML-Autorität konnte die Anfrage nicht bearbeiten, da die SAML-Version der Anfragenachricht nicht korrekt war. Requester Aufgrund eines Fehlers auf Seite des Anfragenden (SP) konnte die Anfrage nicht verarbeitet werden. Responder Aufgrund eines Fehlers auf Seite des Antwortenden (IdP) konnte die Anfrage nicht verarbeitet werden. RequestVersionTooHigh Der Aussteller einer SAML-Nachricht kann auf die Anfrage nicht antworten, da die Protokoll-Version des SAML-Requests zu hoch ist, d.h., der Antwortende unterstützt eine niedrigere Version. RequestVersionTooLow Der Aussteller einer SAML-Nachricht kann auf die Anfrage nicht antworten, da die Protokoll-Version des SAML-Requests zu niedrig ist. 34 Kapitel 2: Grundlagen des Federated Identity Managements RequestVersionDeprecated Der Aussteller kann keine SAML-Requests mit dieser Protokoll Version bearbeiten. TooManyResponses Die Antwort würde mehr Elemente enthalten als die SAML-Autorität zurückgeben kann. RequestDenied Der Antwortende konnte zwar die Anfrage bearbeiten, verweigert dies jedoch aus bestimmten Gründen. Dies geschieht oftmals infolge von Sicherheitsbedenken. RessourceNotRecognized Die SAML-Autorität unterstützt entweder keine Anfragen bzgl. Ressourcen oder die angegebene Ressource ist ungültig bzw. kann nicht gefunden werden Neben diesen vordefinierten Standard-Werten ist es möglich, weitere eigene Status-Codes in anderen Namensräumen zu entwerfen. Es ist jedoch nicht möglich, neue Codes innerhalb des SAML-Assertion- bzw. Protokoll-Namensraums zu definieren. 2.4.3.4 SAML-Bindings Die SAML-Bindings [SAMLBind] legen Regeln fest, die angeben, wie SAML-Request- bzw. Response- Nachrichten auf standardisierte Transport- und Kommunikationsprotokolle abgebildet werden. Aktuell definiert die SAML-Spezifikation 1.1 nur ein „Binding“, das sog. SAML SOAP Binding. Dieses beschreibt, wie SAML-Request- bzw. Response-Nachrichten in eine SOAP-Nachricht verpackt bzw. eingefügt werden können. Obwohl eine SOAPNachricht unabhängig vom darunter liegenden Transportprotokoll ist, muss eine SAMLAutorität als Standard das SOAP über HTTP Binding definieren. Eine genaue Definition dieses Bindings kann unter [SOAPAdj] gefunden werden. Ein Beispiel für eine SAML-Anfrage mittels SOAP über HTTP: POST /SamlService HTTP/1.1 Host: www.example.com Content-Type: text/xml Content-Length: nnn SOAPAction: http://www.oasis-open.org/committees/security <SOAP-ENV:Envelope xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”> <SOAP-ENV:Body> <samlp:Request xmlns:samlp:=”…” xmlns:saml=”…” xmlns:ds=”…”> <ds:Signature> … </ds:Signature> <samlp:AuthenticationQuery> … </samlp:AuthenticationQuery> </samlp:Request> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 2.4.3.5 SAML-Profiles Die SAML-Profiles [SAMLBind] legen fest, wie SAML-Assertions in ein MessageFramework oder ein Protokoll eingebunden und wieder extrahiert werden. Das OASIS Security Services Technical Committee definiert in SAML 1.1 zwei WebBrowser-Profile, um Single Sign-On (SSO) möglich zu machen: 35 Kapitel 2: Grundlagen des Federated Identity Managements • • Browser/Artifact-Profile Browser/POST-Profile Neben diesen beiden, speziell für den Web-Browser-Einsatz entwickelten Profilen wurden außerhalb des Security Services Technical Committees weitere Profile veröffentlicht: • Das OASIS Web-Services Technical Commitee entwickelte innerhalb der WS-Security Spezifikation das so genannte SAML Token Profile. Dieses beschreibt, wie SAMLAssertions verwendet werden können, um eine Web-Service Nachricht abzusichern. • Das Liberty Alliance Projekt definiert mehrere verschiedene Profile, welche den SAML Standard erweitern. Browser/Artifact-Profile Das SAML Single Sign-On Browser/Artifact-Profile ist ein Authentifizierungsprotokoll, an dem drei Parteien beteiligt sind (vgl. Abb.11). Bei Einsatz dieses Profils wird ein SAMLArtefakt als Teil eines URL Query Strings zwischen den beteiligten Parteien übertragen. Das Artefakt ist eine eindeutige Referenz bzw. Pointer auf eine SAML-Assertion. Technisch betrachtet ist ein SAML-Artefakt eine 8-42 Byte große Hexadezimalzahl. Die folgende Grafik zeigt einen Single Sign-On Prozess, beruhend auf dem Browser/ArtifactProfile: Web Browser Source Site Destination Site (1) (2) (3) (4) (5) (6) Abbildung 11: Single Sign-On mit dem Browser/Artifact Profile (1) Zugriff auf Inter-Site Transfer Service: Ein Nutzer/Browser versucht per Link, auf eine Ressource der Destination Site zuzugreifen. Da der Nutzer/Browser der Zielseite unbekannt ist und die gewünschte Ressource geschützt ist, kann dieser nicht direkt auf die Ressource zugreifen. Stattdessen ruft der Nutzer/Browser mittels eines Hyperlinks den sog. Inter-Site Transfer Service (ISX) URL auf. Dieser URL setzt sich aus folgenden Bestandteilen zusammen: http(s)://<inter-site transfer host name>?TARGET=<target> 36 Kapitel 2: Grundlagen des Federated Identity Managements Der erste Teil dieser Adresse bezeichnet den Zugangspunkt für den Inter-Site Transfer Service der Source Site. Nach Aufruf dieses Dienstes wird von einer SAML-Autorität eine SAML-Assertion (falls noch nicht vorhanden) und ein zugehöriges Artefakt erstellt. Der Wert des angehängten Parameters TARGET entspricht der Adresse der Zielressource, auf welche der Benutzer zugreifen will. (2)+(3) Umleitung auf die Destination Site: Der Inter-Site Transfer Service leitet den Nutzer/Browser auf den Artifact Receiver Service der Zielseite um. Dabei wird an diesen Redirect-URL als Parameter das SAML-Artefakt des Nutzers angehängt. Das Format dieses URLs sieht im Allgemeinen folgendermaßen aus: http(s)://<artifact_receiver_host_name>?TARGET=<target>&SAMLart=<Ar tifact> (4)+(5) Übermittlung einer SAML-Assertion: Die Zielseite schickt den erhaltenen Artefakt innerhalb eines SAML-Requests an die Source Site, um die entsprechende SAMLAssertion zu erhalten. Existiert eine solche SAML-Assertion, so wird diese von der Source-Site in Form einer SAML-Response- Nachricht an die Destination Site geschickt. (6) Zugriff auf die gewünschte Ressource: An den Browser des Nutzers wird eine HTTP-Antwortnachricht geschickt, die angibt, ob der Benutzer auf die gewünschte Ressource zugreifen darf oder nicht. Wichtig ist, dass ein SAML-Artefakt nur für eine Anfrage verwendet werden kann (one-timeuse), um Sicherheitsprobleme wie z.B. Replay-Attacken zu vermeiden. Browser/POST-Profile Dieses Profil ermöglicht es, Authentifizierungs- bzw. Autorisierungsdaten direkt, ohne die Verwendung eines SAML-Artefakts, zu übertragen. SAML-Assertions werden dabei durch ein HTML-Formular zuerst in den Browser des Nutzers geladen, um danach als Teil eines HTTP Post Payloads an die Destination Site übertragen zu werden. Die folgende Grafik zeigt einen Single Sign-On Prozess, beruhend auf dem Browser/POSTProfile: Web Browser Source Site Destination Site (1) (2) (3) (4) Abbildung 12: Single Sign-On mit dem Browser/POST Profile 37 Kapitel 2: Grundlagen des Federated Identity Managements (1) (2) (3) (4) Zugriff auf den Inter-Site Transfer Service: analog zu Browser/Artifact-Profile. Übermittlung der SAML-Response: Die Source Site übergibt in Form eines HTML-Formulars eine SAML-Response-Nachricht an den Browser des Nutzers. Innerhalb der Response-Nachricht befindet sich eine SAML-Assertion. Der Browser übermittelt das Formular bzw. Formulardaten an die Destination Site. Zugriff auf die gewünschte Ressource: Analog zu Browser/Artifact-Profile. Wird das Browser/Post-Profile verwendet, so muss jede SAML-Response digital signiert werden. Eine Signierung der SAML-Assertions ist hingegen optional. Um die Übertragung von unverschlüsselten Nachrichten zu vermeiden, sollte sowohl bei Einsatz des Browser/Artifact-Profiles als auch bei Einsatz des Browser/POST-Profiles der jeweilige Inter-Site Transfer Service URL durch SSL 3.0 oder TLS 1.0 geschützt werden. 2.4.3.6 Sicherheit von SAML Um die Vertraulichkeit von SAML-Nachrichten auch außerhalb der Transportebene (SSL/TLS) gewährleisten zu können, besteht die Möglichkeit, diese mit XML Encryption [XMLEnc, XMLDec] zu verschlüsseln. XML Encryption liefert eine Syntax, um XMLDokumente oder Dokumentenblöcke selektiv zu verschlüsseln und zu dekodieren. XML Signature [XMLSig] kann verwendet werden, um die Datenintegrität und Authentizität bei SAML Inhalten sicherzustellen. XML Signature ist eine Norm zur digitalen Signatur von XML-Dokumenten. Dieses Verfahren garantiert, dass eine XML Nachricht genau so beim Empfänger eintrifft, wie sie der Absender abgeschickt hat. Außerdem lässt sich die Urheberschaft einer Information auf diese Weise verbindlich validieren, so dass sich diese im Nachhinein nicht abstreiten lässt (engl. Non-Repudiation). 2.4.3.7 Ausblick auf SAML 2.0 Im März dieses Jahres wurde SAML 2.0 [SAML20], der Nachfolger von SAML 1.1, vom OASIS Konsortium offiziell zum aktuellen OASIS-Standard erklärt. SAML 2.0 wurde in Zusammenarbeit mit dem OASIS Konsortium, der Liberty Alliance und der Shibboleth Gruppe entworfen mit dem Ziel, die verschiedenen Föderationsstandards zu einem einzigen zu vereinigen. SAML 2.0 ist eine umfangreiche Überarbeitung der Vorgängerversion SAML 1.1. Im Wesentlichen wurden folgende Änderungen vorgenommen bzw. Funktionalitäten hinzugefügt [SAMLOv20]: Konvergenz Mit SAML 2.0 werden die Konzepte von SAML 1.1 mit den Konzepten der Hochschulinitiative Shibboleth und des Liberty Alliance Identity Federation Frameworks (vgl. Kapitel 2.4.4) verbunden. Nach Meinung vieler Experten ist SAML 2.0 ein maßgeblicher Schritt in Richtung einer vollständigen Konvergenz der verschiedenen Federated Identity Standards. 38 Kapitel 2: Grundlagen des Federated Identity Managements Federated Identity Management In SAML 1.0 und SAML 1.1 ist zwar Single Sign-On durch das Übertragen eines Identifiers (innerhalb eines Authentication-Statements) möglich, jedoch wird nicht spezifiziert, wie sich zwei unterschiedliche Seiten eines Circle of Trust auf die zu verwendenden Nutzer-Identifier einigen können. Bisher mussten sich die Teilnehmer einer Single Sign-On Umgebung außerhalb von SAML 1.0 bzw. 1.1 über die Identifier der berechtigten Nutzer abstimmen. SAML 2.0 löst dieses Problem, indem festgelegt wird, wie zwei Webseiten sich online, unter Teilnahme des Nutzers, auf einen (oder mehrere) Identifier für diesen Nutzer einigen können. Federation Profiles Sowohl das Browser/Artifact- als auch das Browser/POST-Profil wurden erweitert, so dass mehr Anwendungsfälle abgedeckt werden können als dies in Version 1.1 der Fall war. Das neue Webbrowser SSO-Profile integriert die Konzepte dieser beiden Profile und ein HTTPRedirect Binding. Dies ermöglicht eine zusätzliche Flexibilität zwischen Identity- und Service-Provider, da diejenige Partei, welche den SSO-Prozess initiert, individuell entscheiden kann, welches dieser Profile zum Austausch von SAML-Assertions verwendet werden soll. Neben den Browser-Profilen wurde zusätzlich ein Profil (Enhanced Client or Proxy Profile) für die Unterstützung von mobilen Endgeräten hinzugefügt. Dieses Profil gestattet den Einsatz der Federated Identity Technologie im Mobilfunkbereich, in dem eine Interaktion mit Web Access Protocol (WAP) Gateways ermöglicht wird. Datenschutz Die Vorgängerversionen beschäftigen sich mit dem Aspekt Datenschutz und Anonymität nur rudimentär. SAML 2.0 bietet nun eine Anzahl von Möglichkeiten, um sicherheitskritische Anwendungen zu unterstützen. Zu erwähnen ist hier vor allem die Möglichkeit, Pseudonyme für einen Nutzer zu definieren. Diese Pseudonyme erlauben es Service Providern, Benutzer zu identifizieren, ohne Kenntnis über deren tatsächliche Identität zu haben. SAML 2.0 integriert zudem einen Mechanismus, mit dem Provider die Möglichkeit haben, sog. „Privacy Policies/Einstellungen“, welche ein Endnutzer bei einer Partei definiert hat, auszutauschen. Mit diesen „Privacy Policies“ kann ein Nutzer individuell festlegen, welche Aktionen die beteiligten Parteien einer Föderation durchführen dürfen und welche nicht. Erhält z.B ein Provider die Erlaubnis eines Benutzers, dass dessen E-Mail Adresse innerhalb der Föderation ausgetauscht werden darf, so kann der Provider diese Tatsache den anderen Parteien des Circles of Trust mittels einer SAML-Assertion mitteilen. Session Management SAML 2.0 unterstützt Single Logout [SAMLProt2]. Beispiel: Nachdem sich ein Nutzer bei einer SAML-Autorität erfolgreich authentifiziert hat, baut dieser anschließend, mittels des Single Sign-On-Mechanismus, Sessions zu mehreren verschiedenen Webseiten auf. Beendet der Benutzer nun eine dieser Sitzungen durch Ausloggen, so werden automatisch alle anderen aktiven Sessions des Nutzers auch beendet. 39 Kapitel 2: Grundlagen des Federated Identity Managements Die aktiven Sessions eines Benutzers werden dabei von dessen Identity Provider verwaltet. Dieses Verfahren wird Single Logout genannt. SAML 2.0 ist durch die Zusammenführung von SAML 1.1 und Liberty ID-FF 1.2 (vgl. Kapitel 2.4.4.1) ein maßgeblicher Schritt in Richtung eines einheitlichen Standards im Bereich Federated Identity Management. Ob dieser Standard jedoch die hohen Erwartungen vieler Experten und Entwickler erfüllen kann, bleibt abzuwarten, da bisher keine der namhaften Sicherheitsfirmen wie RSA Security, Computer Associates etc. Produkte anbieten, die diese neue Version unterstützen. SAML 2.0 spielt deshalb in der Praxis momentan noch keine Rolle. Aus diesem Grund bezieht sich diese Diplomarbeit ausschließlich auf den Standard SAML 1.0 bzw. 1.1. 2.4.4 Liberty Alliance Projekt Das Liberty Alliance Project [LibAll] ist ein weltweiter Zusammenschluss von mehr als 180 verschiedenen Unternehmen und Organisationen. Das Projekt wurde 2001 von Sun Microsystems als Konkurrenz zu Microsoft .NET Passport ins Leben gerufen. Das Projekt hat eine breite Unterstützung erhalten; namhafte Firmen wie IBM, Intel, American Express, Nokia, Oracle und VeriSign arbeiten daran mit. Das Konsortium hat die Aufgabe, ein offenes Framework für den Aufbau von heterogenen Federated Identity Umgebungen (basierend auf Web-Services) zu entwickeln. Neben Identity Federation, Single Sign-On, Single Logout und Account Linking liegt ein besonderer Schwerpunkt auf der Einhaltung der Privatsphäre eines Benutzers. Um die gesetzten Ziele zu erreichen, baut das Liberty Framework auf anderen existierenden Standards wie z.B. SAML auf. In den Spezifikationen der Liberty Alliance ist unter anderem festgelegt, dass Anwender ihre Nutzerkonten (engl. Accounts), die sie auf verschiedenen Webseiten oder in verschiedenen Unternehmen haben, miteinander verbinden können (Account-Linking), sofern die Dienstanbieter eine Zusammenarbeit erlauben. Die Authentifizierung wird zudem für den Fall, dass sich ein User abmeldet, bei allen beteiligten Anbietern zurückgezogen (Single Logout). Die zusammengeschlossenen Firmen und Einrichtungen können sich intern darüber verständigen, welcher Authentifizierungsmechanismus nötig ist, um einen Nutzer korrekt anzumelden. Bei diesem Vorgang sollen jedoch keine Kundendaten ausgetauscht werden, d.h., innerhalb eines dezentralen Circle of Trust sollen ausschließlich die Informationen weitergegeben werden, die angeben, ob ein User bei einer vertrauenswürdigen Autorität bereits erfolgreich authentifiziert wurde oder nicht. Die folgenden Begriffe sind im Kontext des Liberty Alliance Projektes üblich und sollen hier erklärt werden: • Account Linking: Der Benutzer kann seine Service Provider Accounts selbstständig mit einem oder mehreren Identity Provider Accounts verbinden. Durch diese erstellte Verknüpfung können Authentifizierungsinformationen zwischen den verschiedenen Providern übergangslos ausgetauscht werden. 40 Kapitel 2: Grundlagen des Federated Identity Managements • Circle of Trust bzw. Authentication Domain: Eine Gruppe von Service Providern (mit mindestens einem Identity Provider), welche sich zusammengeschlossen haben, um mit Hilfe der Liberty Technologie Authentifizierungsdaten von Nutzern untereinander auszutauschen. Nach dem Aufbau eines solchen Circle of Trust bzw. einer Authentication Domain kann zwischen den beteiligten Providern das Single Sign-OnVerfahren genutzt werden. • Federation Termination: Der Benutzer kann bestehende Föderationen seiner Accounts selbstständig beenden. • Principal: Ein aktives Subjekt (z.B. ein Benutzer oder eine System-Komponente) mit einer eindeutigen Identität. • Identity Provider: Ein Identity Provider speichert die Identitäten von Principals und führt deren Authentifizierung durch. • Service Provider: Ein Service Provider stellt Principals Dienste zur Verfügung. • Name Identifier: Ein beliebiges Pseudonym für einen Nutzer. Dieses Pseudonym erlaubt es den Providern, einen Benutzer ohne Kenntnis der tatsächlichen Identität zu identifizieren. • Single Logout: Beendet ein Principal eine seiner aktiven Sitzungen bei einem Identity oder Service Provider durch Ausloggen, so werden automatisch alle seine bestehenden Sitzungen innerhalb der betroffenen Authentifizierungsdomäne beendet. Das Dokument „Introduction to the Liberty Alliance Identity Architecture“ [LibArch] gibt einen guten Überblick über das Wirkungsfeld der Liberty Alliance. Die Liberty Spezifikationen bestehen aus vier Komponenten. Diese werden in den folgenden Abschnitten genauer vorgestellt. 2.4.4.1 ID-FF: Identity Federation Framework Liberty ID-FF ist das zentrale Modul der Liberty Spezifikationen. Dieses Modul erlaubt die Umsetzung von Single Sign-On durch eine Verlinkung von Identitäten zwischen IdP und SP. Dieses Framework ermöglicht die Interoperabilität verschiedenster Plattformen und definiert Föderationen sowohl für PCs als auch für mobile Endgeräte (Handy, PDAs etc.). Neben den Beschreibungen für die Implementierung einer SSO-Umgebung definiert das Modul ID-FF zudem den Austausch von Metadaten. Die Liberty ID-FF 1.2 Spezifikation [LibID] umfasst folgende Protokolle: • • • • • Single Sign-On und Federation Protokoll Name Registration Protokoll Federation Termination Protokoll Single Logout Protokoll Name Identifier Mapping Protokoll Single Sign-On und Federation Protokoll Hier werden die Request/Response-Protokolle definiert, die benötigt werden, um einen Principal bei einem Service Provider zu authentifizieren. Im Gegensatz zu SAML 1.0/1.1 beruhen diese Protokolle auf Account Linking bzw. Account Federation. 41 Kapitel 2: Grundlagen des Federated Identity Managements Im Folgenden ein Überblick über die Konzepte, die durch die Anwendung des Single SignOn- und Federation-Protokolls umgesetzt werden können: • • • • • • Account Linking/Federation – Ein Principal hat die Möglichkeit, seine Identität (gespeichert bei einem Identity Provider) mit seiner Identität (gespeichert bei einem Service Provider) zu verbinden. Authentication Context – Ein Service Provider kann die Authentifizierungsart (z.B. Username/Passwort) festlegen, die benutzt werden soll, wenn sich ein Principal einloggt. Account Handle – Ein Identity Provider kann für einen Principal, während der Kommunikation mit einem Service Provider, ein temporäres Pseudonym anstatt seiner tatsächlichen Identität verwenden. Dynamic Proxying – Erhält ein IdP eine Authentifizierungsanfrage eines SPs bzgl. eines Principals, obwohl dieser Nutzer bereits von einem anderen IdP authentifiziert wurde, so kann der erste IdP die Anfrage an den zweiten IdP weiterleiten. Identity Provider Introduction – Existiert in einer Domäne mehr als ein IdP, so kann ein SP nach dem IdP suchen, der für den Principal verantwortlich ist. Message Exchange Profiles – Der Authentication-Request legt fest, wie Nachrichten zwischen IdP und SP ausgetauscht werden sollen. Dabei werden vier unterschiedliche Profile unterstützt [LibBind]: o Liberty Browser Artifact Profile (basiert auf SAML 1.1 Artefakten bzw. Assertions) o Liberty Browser POST Profile (Erweiterung des gleichnamigen SAML 1.1 Profils) o Liberty WML POST Profile (optimiert für WAP-Browser) o Liberty Enabled Client and Proxy Profile (Unterstützung von Proxy-Gateways) Name Registration Protokoll Dieses Protokoll ermöglicht es einem SP, in Verbindung mit einem IdP einen Namen für einen gemeinsamen Nutzer zu registrieren. Dabei ist es nicht erforderlich, dass der SP dem IdP detaillierte Informationen über die vorhandene lokale Identität des Benutzers mitteilt. Beim Aufbau einer Föderation generiert der IdP einen sog. Opaque Handle (Pseudonym) für den Principal. Auf der Basis dieses Name Identifiers erfolgt die Kommunikation mit dem SP (Element <IDPProvidedNameIdentifier>). Der SP kann für den gleichen Principal einen anderen Opaque Handle definieren (Element <SPProvidedNameIdentifier>). Federation Termination Protokoll Das Federation Termination Protokoll benachrichtigt sowohl die Service- als auch die Identity-Provider über das Ende einer Föderation. Dies hat zur Konsequenz, dass ein SP den Authentication-Assertions eines IdPs in Zukunft nicht mehr vertraut. Das Protokoll verwendet für diesen Zweck das Element <FederationTerminationNotification>. 42 Kapitel 2: Grundlagen des Federated Identity Managements Single Logout Protokoll Dieses Protokoll benachrichtigt sowohl die beteiligten SP als auch den zuständigen IdP, dass die aktuelle Session für einen Principal beendet werden soll. Für diese Operation wird eine <LogoutRequest> Nachricht verwendet. Name Identifier Mapping Protokoll Hier wird definiert, wie ein SP einen Name Identifier eines Principals erhalten und verstehen kann, wenn diese ID im Namensraum eines anderen SPs erstellt wurde. Dazu muss der betroffene SP eine Anfrage an den IdP stellen, der mit beiden Service Providern ein Account Linking bzgl. dieses Principals besitzt. Auf diese Weise können beide SP miteinander kommunizieren, ohne dass für den Benutzer eine Identity Federation zwischen diesen zwei Parteien besteht. Der Ablauf eines Liberty SSO-Prozesses soll anhand der folgenden Grafik deutlich gemacht werden: User/Browser Service Provider Identity Provider 1. HTTP Request() 2. Suche passenden IdP 3. HTTP Response mit AuthnRequest() 4. HTTP Request mit AuthnRequest() 6. HTTP Response mit AuthnResponse oder Artifact() 7. HTTP Request mit AuthnResponse oder Artifact() 5. Verarbeite AuthnRequest 8. HTTP Request mit Artifact() 9. HTTP Response mit Assertion() 10. Verarbeite Assertion 11. HTTP Response() Abbildung 13: Liberty Alliance SSO-Prozess Die Schritte 8 und 9 sind nur dann notwendig, wenn das Liberty Browser/Artifact-Profil verwendet wird. Diese beiden Schritte basieren vollständig auf dem SAML Browser/ArtifactProfil (SAML-Request/Response). Wie anfangs erwähnt, sind die Liberty ID-FF Protokolle im Wesentlichen eine Erweiterung der SAML-Spezifikation. Dabei ergänzt der Liberty <lib:AuthnRequest> den 43 Kapitel 2: Grundlagen des Federated Identity Managements <lib:AuthnResponse> ist abgeleitet vom samlp:RequestAbstractType; die samlp:ResponseType. Die von einem Identity Provider ausgestellten Assertions (<lib:AssertionType>) basieren auf dem saml:AssertionType. Abb. 14 zeigt eine Übersicht aller Liberty Erweiterungen bzgl. der grundlegenden SAMLDatenstruktur. Die genauen Schemata der einzelnen Liberty Elemente (wie z.B. <lib:AuthnRequest>) können unter [LibID] eingesehen werden. samlp:RequestAbstractType samlp:ResponseType lib:AuthnRequest lib:AuthnResponse lib: ProviderID ForceAuth (boolean) IsPassive (boolean) Federate (boolean) lib: ProtocolProfil lib: AuthnContext lib: RelayState lib: AuthnContextComparison lib: ProviderID lib: RelayState attribute: ID saml: AssertionType saml:AuthenticationStatementType lib:AuthenticationStatementType lib: AuthnContext lib:AssertionType attribute: InResponseTo attribute: ID attribute: ReAuthenticateOnOrAfter attribute: SessionIndex Abbildung 14: Erweiterungen des Liberty ID-FF Protokolls Ein Beispiel für einen <lib:AuthnRequest> bzw. eine <lib:AuthnResponse> befindet sich im Anhang A.2 dieser Diplomarbeit. 2.4.4.2 Erweiterung von Industriestandards Diese Komponente ist kein eigentliches Liberty Modul. Vielmehr ist es die Sammlung der für das Liberty Projekt relevanten Industriestandards, d.h., ID-FF, ID-WSF und ID-SIS basieren auf diesen Industriestandards. Es handelt sich dabei um verschiedene offene Standards. Diese werden nach Bedarf erweitert und mit den entsprechenden Standardisierungsorganisationen verabschiedet. Dazu gehören folgende drei Organisationen: 1. Organization for the Advancement of the Structured Information Standards (OASIS) [OASIS] 2. World Wide Web Consortium (W3C) [W3C] 3. Internet Engineering Task Force (IETF) [IETF] 44 Kapitel 2: Grundlagen des Federated Identity Managements Die Spezifikationen der Liberty Alliance greifen u.a. auf folgende Standards zurück: SOAP, WSDL, SAML, WS-Security, HTTP, SSL/TLS, XML Encryption und XML Signature. 2.4.4.3 ID-WSF: Identity Web-Services Framework ID-WSF [LibWSF] basiert auf dem ID-FF und ist die Grundlage, um personalisierte Dienstleistungen anbieten zu können. ID-WSF behandelt folgende Punkte [LibWSFOv]: • Austausch von individuellen Attributen (Permission Based Attribute Sharing) • Zusammentragen von Identitätselementen in einer verteilten Umgebung (Identity Service Discovery) • Interaktions-Dienste (Interaction Service) • Zusätzliche Sicherheitsprofile, die beim Datenaustausch zu berücksichtigen sind (Security Profiles) • SOAP Anbindung (Simple Object Access Protocol Binding) • Erweiterter Support für Endgeräte (Extended Client Support) • Spezifikation über Persönlichkeitsprofile (Identity Services Templates) Anfang 2005 wurde ein Entwurf für Version 2 des ID-WSF vorgelegt. Wichtigste Neuerung ist die Unterstützung des Standards SAML 2.0. 2.4.4.4 ID-SIS: Identity Services Interfaces Specifications Die vierte Komponente (ID-SIS) [LibSIS] ist für zukünftige Applikationen ausgelegt. ID-SIS basiert auf dem ID-WSF und beinhaltet Spezifikationen für Funktionen wie BenutzerAnmeldung, Adressbuch, Kalender, Location-based Services und die verschiedensten Alarmmeldungen (engl. Alerts). 2.4.5 Web-Services Security Im April 2002 veröffentlichten IBM, Microsoft und VeriSign zusammen die Spezifikation Web-Services Security (WS-Security). Diese liefert einen Mechanismus, um einen sicheren Austausch von SOAP-Nachrichten möglich zu machen. Im Sommer 2002 wurde die Spezifikation dem Konsortium OASIS übergeben. Um die Entwicklung des Standards weiter voranzutreiben, wurde das OASIS Web-Services Technical Commitee gegründet. Im März 2004 erreichte WS-Security schließlich den Status eines offiziellen OASIS Standards [SOAPSec]. Ein großes Problem von Web-Services war lange Zeit die mangelnde Sicherheit. Die Sicherheitskomponenten von HTTP ermöglichen nur sichere Punkt-zu-Punkt Verbindungen. Vor allem bei komplexen und sicherheitskritischen Anwendungen ist eine sichere Ende-zuEnde Verbindung jedoch unerlässlich. Hier kommt WS-Security ins Spiel. WS-Security setzt auf bereits bestehenden Standards und Spezifikationen auf. Deshalb muss in WS-Security keine vollständige Sicherheitslösung definiert werden. WS-Security ergänzt 45 Kapitel 2: Grundlagen des Federated Identity Managements bestehende Spezifikationen, wie z.B. XML Signature oder XML Encryption, um ein Rahmenwerk zum Einbetten dieser Mechanismen in eine SOAP-Nachricht. Die Integration dieser Mechanismen ist dabei unabhängig vom verwendeten Transportprotokoll. WS-Security definiert dabei ein SOAP Header-Element, in dem sicherheitsbezogene Daten enthalten sind. Wenn XML Signature verwendet wird, kann dieser Header die von XML Signature definierten Informationen enthalten. Diese geben an, wie die Nachricht signiert und welcher Schlüssel verwendet wurde und sie enthalten den resultierenden Signaturwert. Wenn ein Element in der Nachricht verschlüsselt ist, können die Verschlüsselungsinformationen, wie sie beispielsweise von XML Encryption bereitgestellt werden, auch im WS-SecurityHeader enthalten sein. WS-Security legt nicht das Format der Signatur oder Verschlüsselung fest. Stattdessen gibt WS-Security an, wie die von anderen Spezifikationen festgelegten Sicherheitsinformationen in eine SOAP-Nachricht eingebettet werden können. WS-Security spezifiziert in erster Linie einen XML-basierten Container für Sicherheitsmetadaten. [WSSGrund] Neben der Einbindung von XML Signature und XML Encryption bietet WS-Security die Möglichkeit, sog. Security-Tokens in den SOAP-Header zu integrieren. In WS-Security wurden im Wesentlichen zwei Tokenformate vordefiniert. Das ist zum einen das UsernameToken Element (enthält Nutzername und Passwort) und zum anderen das BinarySecurityToken Element (enthält ein X.509 Zertifikat oder ein Kerberos Ticket). Die Spezifikation erlaubt jedoch auch die Integration anderer Tokenformate, wie z.B. eine SAMLAssertion. Hierfür wurde das WS-Security Profile for XML-based Tokens [SOAPSec] spezifiziert. Durch den Einsatz dieses Profils können SAML-Assertions über SOAP ausgetauscht und durch die Anwendung der Verschlüsselung und der digitalen Signatur abgesichert werden. Neben der Basistechnologie WS-Security veröffentlichte IBM und Microsoft im Jahr 2002 ein Whitepaper mit dem Namen „Security in a Web-Services World: A Proposed Architecture and Roadmap” [WS-Road]. Dieses Dokument weist den Weg in Richtung eines umfassenden Web-Service Security Frameworks. Neben WS-Security wurden weitere Standards definiert, die auf dem grundlegenden Fundament WS-Security aufbauen sollen. Darunter sind WSPolicy, WS-Trust, WS-Privacy, WS-SecureConversation, WS-Federation und WSAuthorization. Außer WS-Security hat bisher jedoch keine dieser Spezifikationen den Status eines offiziellen Standards erreicht. 2.4.6 WS-Federation WS-Federation steht in direkter Konkurrenz mit den Protokollen der Liberty Alliance. In Tabelle 1 werden die Gemeinsamkeiten und die Unterschiede dieser beiden Protokolle veranschaulicht. 46 Kapitel 2: Grundlagen des Federated Identity Managements Das WS-Federation Modell beschreibt, wie die Blöcke der WS-Security- bzw. WS-TrustSpezifikation genutzt werden können um eine föderierte Identitätsumgebung aufzubauen. Dies beinhaltet den Aufbau von domänenübergreifenden Vertrauensbeziehungen, Single Sign-On, Single Logout und Attribut-Management. Im Gegensatz zu dem Framework der Liberty Alliance wurde die Spezifikationen von WSFederation jedoch noch nicht an eine Standardisierungsorganisation weitergeleitet, d.h., WSFederation ist momentan (Stand: Juni 2005) noch kein offizieller Standard [FedFuture]. WS-Federation besteht aus drei Spezifikationen: WS-Federation [WS-Fed], WS-Federation Passive Client [WS-FedPass] und WS-Federation Active Client [WS-FedAct]. Ähnlich den Protokollen der Liberty Alliance bietet WS-Federation die Möglichkeit, auf Basis von WebServices, eine Föderation von Identitäten zu implementieren. Dazu definiert WS-Federation einen Mechanismus für die Anfrage, den Austausch und das Ausstellen von Security Tokens. Funktionalität Gemeinsamkeiten /Überlappungen Verknüpfung von Nutzerkonten (Account Linking) Vertraulichkeit/Anonymität Liberty Alliance Verknüpfung von Nutzerkonten auf Basis von Opaque Identifiers Empfehlungen bzgl. der Optionale Unterstützung Bereiche Schutz bzw. durch Einsatz von WSAnonymität von persönlichen Policy und WS-Privacy. Daten wurden in die Spezifikation aufgenommen. Erweiterung von SAMLAssertions, um Authentifizierungs- bzw. Authorisierungstoken zwischen Providern austauschen zu können. Richtlinien bzgl. Beschäftigt sich mit Fragen Geschäftsvereinbarungen und des Aufbaus einer Sicherheitsregeln (Policies) Vertrauens-beziehung (siehe Business Guidelines und Authentication Context). Erweiterung von SAML. Sicherheitsfragen/DatenSicherheitsfragen können schutz mittels der Technologien SSL und WS-Security gelöst werden. Security Tokens Client Profile SSO Kontrollfluss (SSO Control Flow) WS-Federation Verknüpfung von Nutzerkonten unter Verwendung des Pseudonym Services Definition von Profilen sowohl für Browser als auch für Smart Clients. Baut auf verschiedenen WS-Security Profilen auf (z.B. X.509v3). Zusätzlich können auch SAML Tokens verwendet werden. Diese Fragen werden momentan nicht abgedeckt. Basiert auf WS-Trust, WS-Policy und WSMetadata. Sicherheitsfragen können mittels der Technologien SSL und WS-Security gelöst d Definition von Profilen sowohl für Browser als auch für Smart Clients. SSO-Ablauf sowohl auf Basis SSO-Ablauf vor allem der Front- als auch der Back- für den Front-Channel Channel Technologie. Mechanismus. Der Back-Channel Mechanismus wird erwähnt, jedoch nicht empfohlen. 47 Kapitel 2: Grundlagen des Federated Identity Managements Unterschiede Entwicklung Fokus Reifheitsgrad Implementierungskosten Entwickelt als offener Standard unter Teilnahme von Unternehmen, EndNutzern und Non-ProfitOrganisationen. Entwickelt von Microsoft, IBM, VeriSign, BEA und RSA Security. Fokus auf Technologie-, Geschäfts- und Policyfragen im Bereich Federated Identity Management. Fokus alleine auf der technologischen Komponente des Federated Identity Managements. Ausgereifte Spezifikationen, die über die letzten zwei Jahre von Unternehmen und Organisationen entwickelt wurden. Die Spezifi-kationen werden aktuell in zahlreichen Produkten unterstützt. Noch kein offizieller Standard. Die Spezifikationen werden aktuell nur in wenigen Produkten unterstützt. Spezifikationen können kostenlos in Produkte und Dienste implementiert werden. Implementierungs- und Nutzungskosten unbekannt. Tabelle 1: Vergleich Liberty Alliance – WS-Federation WS-Federation Active beschreibt den Aufbau einer Föderation in einer Umgebung mit aktiven Clients. Als aktive Clients bezeichnet man Clients, welche in der Lage sind, WebService Anfragen zu stellen bzw. entsprechende Web-Service Antworten zu verarbeiten. Ein Beispiel für einen aktiven Client ist eine SOAP-Applikation. WS-Federation Passive hingegen beschäftigt sich mit dem Aufbau von Föderationen bei einer Teilnahme von passiven Clients. Ein typisches Beispiel für solch einen Client ist ein HTTP Browser. Dies bedeutet, dass der Austausch von Nachrichten auf den Funktionalitäten von HTTP 1.1 (GET, POST, Redirects und Cookies) basieren muss. Da an einer Föderation meist sowohl passive als auch aktive Clients beteiligt sind, müssen beide Spezifikationen (WS-Federation Passive Client, WS-Federation Active Client) in föderierten Umgebungen implementiert werden. WS-Federation unterstützt vier unterschiedliche Security Tokens: • • • • X.509v3 Token Kerberos Token XrML Token SAML Token Diese Tokenformate können verwendet werden, um Identitätsinformationen zwischen Providern auszutauschen. Obwohl SAML Token von WS-Federation unterstützt werden, ist jedoch keine vollständige Interoperablität mit dem SAML 2.0 Standard gegeben. Dies zeigt, dass der Konkurrenzkampf der Föderationstandards untereinander noch nicht beendet ist [FedTrend]. 48 Kapitel 2: Grundlagen des Federated Identity Managements 2.5 Vergleich der Föderationsstandards In diesem Kapitel sollen die unterschiedlichen Charakteristika der verschiedenen Föderationsstandards (SAML 1.0/1.1, Liberty ID-FF 1.0/1.1, WS-Federation) veranschaulicht werden. Die folgende Tabelle zeigt die Unterschiede und Gemeinsamkeiten der Standards. Das Hauptaugenmerk liegt dabei auf den Protokollen, die für den SSO-Prozess zuständig sind. Funktionalitäten SAML 1.0/1.1 Liberty ID-FF 1.0/1.1 WSFederation 1 SSO, initiiert vom IdP (push SSO) Ja Nein Ja 2 SSO, initiiert vom SP (pull SSO) Ja Ja Ja 3 Front-Channel Security Token Austausch Ja Ja Ja 4 Back-Channel Security Token Austausch Ja Ja Nein 5 Wahl des Security Tokens Nein Nein Ja 6 SSO-Prozess/Account Linking benötigt Konten sowohl auf IdP- als auch auf SPSeite Account Linking auf Initiative des IdPs Ja Ja Nein Nein Nein Ja Account Linking auf Initiative des SPs Nein Ja Ja Erstellung eines Nutzerkontos beim SP auf Initiative des IdPs (außerhalb des SSOProzesses) Nein Nein Nein 7 8 9 Tabelle 2: Vergleich der SSO-Protokolle In der obigen Tabelle werden die Begriffe Front-Channel und Back-Channel verwendet. Ein Front-Channel bezeichnet die Verbindung, die zwischen einem Webbrowser eines Endnutzers und einem IdP bzw. SP aufgebaut wird. Über diesen Kanal können per HTTP-Redirect Parameter, wie z.B. ein SAML-Artefakt gesendet werden. Der Back-Channel bezeichnet hingegen denjenigen Kanal, der zwischen einem IdP und einem SP aufgebaut wird, um SOAP-Nachrichten auszutauschen. 2.6 Zusammenfassung Heutige Unternehmen und Organisationen werden zunehmend vor die Herausforderung gestellt, neben ihren eigenen Mitarbeitern und Kunden auch den Mitarbeitern und Kunden ihrer Partnerunternehmen den Zugriff auf bestimmte Ressourcen und Dienste zu ermöglichen. Herkömmliche Identity Management Systeme sind aus Effizienz- und Sicherheitsgründen für diese neue Entwicklung ungeeignet. Einen Lösungsansatz, um diese Probleme zu beheben, bieten die Konzepte und Technologien aus dem Bereich Federated Identity Management. 49 Kapitel 2: Grundlagen des Federated Identity Managements Dieser Ansatz erlaubt es Unternehmen, innerhalb eines sog. Circle of Trust, digitale Nutzeridentitäten mit anderen Unternehmen auf einfache, sichere und schnelle Weise auszutauschen. Dabei sollen Partnerunternehmen, welche als Service Provider fungieren, mittels dedizierter Protokolle Zugriff auf die unter anderem zur Authentifizierung und Autorisierung notwendigen Benutzerdaten erhalten. Die Daten werden dabei von so genannten Identitätsprovidern gespeichert und gepflegt. Mehrere Standards bzw. Frameworks wurden definiert, um ein Federated Identity Management zu ermöglichen. Dazu gehören der SAML Standard, die Liberty Alliance Protokolle und WS-Federation. Der momentan bedeutendste davon ist SAML. SAML wurde als ein Standard für den Austausch von Authentifizierungs-, Attributs- und Authorisierungsinformationen in Rechnernetzen entworfen. Ziel ist im Wesentlichen der Aufbau einer domänenübergreifenden Single Sign-On-Umgebung. Dazu werden XML-basierte Assertions definiert, die zwischen den beteiligten Parteien bei Bedarf ausgetauscht werden können. Diese sog. SAMLAssertions werden von vertrauenswürdigen Autoritäten ausgestellt. SAML legt jedoch keinen Authentifizierungsmechanismus fest, sondern unterstützt viele verschiedene Authentifizierungstypen. Durch den standardisierten Austausch von Sicherheitsinformationen bietet SAML die Möglichkeit, dezentralisierte Infrastrukturen zur Authentifizierung und Autorisierung aufzubauen. Das Liberty Alliance Project ist ein Zusammenschluss verschiedener Firmen zur Entwicklung eines umfassenden föderierten Identitätsmanagement-Frameworks. Der Ansatz sieht im Gegensatz zu Microsoft .NET Passport eine verteilte, föderierte Benutzerprofilverwaltung vor. Die offenen Standards der Liberty Alliance bauen sowohl auf Teilen von SAML als auch auf Teilen von WS-Security auf. Die Liberty Spezifikationen können als eine Erweiterung von SAML angesehen werden, da zum einen die Use-Cases für ein Federated Identity Management wesentlich exakter definiert wurden als dies in SAML der Fall ist und zum anderen, da SAML um neue Anwendungsfälle wie z.B. Single Logout erweitert wurde. Ein großes Problem war jedoch lange Zeit die fehlende Konvergenz zu den SAML Standards. Der Wunsch der Industrie nach einem einheitlichen Standard resultierte in der Verabschiedung des SAML 2.0 Standards im März 2005. Dieser aktuelle Standard vereinigt die Vorteile der Security Assertion Markup Language mit den Vorteilen des Liberty Identity Federation Frameworks. Die WS-Spezifikationen beschreiben, im Gegensatz zu SAML oder zum Liberty Projekt, eine komplette Web-Service Infrastruktur. Der erste offizielle Standard dieser Spezifikationen ist WS-Security. Er liefert einen konsistenten Ansatz für die Gewährleistung von Sicherheit und Integrität bei der Übertragung von SOAP Nachrichten. Um dies zu erreichen, nutzt WSSecurity bestehende Standards wie XML Encryption, XML Signature und SAML. Obwohl sich der SAML Standard bzw. die Standards der Liberty Alliance mit den WS50 Kapitel 2: Grundlagen des Federated Identity Managements Spezifikationen im Bereich Federated Identity (vgl. WS-Federation) teilweise überlappen, ergänzen sie sich doch in den meisten Bereichen. Sowohl SAML als auch die Standards der Liberty Alliance bieten beispielsweise die Möglichkeit, WS-Security bei der Übertragung von Nachrichten einzusetzen. Trotzdem ist der Konkurrenzkampf zwischen den Föderationsstandards noch nicht beendet. WS-Security und WS-Federation sind beispielsweise nach wie vor nicht vollständig interoperabel bzgl. des SAML-Standards. 51 Kapitel 3: Einrichtung der Testumgebungen 3. Einrichtung der Testumgebungen In diesem Kapitel werden die Softwareprodukte vorgestellt, welche in dieser Diplomarbeit eingesetzt wurden, um - basierend auf der Security Assertions Markup Language SAML eine heterogene Federated Identity Umgebung zu realisieren. Neben allgemeinen Komponenten, wie z.B. verwendete Webserver oder Datenbanken, werden hier vor allem die zu testenden Identity- und Access-Management-Produkte (Netegrity Siteminder, RSA Cleartrust, IBM Tivoli Access Manager) detailliert vorgestellt. Abschließend wird die komplette System-Architektur erläutert, die aus diesen Softwarelösungen aufgebaut wurde. Mit Hilfe dieser Systemarchitektur sollen die SAMLAnwendungsfälle (vgl. Kapitel 4) umgesetzt werden. 3.1 Netegrity Siteminder 6.0 3.1.1 Funktionalitäten Das Identity- und Access-Management-Produkt Netegrity Siteminder wurde ursprünglich von dem Softwarehersteller Netegrity entwickelt. Diese Firma wurde jedoch Ende 2004 von Computer Associates (CA) [CA] übernommen. Der Netegrity Siteminder ist eines der drei Produkte, welches im Rahmen dieser Diplomarbeit verwendet wurde, um eine heterogene föderierte Identitätsumgebung aufzubauen. Innerhalb dieser Umgebung soll die Interoperabilität mit den Produkten anderer Hersteller evaluiert werden. Voraussetzung hierfür ist eine Implementierung des SAML 1.0 bzw. 1.1 Standards durch die Produkte. Der Netegrity Siteminder 6.0 SP1 unterstützt Teile beider SAML Versionen. Wie die Testergebnisse in Kapitel 5 zeigen werden, unterstützt jedoch weder der Netegrity Siteminder noch eines der anderen Produkte die OASIS SAML 1.0/1.1 Spezifikation in vollem Umfang. CA bietet mit dem Netegrity Siteminder eine Vielzahl von Lösungen, um Web-Seiten, Webapplikationen und Web-Services in einem Netzwerk sicher anbieten zu können. So ermöglicht das Siteminder-Produkt die Nutzung von Authentifizierungsschemata und das Definieren und Verwalten von Autorisierungsregeln zum Schutz spezifischer Ressourcen. Im Folgenden ein kurzer Überblick über die Funktionalitäten des Netegrity Siteminders [NeteWhite]: Authentifizierungsmanagement Siteminder unterstützt eine große Zahl unterschiedlicher Authentifizierungsmethoden, wie z.B. Passwort, Token, X.509 Zertifikate, biometrische Daten oder eine Kombination unterschiedlicher Methoden. Die notwendigen Authentifizierungsdaten (z.B. Nutzername und Passwort) werden dabei in separaten Datenbanken bzw. LDAP-Verzeichnissen gehalten. Siteminder ermöglicht die 52 Kapitel 3: Einrichtung der Testumgebungen Integration und Anbindung von relationalen Datenbanken und LDAP-Verzeichnissen nahezu aller namhaften Hersteller. Autorisierungsmanagement Siteminder bietet eine zentrale Verwaltung von Benutzerdaten und deren Rechte bzgl. bestimmter Ressourcen. Mittels so genannter Policies oder Sicherheitsregeln wird der Zugriff auf bestimmte Ressourcen gesteuert. Rollenbasierte Zugriffskontrolle (RBAC) Siteminder bietet die Möglichkeit, Policies so zu definieren, dass neben einer herkömmlichen Autorisierung auch eine rollenbasierte Autorisierung unterstützt werden kann. Siteminder eTelligent Rules Administratoren können mit eTelligent Rules komplexe Sicherheitsrichtlinien definieren und bei der Autorisierung von Benutzern eTelligent Rules Formationen aus unterschiedlichen Datenquellen wie etwa Web-Seiten, Verzeichnissen oder Datenbanken dynamisch mit einbeziehen. Dies bietet Unternehmen die Möglichkeit, bei Autorisierungsentscheidungen in Echtzeit auf alle relevanten Daten zugreifen zu können. Auditing und Reporting Diese Funktionalität gestattet es, Benutzerbewegungen und administrative Aktivitäten zu verfolgen. Dadurch können Unternehmen z.B. nachträglich feststellen, ob es zu Anomalien beim Zugriff auf bestimmte Ressourcen gekommen ist. Federation Security Services Das zugrunde liegende Föderationsmodell ermöglicht sowohl die Verarbeitung als auch die Erstellung so genannter SAML-Assertions. Für Partnerunternehmen ohne SAMLImplementierung stellt Netegrity den so genannten SAML Affiliate Agent zur Verfügung. 3.1.2 Architektur Wie im vorigen Kapitel erwähnt, ermöglicht der Netegrity Siteminder seinen Administratoren, Sicherheitsregeln bzw. Policies zu definieren, um den Zugriff auf Ressourcen (z.B. Webseiten) kontrollieren zu können. Der Siteminder besteht aus zwei Hauptkomponenten, dem Siteminder Policy Server und den Siteminder Agents. Die Aufgaben des Policy Servers sind Policy Management, Authentifizierung, Autorisierung und Accounting [NeteWhite]. Die Siteminder Agents (z.B. Webagent) haben die Aufgabe, den Zugriff auf sicherheitsrelevante Ressourcen zu steuern. Nur autorisierte Nutzer sollen auf diese Ressourcen zugreifen dürfen. Dazu kommuniziert der Agent mit dem Policy Server. 53 Kapitel 3: Einrichtung der Testumgebungen Abbildung 15 gibt einen Überblick über die Architektur des Netegrity Siteminders. 2 1 Webserver mit Siteminder Agent Geschützte Ressourcen 6 7 3 5 4 Benutzer User Datenbank Siteminder Policy Server Abbildung 15: Architektur Netegrity Siteminder 6.0 1. User versucht, auf eine geschützte Ressource zuzugreifen. 2. Agent fängt die Anfrage ab und fordert den Nutzer auf, sich zu authentifizieren (z.B. mittels Username und Passwort). 3. Agent leitet die Authentifizierungsdaten des Benutzers an den Policy Server weiter. 4. Policy Server (PS) versucht, den Nutzer mittels einer passenden User-Datenbank bzw. eines passenden User-Verzeichnisses zu authentifizieren. 5. PS prüft, ob der Nutzer autorisiert ist, die gewünschte Ressource zu nutzen. Die Entscheidung wird an den Siteminder Agent übermittelt. 6. Agent stellt der Webapplikation - zwecks Personalisierung - Nutzerdaten zur Verfügung 7. Nutzer wird der Zugriff auf die Ressource gewährt bzw. verweigert. 3.1.2.1 Policy Server Der Policy Server (PS) ist die Hauptkomponente des Netegrity Siteminders. Alle sicherheitsrelevanten Entscheidungen werden hier getroffen. Typischerweise wird der PS auf einem separaten Windows- oder Unix-System installiert. Der Siteminder Policy Server ist eine sog. Single-Process Engine, auf der folgende verteilte Dienste laufen [NeteWhite]: ● Authentifizierung – PS unterstützt eine Vielzahl unterschiedlicher Authentifizierungsarten wie z.B. Passwort, X.509 Zertifikate, Smartcards etc.. 54 Kapitel 3: Einrichtung der Testumgebungen ● ● ● Autorisierung – Policies legen fest, welche Operationen auf den jeweiligen geschützten Ressourcen durchgeführt werden dürfen. Administration – Konfiguration des PS durch eine grafische Benutzerschnittstelle. Auditing – PS generiert Log-Dateien, um die Ereignisse aufzuzeichnen, welche innerhalb des Systems ablaufen. Die Sicherheitsregeln, welche im PS erstellt wurden, werden in einem sog. Policy Store gespeichert. 3.1.2.2 Agenten Ein Siteminder Agent schützt Ressourcen vor unerlaubtem Zugriff. Um einen Benutzer bzgl. einer Ressource authentifizieren bzw. autorisieren zu können, kommuniziert der Agent mit einem Policy Server. In der Siteminder Architektur fungiert der Agent als Policy Enforcement Point (PEP) und der PS als Policy Decision Point (PDP). Das Netegrity Siteminder Paket bietet unterschiedliche Typen von Agenten [NeteWhite]: Webagenten Dieser Typ eines Agenten wird in einen Webserver, wie z.B. Apache oder Microsoft IIS, integriert, um den Zugang zu den Webinhalten dieses Webservers zu kontrollieren. Zudem können Webagenten (WA) ihren geschützten Webapplikationen Nutzerdaten übermitteln, damit diese personalisierte Inhalte anbieten können. Der Siteminder Webagent wird durch die Erweiterungs-API in den jeweiligen Webserver integriert. Er fängt alle Anfragen auf Ressourcen ab und stellt fest, ob diese durch einen vorhandenen Siteminder Policy Server geschützt sind. Wenn ja, interagiert der Webagent mit dem verantwortlichen Policy Server zwecks einer Authentifizierung des Benutzers. Ist die Ressource nicht geschützt, wird die Anfrage sofort zur Auswertung an den Webserver weitergeleitet. Um eine gute Performanz zu erreichen, werden Teile des Nutzerkontextes vom Webagenten zwischengespeichert. Das Ausmaß des Cachings kann jedoch vom Systemadministrator über die manuelle Festlegung von Caching-Parametern geändert werden. Agenten für Applikationsserver Dieser Agent-Typ wird in einen existierenden Applikationsserver, wie z.B. IBM Websphere oder BEA Weblogic, integriert. Er gewährleistet einen feingranularen Schutz für Objekte, wie z.B. Servlets, JSP-Seiten oder EJB-Komponenten. SAML Affiliate Agenten Der SAML Affiliate Agent - in Verbindung mit einem Netegrity Siteminder Produkt - soll es Unternehmen ermöglichen, auf einfache Weise eine Federated Identity Umgebung aufzubauen. Der SAML Affiliate Agent ist Teil der Federation Security Services des Netegrity Siteminders. 55 Kapitel 3: Einrichtung der Testumgebungen Der SAML Affiliate Agent ist eine standalone Komponente, welche auf der Seite des Service Providers (SP) installiert wird. Diese Seite wird oft auch als Consumer- bzw. Affiliate Site bezeichnet. Damit jedoch ein domänenübergreifendes Single Sign-On möglich wird, muss auf der Seite des Identity Providers (Portal-Site) eine vollständige Netegrity Siteminder Installation vorliegen. An dieser Stelle sind die Daten und Profile der Nutzer, welchen der Zugriff auf föderierte Dienste gestattet werden soll, gespeichert. Die Affiliate-Site verwaltet und speichert keine Nutzerinformationen. Aufgabe des SAML Affiliate Agents ist es, SAML-Nachrichten, welche von einer vertrauenswürdigen Portal-Site, d.h. von der dort installierten Netegrity SAML-Autorität geschickt wurden, zu konsumieren und zu validieren. Ist die erhaltene Nachricht gültig bzw. ist sichergestellt, dass diese von einem bekannten und vertrauenswürdigen IdP kommt, kann der SAML Affiliate Agent dem entsprechenden Nutzer Zugriff auf die gewünschte Ressource gewähren. Der SAML Affiliate Agent besteht aus zwei grundlegenden Komponenten [NeteAff]: • Webserver Plugin für die Affiliate Services - Die Konfiguration dieses Plugins erfolgt durch die Datei AffiliateConfig.xml. • Affiliate Server - Abhängig vom verwendeten Betriebssystem läuft der Affiliate Server als Unix-Dämon oder als NT-Service. Konfiguriert wird dieser Server mittels der Datei affiliateserverconf.properties. Der Affiliate Server kommuniziert im Auftrag des Webserver Plugins mit der Portal Seite. Die folgende Abbildung zeigt die Komponenten des SAML Affiliate Agents. Abbildung 16: Komponenten des SAML Affiliate Agents [NeteAff] 56 Kapitel 3: Einrichtung der Testumgebungen 3.1.3 Federated Identity Management Nach einer Installation des Netegrity Webagent OptionPacks bzw. Policy Server OptionPacks ist das Siteminder Produkt in der Lage, SAML 1.0/1.1 Assertions sowohl zu generieren als auch zu konsumieren. Im Rahmen der Diplomarbeit wurde das Netegrity OptionPack 6.0 SP1 verwendet. Dieses unterstützt ausschließlich das SAML Browser/Artifact-Profil. In der neuen Version des OptionPacks (OptionPack 6.0 SP2) wird neben dem Browser/Artifact- auch das Browser/POST-Profil unterstützt. Die sog. Federated Security Services des Netegrity Siteminders setzen sich aus folgenden Komponenten zusammen [NeteFed]: ● ● ● SAML-Assertion Generator SAML Artifact Authentication Schema Federation Web-Services SAML-Assertion Generator Diese Komponente fungiert als SAML-Autorität des Netegrity Siteminders. Sie kann für Nutzer eine SAML-Assertion erstellen. Wird eine solche Assertion angefordert, so ruft der Siteminder Webagent den SAML-Assertion Generator auf. Dieser generiert anhand der Sitzungsdaten eines Benutzers eine passende SAML-Assertion und hält diese innerhalb des Siteminder Session Servers. Dem Webagenten wird eine Referenz auf diese Assertion in Form eines SAML-Artefakts übergeben. Dieser übermittelt das Artefakt anschließend an den gewünschten Service Provider. SAML Artifact Authentication Schema Dieses konfigurierbare Schema ermöglicht dem Siteminder Produkt, als Service Provider, d.h. als Konsument von SAML-Assertions aufzutreten. Eine zentrale Aufgabe dieses Schemas ist zum einen die Extrahierung von Nutzeridentitäten aus SAML-Assertions und zum anderen die Abbildung dieser Bezeichner auf lokale Nutzeridentitäten. Federation Web-Services Die Federation Web-Services Applikation wird auf dem gleichen Webserver wie der Siteminder Webagent installiert. Die Anwendung besteht im Wesentlichen aus zwei Diensten: • Assertion Retrieval – extrahiert das Artefakt aus einer eingehenden SAML-Request Nachricht und sucht mittels diesem eindeutigen Zeiger nach einer entsprechenden Assertion. Existiert eine solche, so wird diese in eine SAML-Response Nachricht verpackt und an den anfragenden Service Provider übertragen. 57 Kapitel 3: Einrichtung der Testumgebungen • SAML Credential Collector – verpackt ein übermitteltes SAML-Artefakt in eine SAML-Request Nachricht und schickt diese zurück zum IdP, um die dazu passende SAML-Assertion zu erhalten. Zwecks Validierung wird diese an das SAML Artifact Authentication Schema weitergeleitet. Anschließend werden im Browser des zugreifenden Nutzers Session-Cookies gesetzt. Alle Dienste innerhalb der Federation Web-Services sind als Servlet realisiert. Damit ein unerlaubter Zugriff auf diese Dienste ausgeschlossen ist, werden die Servlets von einem Siteminder Webagenten geschützt. 3.1.4 Installation Der Netegrity Siteminder 6.0 SP1 (Service Pack 1) wurde auf einem Pentium III Testserver (2048 MB RAM) unter dem Betriebssystem Windows 2000 Advanced Server SP3 installiert. Bevor die Komponenten des Siteminders wie Policy Server und Webagent installiert werden konnten, musste eine geeignete Systemumgebung aufgebaut werden. Hierzu wurden folgende Produkte bzw. Programme auf dem Testsystem installiert: ● ● ● ● ● Java Runtime Environment (JRE) 1.4.1 - Siteminder Option Pack 6.0 SP1 unterstützt momentan ausschließlich die JRE 1.4.1 (höhere Versionen, wie z.B. JRE 1.5, werden noch nicht unterstützt). Microsoft Internet Information Services (IIS) 5.0 Webserver – Grundlage für die Installation des Siteminder Webagents 6.0 SP1 und des Webagent Option Packs 6.0 SP1. New Atlanta ServletExec/ISAPI 4.2 – ServletExec ermöglicht die Verarbeitung von Servlets und Java Server Pages durch den IIS Webserver. Sun ONE Directory Server 5.2 – LDAP-Verzeichnis zur Speicherung und Verwaltung von Identitätsprofilen und Zugriffsrechten (Policies). Microsoft SQL Server 2000 Enterprise Edition SP3a – Relationale Datenbank zur temporären Speicherung von SAML-Assertions (in der Siteminder Dokumentation wird diese Datenbank als Session Server Database bezeichnet). Nach dem Aufbau der erforderlichen Systemumgebung konnte der Netegrity Siteminder 6.0 SP1 installiert werden. Dieser Vorgang unterteilte sich in folgende Schritte [NeteFed]: 1. 2. 3. 4. 5. 6. Installation und Konfiguration des Policy Servers Installation und Konfiguration des Policy Server OptionPacks Installation und Konfiguration des Webagents Installation und Konfiguration des Webagent OptionPacks Konfiguration der Federation Security Services Konfiguration der Federation Web-Services Applikation 58 Kapitel 3: Einrichtung der Testumgebungen Zu Schritt 1: Während der Installation müssen im Wesentlichen folgende Angaben gemacht werden: ● ● ● Encryption Key – in dieser Dialogbox muss ein alphanumerischer Wert für die Verschlüsselung der Daten zwischen Policy Server und Policy Store (hier: Sun One LDAP-Verzeichnis) angegeben werden. Der Schlüssel kann eine Länge von 6 bis 24 Zeichen haben. LDAP Policy Store – soll ein LDAP Verzeichnis als Policy Store verwendet werden, so kann dieses automatisch während der Policy Server Installationsroutine konfiguriert werden. Nötige Angaben sind: IP-Adresse, Port und weitere Zugriffsdaten des LDAPServers. Auswahl des verwendeten Webservers (hier: Microsoft IIS 5.0) Zu Schritt 2: Bevor die Siteminder Federated Security Services verwendet werden können, muss das Netegrity OptionPack installiert werden. Der Installationsvorgang erfordert die folgenden Angaben: ● ● Import Affiliate Data – diese Checkbox ist per Default aktiviert, damit die Federation Services Objekte während der Installation automatisch importiert werden. Bei einer Deaktivierung dieser Option müssen die Daten später manuell mittels des smobjimport Befehls importiert werden. SM Admin Username und SM Admin Password – die hier angegebenen Daten müssen mit dem Benutzernamen und Passwort der Policy Server Benutzerschnittstelle übereinstimmen. Zu Schritt 3: Der Siteminder Webagent muss in den verwendeten Webserver (hier: Microsoft IIS 5.0) integriert werden. Die Installation läuft weitgehend automatisch ab. Zu Schritt 4: Die wichtigste Komponente, die mit dem WA OptionPack installiert wird, ist die Federation Web-Services Applikation. Um die Funktionsfähigkeit dieser Anwendung zu testen, kann in einem Webbrowser folgender Link eingegeben werden: http(s)://<fully qualified hostname>:<port>/affwebservices/router/session Ist der Dienst aktiv, so erscheint die Nachricht „SOAP RPC ROUTER“ im Browserfenster. Zu Schritt 5: Die Hauptkomponente der Federation Security Services ist der Assertion Generator. Die individuelle Konfiguration dieser SAML Autorität erfolgt durch folgende PropertiesDateien [NeteFed]: 59 Kapitel 3: Einrichtung der Testumgebungen ● ● ● AMAssertionGenerator.properties – enthält wichtige Parameter, die bei der Erstellung einer SAML-Assertion nötig sind. Der Administrator kann die Standardwerte dieser Parameter entsprechend der vorliegenden Netzwerkumgebung abändern. Die Parameter dieser Datei sind: - AssertionIssuerID (Identifier des IdPs) - SecurityDomain (Domäne des IdPs) - SourceID (ID, welche in jeden SAML-Artefakt integriert wird, damit der SP den Aussteller einer SAML-Assertion eindeutig identifizieren kann) JVMOptions.txt – speichert Einstellungen, die der Policy Server benötigt, um eine Java Virtual Machine zu erstellen. LoggerConfig.properties – an dieser Stelle können Logging-Parameter konfiguriert werden. Zu Schritt 6: Die Federation Web-Services sind Webapplikationen, die Dienste anbieten, um SAMLNachrichten in einer Föderation austauschen zu können. Diese können über den URL http:/ /<fully qualified hostname>:<port>/affwebservices/ angesprochen werden. Der Assertion Retrieval Service, zuständig für die Beantwortung eingehender SAML-Requests-Nachrichten, kann durch den URL http:/ /<fully qualified hostname>:<port>/affwebservices/ assertionretrieval aufgerufen werden. Alle HTTP-Anfragen, die mit diesem URL-Präfix beginnen, werden zu diesem Servlet geleitet. Am Ende der Konfiguration des Siteminder Produkts sollten die Federation Web-Services durch Siteminder Policies geschützt werden, damit von außen nicht beliebig auf diese Dienste zugegriffen werden kann. 3.2 RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5 3.2.1 Funktionalitäten Die Web Access Management Software RSA [RSA] Cleartrust 5.5 ist das zweite Produkt, welches im Rahmen dieser Diplomarbeit eingesetzt wurde, um eine föderierte und heterogene Identitätsumgebung aufzubauen. In Kombination mit dem externen FIM-Modul RSA Federated Identity Manager 2.5 implementiert dieses Produkt zu großen Teilen sowohl die SAML 1.0 als auch die SAML 1.1 Spezifikation. Dabei wird sowohl das Browser/Artifact- als auch das Browser/POST-Profil unterstützt. RSA Cleartrust 5.5 ist, wie auch der Netegrity Siteminder von Computer Associates, eine Softwarelösung, um Webseiten und Webapplikationen vor unautorisiertem Zugriff zu schützen. 60 Kapitel 3: Einrichtung der Testumgebungen Im Folgenden ein kurzer Überblick über die Funktionalitäten von RSA Cleartrust 5.5 und RSA FIM 2.5 [RSAGuide, RSAFIM]: Management von Nutzeridentitäten RSA Cleartrust ermöglicht die Verwaltung und Steuerung der Lebenszyklen von Benutzeridentitäten. Neben der Erschaffung von Identitäten wird auch eine flexible Terminierung derselben unterstützt. Web Zugriff-Management Cleartrust ermöglicht den Aufbau und die Verwaltung von Policies (Sicherheitsregeln), welche die Privilegien eines Nutzers prüfen können. Anhand dieser Privilegien kann entschieden werden, ob ein Nutzer für eine spezifische Online-Ressource autorisiert werden kann. Mit Hilfe solcher Sicherheitsregeln besteht die Möglichkeit, feingranulare Zugriffskriterien zu definieren. Diese können sowohl statisch (z.B. Abteilung eines Nutzers) als auch dynamisch (z.B. Kontostand eines Nutzers) sein. Authentifizierungsmanagement Um einen Benutzer zu authentifizieren, können unterschiedliche Authentifizierungsmethoden verwendet werden. RSA Cleartrust 5.5 unterstützt folgende Authentifizierungsmechanismen: • • • • Basic – Ein Benutzer authentifiziert sich mittels seines Nutzernamens und seines Passworts. X.509 Zertifikate – Der Webbrowser eines Nutzers kann konfiguriert werden, so dass dieser Browser-Zertifikate zur Authentifizierung akzeptiert. Windows NT – Ein User kann auf Basis seines Windows NT Kontos authentifiziert werden. Custom – Die RSA Cleartrust Webagent Erweiterung (WAX) kann genutzt werden, um neue Authentifizierungsroutinen zu schreiben und in das System zu integrieren. Diese zahlreichen Authentifizierungsmethoden sorgen dafür, dass ein sicherer Zugriff auf das Netzwerk auch außerhalb einer Firewall möglich ist. Verteilte Administration Administrative Aufgaben können auf verschiedene Geschäftseinheiten aufgeteilt werden. Diese können sich sowohl innerhalb als auch außerhalb einer Organisation befinden. Auditing und Reporting Dieses Feature ermöglicht eine einheitliche Aufzeichnung aller auftretenden Ereignisse in der Systemumgebung. Im Wesentlichen sind dies Aktionen von Nutzern, Administratoren und Systemprozessen. 61 Kapitel 3: Einrichtung der Testumgebungen Föderiertes Identitäts-Management Das RSA Federated Identity Management Modul 2.5 fungiert als SAML-Autorität. Es können sowohl SAML 1.0 als auch SAML 1.1 Assertions generiert bzw. konsumiert werden. 3.2.2 Architektur In diesem Kapitel werden alle Komponenten von RSA Cleartrust 5.5 vorgestellt. Die Abbildung 17 gibt einen Überblick über die Architektur der benötigten CleartrustBestandteile. Benutzer RSA Cleartrust Server Key Server Dispatcher Webserver mit Cleartrust Agent Authorization Server User Datenbank Entitlements Server Policy Datenbank Abbildung 17: Architektur RSA Cleartrust 5.5 3.2.2.1 RSA Cleartrust Server Für eine lauffähige Implementierung von RSA Cleartrust 5.5 wird mindestens jeweils eine Instanz der folgenden Server benötigt [RSAGuide]: Entitlements Server Der Entitlements Server ist die zentrale Komponente für die administrativen Funktionen des RSA Cleartrust Systems. Neu erstellte bzw. geänderte Policies werden von diesem Server in eine angebundene Policy Datenbank geschrieben. Eine Verbindung mit dem Authorization Server soll es diesem ermöglichen, auf Policy- und Ressourcen-Informationen zuzugreifen. 62 Kapitel 3: Einrichtung der Testumgebungen Die Steuerung des Entitlements Servers erfolgt über den sog. Entitlements Manager. Mittels dieser grafischen Servlet Applikation kann der Systemadministrator Änderungen bzgl. Nutzern, Ressourcen und Policies vornehmen. Authorization Server Der Zuständigkeitsbereich dieser Komponente ist die Authentifizierung bzw. Autorisierung von Nutzern zur Laufzeit. Versucht ein Benutzer, auf eine Ressource zuzugreifen, so leitet ein RSA Agent die Anfrage an einen Authorization Server weiter. Ist die Ressource geschützt, prüft der Server, o ob der Nutzer (mittels Authentifizierungsmethode und seiner Daten) authentifiziert werden kann und o ob der Nutzer berechtigt (autorisiert) ist, um auf die gewünschte Ressource zuzugreifen. Der Authorization Server liest die Benutzerinformationen direkt aus einer ihm zugeordneten Datenbank aus. Um die Performanz des Systems zu verbessern, werden die angeforderten Informationen solange wie möglich im Cache dieses Servers gehalten. Dispatcher/Key Server Der Dispatcher/Key Server hat zwei Funktionen. Zum einen kennt der Dispatcher alle verfügbaren Authorization Server. Agenten können dadurch mit dem Dispatcher kommunizieren, um eine Liste aller verfügbaren Authorization Server zu erhalten. Für die Übermittlung der Anfragen bzw. Antworten wird jeweils eine TCP/IP-Verbindung aufgebaut. Der Key Server ist ein eigenständiger Prozess, welcher in periodischen Abständen neue Single Sign-On Token Encryption Keys (Sicherheitsschlüssel) erstellt. Agenten können mit dem Key Server in Kontakt treten, um den neuesten Schlüssel zu erhalten. Authentifiziert sich ein Benutzer beim Cleartrust-System, so weist der zuständige RSA Agent dem Nutzer einen Token zu. Solange dieser Token gültig ist, kann er sich mit diesem gegenüber dem System identifizieren. Token sind verschlüsselte Datenstücke, die Session-Informationen enthalten. Für die Entschlüsselung dieser Session-Token benötigt der Agent einen Encryption Key. Diesen erhält er vom Key Server. Aus Sicherheitsgründen erstellt der Key Server in regelmäßigen Abständen neue Sicherheitsschlüssel. 3.2.2.2 Agenten für Web- und Applikationsserver Ein RSA Agent schützt Ressourcen vor unerlaubten Zugriff. Um einen Benutzer bzgl. einer Ressource authentifizieren bzw. autorisieren zu können, kommuniziert der Agent mit einem verfügbaren Authorization Server. RSA bietet - wie auch der Netegrity Siteminder - unterschiedliche Agententypen [RSAGuide]: 63 Kapitel 3: Einrichtung der Testumgebungen Webagent RSA Cleartrust Webagenten erweitern die Sicherheitsmechanismen eines Webservers. Ein RSA Webagent läuft innerhalb desselben Prozesses wie auch der Webserver selbst. Aufgerufen wird ein Agent immer dann, wenn der Webserver eine Zugriffsentscheidung bzgl. eines bestimmten URLs treffen muss. Der Webagent leitet die ihm übergeben Anfragen bei Bedarf an den Authorization Server weiter. Dieser entscheidet über den Zugriff. Agenten für Applikationsserver Vgl. Kapitel 3.1.2.2. 3.2.3 Federated Identity Management Im Gegensatz zum OptionPack des Netegrity Siteminders ist der RSA Federated Identity Manager 2.5 eine standalone Applikation, d.h., er ist nicht an ein bestimmtes Identity/AccessManagement-Produkt gekoppelt. Dadurch kann das Modul theoretisch mit einer beliebigen Authentifizierungs- und Autorisierungseinheit verbunden werden. Wie Kapitel 3.2.1 zeigt, wurde in dieser Diplomarbeit RSA FIM 2.5 in Kombination mit RSA Cleartrust 5.5 verwendet. Der RSA FIM 2.5 basiert auf Web-Services und setzt zum einen bestehende Standards wie XML oder SOAP ein und unterstützt zum anderen Spezifikationen wie SAML 1.0 bzw. SAML 1.1 Eine Unterstützung der Föderationstandards Liberty Alliance ID-FF 1.2 und WSFederation wird es voraussichtlich in der nächsten Version des RSA Federated Identity Managers geben [RSAPress]. Für den Austausch von SAML-Assertions wurde sowohl das Pull-Modell Browser/Artifact als auch das Push Modell Browser/POST implementiert. Die SAML-Autorität des Federated Identity Managers 2.5 basiert auf den Open Source SAML-Bibliotheken von OpenSAML [OpenSAML]. Dies verspricht eine hohe Konformität zu den SAML-Spezifikationen der OASIS Gruppe. Der RSA Federated Identity Manager 2.5 besteht aus FIM-Servern und FIM Runtime Servlets [RSAFIM]: FIM-Server Das RSA FIM-Modul besteht aus zwei Arten von Servern. Dies ist zum einen der AdminServer und zum anderen der Managed-Server. Der Admin-Server übernimmt anfallende Verwaltungsaufgaben (z.B. Kontrolle des Managed-Servers). Der Managed-Server ist das Herzstück, auf dem die SAML-Autorität des Federated Identity Managers läuft. Diese kann sowohl als Identity Provider bzw. Asserting Party (Ausstellung von SAML-Assertions) als auch als Service Provider bzw. Relying Party (Konsumierung von SAML-Assertions) fungieren. 64 Kapitel 3: Einrichtung der Testumgebungen FIM Runtime Servlets Diese Servlets werden verwendet, um auf die FIM-Server zugreifen und diese konfigurieren zu können. Um einen entfernten Zugriff möglich zu machen, können die FIM-Servlets auch auf einem anderen Host als die FIM-Server installiert werden. Nach einer erfolgreichen Installation der Servlets kann der Systemadministrator - über eine Browser-basierte GUI - den Federated Identity Manager verwalten und konfigurieren (z.B. Hinzufügen von Vertrauensbeziehungen, Definition von Asserting und/oder Relying Parties, Anpassung von SAML-Assertions, Einsatz digitaler Signaturen etc.). 3.2.4 Installation Die Authentifizierungsautorität RSA Cleartrust 5.5 und die SAML-Autorität RSA Federated Identity Manager 2.5 wurden auf einem Pentium III Testserver (2048 MB RAM) unter dem Betriebssystem Windows 2000 Advanced Server SP3 installiert. Bevor die Produkte installiert werden konnten, musste folgende Systemumgebung aufgebaut werden: ● ● ● ● ● Java Runtime Environment (JRE) 1.4.1 – Runtime Web-Services von RSA Cleartrust unterstützen ausschließlich Applikationsserver, basierend auf JRE 1.4. Apache 2.0 HTTP Webserver – Hosting der sicherheitsrelevanten Webressourcen und Grundlage für die Integration des RSA Cleartrust Apache Agents 2.5. Apache Jakarta Tomcat 4.1 – Applikationsserver (integriert in den Apache 2.0 Webserver), ermöglicht die Verarbeitung und Anzeige von Servlets und JSP-Seiten. Der Entitlements Manager wurde auf diesem Server installiert. Microsoft SQL Server 2000 Enterprise Edition SP3a – Relationale Datenbank zur persistenten Speicherung von Nutzer- und Policyinformationen. NetDirect JDBC-Treiber JSQLConnect 3.0 (Release 3.30) – RSA Cleartrust 5.5 benötigt diesen JDBC-Treiber, um eine Verbindung zu dem Microsoft SQL Server aufbauen zu können. Die Installation der RSA Cleartrust Komponenten untergliedert sich in die folgenden Schritte [RSAInstall]: 1. Installation eines Entitlements Servers, Authorization Servers und Dispatcher/Key Servers. 2. Konfiguration eines sog. Data Adapters für den Zugriff von RSA Cleartrust auf eine vorhandene User/Policy-Datenbank (hier: Microsoft SQL Server 2000). 3. Starten der RSA Cleartrust Server, um die Kommunikationsfähigkeit dieser Server mit der/den zugrunde liegenden(en) Datenbank(en) zu testen. 4. Installation und Konfiguration der RSA Entitlements Manager Webapplikation. 5. Installation und Konfiguration eines Webagenten auf allen Webservern, die geschützt werden sollen. 6. Start und Test des Entitlements Managers 65 Kapitel 3: Einrichtung der Testumgebungen Zu Schritt 1: Die Installation der Cleartrust-Server unter Windows läuft weitgehend eigenständig ab. Während der Installation müssen im Wesentlichen folgende Angaben gemacht werden: ● ● ● Auswahl des zu verwendenden Data-Adapters – der Data-Adapter muss abhängig von der eingesetzten Nutzer/Policy-Datenbank gewählt werden (hier: SQL Data-Adapter) Host und Port der verwendeten Datenbank. Damit der Cleartrust Authorization- bzw. Entitlements-Server eine Verbindung mit der vorhanden Datenbank aufbauen kann, muss deren Host (hier: itacpi09.testeurope1.bmwgroup.com) und Portnummer (hier: 8001) angegeben werden. Administratorname und Administratorpasswort – Angabe von Administratordaten für den vollen Zugriff auf den RSA Entitlements Manager. Zu Schritt 2: Bei der Installation der Cleartrust-Server kann wahlweise ein SQL Data-Adapter oder ein LDAP Data-Adapter installiert werden. Dies ist abhängig von der verwendeten Datenbank bzw. dem verwendeten Verzeichnis. Da in dieser Diplomarbeit dem Cleartrust-System eine relationale Datenbank zugrunde liegt (Microsoft SQL Server 2000), wurde ausschließlich ein SQL Data-Adapter installiert. Dieser SQL Adapter basiert auf einem Schema von Datentabellen, welche die Speicherung der Nutzer- und Policy-Informationen in der Datenbank organisieren. Um dieses Schema auf die SQL-Datenbank zu übertragen, musste ein entsprechendes SQL-Skript auf der Datenbank-Plattform ausgeführt werden. Zu Schritt 3: Die RSA Cleartrust Server können entweder als Windows-Dienst oder als Anwendung (Batch-Datei) ausgeführt werden. Die Server müssen in dieser Reihenfolge gestartet werden: 1. Dispatcher/Key Server 2. Entitlements Server 3. Authorization Server Zu Schritt 4: Um den Entitlements Manager auf dem verwendeten Applikations-Server (hier: Apache Tomcat 4.1) zu installieren, muss eine WAR-Datei (Web-Archiv) auf dem ApplikationsServer ausgeführt werden. Um dies zu erreichen, muss die Datei admingui.war in das Tomcat webapps-Verzeichnis kopiert werden. Zu Schritt 5: Der RSA Apache Webagent 2.5 wurde mit Hilfe des zugehörigen Installationsprogramms in den Apache 2.0 HTTP-Webserver integriert. 66 Kapitel 3: Einrichtung der Testumgebungen Zu Schritt 6: Nach der Installation aller RSA Cleartrust Komponenten kann das Entitlements Manager Servlet im Browser, abhängig von Host und Portnummer des Applikations-Servers, aufgerufen werden (hier: http://itacpi09.testeurope1.bmwgroup.com:7001/admingui). Nachdem alle RSA Cleartrust Komponenten funktionsfähig und einsatzbereit sind, kann der RSA Federated Identity Manager 2.5 installiert werden. Obwohl es möglich ist, das FIMProdukt auf einem anderen Server als dem der zugrunde liegenden Authentifizierungsautorität zu installieren, wurde in dieser Diplomarbeit die RSA SAML-Autorität auf demselben System wie RSA Cleartrust installiert. Neben den FIM-Servern (Admin- und Managed-Server) und Runtime Servlets wird automatisch ein BEA WebLogic Embedded LDAP-Directory installiert. Dieses LDAPVerzeichnis wird zur Speicherung der Konfigurationsdaten verwendet. Nach der erfolgreichen Installation des RSA Federated Identity Managers 2.5 kann über den URL http://host_and_domain:managedport/samlconfig auf die FIM-Administrationskonsole zugegriffen werden. Abschließend muss, um eine Verbindung zwischen RSA Cleartrust und dem Federated Identity Manager herzustellen, in der FIM-Administrationskonsole die jeweilige IP-Adresse und Portnummer des Dispatcher- und Entitlements-Servers angegeben werden. 3.3 IBM Tivoli Access Manager 5.1 & Tivoli Federated Identity Manager 6.0 Als drittes Produkt wurde der IBM [IBM] Tivoli Access Manager (TAM) 5.1 und der Tivoli Federated Identity Manager (TFIM) 6.0 installiert. 3.3.1 Funktionalitäten Der Tivoli Access Manager stellt Dienste zur Authentifizierung, Autorisierung und zum Session-Management zur Verfügung. Die Komponenten Authorization- und Policy-Server bilden dabei den Policy Decision Point (PDP). Als Policy Enforcement Point (PEP) wurde im Rahmen dieser Diplomarbeit ein HTTP-basierter WebSeal Reverse Proxy verwendet. Das Modul TFIM 6.0 wird benötigt, um eine Federated Identity Lösung aufbauen zu können. Die Funktionalitäten des TAMs 5.1 sind im Wesentlichen die gleichen wie die des RSA Cleartrusts 5.5 und des Netegrity Siteminders 6.0. Auch der TAM 5.1 unterstützt ein umfassendes Authentifizierungs- und Autorisierungsmanagement, d.h., auch hier können komplexe Policies zum Schutz von Webressourcen definiert werden. Im Folgenden eine kurze Zusammenfassung der wichtigsten Funktionalitäten des TAMs 5.1 [TAMRed]: 67 Kapitel 3: Einrichtung der Testumgebungen ● ● ● ● ● Authorization-Engine – Policy Parameter können geändert werden, ohne dass Applikationen neu geschrieben bzw. neu kompiliert werden müssen. Rollenbasierte Sicherheitsregeln – Möglichkeit einer feingranularen und dynamischen Authentifizierung bzw. Autorisierung. Unterstützung zahlreicher Verzeichnisse – Anbindung von Verzeichnissen unterschiedlicher Hersteller zur Speicherung von Nutzer- und Policydaten. Direkte Registrierung durch den Endnutzer – Template unterstützt direkte Registrierungen von Endnutzern in einer Webumgebung. Umfangreiches Auditing und Reporting – Zentralisierte Überwachung und Kontrolle des gesamten Systems. Die Eigenschaften und Funktionen des Tivoli Federated Identity Managers 6.0, der in Verbindung mit dem Tivoli Access Manager eingesetzt wurde, werden in Kapitel 3.3.3 vorgestellt. 3.3.2 Architektur Die Leistungen des Tivoli Access Managers 5.1 werden im Wesentlichen von zwei Kernkomponenten und einer Reihe von Management-Komponenten erbracht. Kernkomponenten Der TAM besteht aus zwei Hauptbestandteilen [TAMRed]: ● ● Benutzerverzeichnis – Ein Verzeichnis zur Speicherung von Nutzeridentitäten und Nutzergruppen. Autorisierungsdienst – Dieser Dienst setzt sich zusammen aus einer Autorisierungsdatenbank und einer Autorisierungsengine. Die Autorisierungsdatenbank enthält virtuelle Darstellungen der Ressourcen, die geschützt werden sollen (engl. protected object space). Die gespeicherten Objektdefinitionen verweisen dabei auf logische oder physische Ressourcen. Die Aufgabe der Autorisierungsengine ist es, den Zugriff auf geschützte Objekte (Ressourcen) zu erlauben bzw. zu verweigern. Um eine solche Entscheidung treffen zu können, kommuniziert die Autorisierungsengine sowohl mit dem Benutzerverzeichnis als auch mit der Autorisierungsdatenbank. Management-Komponenten Eine Access Manager Umgebung benötigt - neben den oben genannten primären Bestandteilen - Komponenten, die Verwaltungs- und Managementaufgaben wahrnehmen. Die wichtigsten sollen hier kurz erwähnt werden [AMAdmin, TAMRed]: 68 Kapitel 3: Einrichtung der Testumgebungen ● ● ● Policy Server – Dieser Server verwaltet Autorisierungsdatenbank(en) und Autorisierungsengine(s), um den verschiedenen Applikationen bzw. Ressourcen einen Autorisierungsdienst anbieten zu können. PDADMIN Tool – Dieses Tool ermöglicht es dem Systemadministrator, per Konsole Verwaltungsaufgaben wahrzunehmen (z.B. Hinzufügen von Nutzern oder Policies). Web Portal Manager – Diese JSP-Applikation erlaubt es dem Systemadministrator, die Architektur über einen Webbrowser zu verwalten. Webserver http(s) Request http(s) Response Benutzer Benutzerverzeichnis Webseal Reverse Proxy Cache Web Portal Manager Policies Policies Access Manager Policy Server Abbildung 18: Architektur IBM Tivoli Access Manager 5.1 Wie in der Abbildung 18 ersichtlich, wird zusätzlich zu den oben beschriebenen Komponenten ein Policy Enforcement Point benötigt, welcher Anfragen von Nutzern bzgl. sicherheitsrelevanter Ressourcen abfängt. Diese Funktion übernimmt ein sog. WebSeal Reverse Proxy [AMWebseal]. Wie auch die Webagenten der anderen Produkte, wird dieser in einen Webserver integriert, um dort die HTTP(S)-Ports zu kontrollieren. Jedoch im Gegensatz zu den Webagenten von RSA und Computer Associates leitet der Reverse Proxy die Anfrage nicht an einen Policy Server o.ä. weiter, sondern führt die Authentifizierung bzw. die Autorisierung mittels Benutzerverzeichnis und vorhandener Policies selbstständig durch. Um dies zu ermöglichen, werden die aktuellen Policies im Cache des WebSeal Reverse Proxies gehalten. Für die Aktualität dieser Sicherheitsregeln sorgt der Access Manager Policy Server. Dazu führt dieser - wenn nötig - Updates auf dem WebSeal Cache aus. Zur Authentifizierung eines Benutzers wendet sich der Reverse Proxy direkt an das zuständige Benutzerverzeichnis. 69 Kapitel 3: Einrichtung der Testumgebungen 3.3.3 Federated Identity Management Der IBM Tivoli Federated Identity Manager (TFIM) 6.0, eine modulare J2EE-Komponente, erweitert die Authentifizierungs- und Autorisierungsautorität Access Manager um Fähigkeiten des föderierten Identitäten-Managements. Dieses Produkt ermöglicht den Aufbau von Vertrauensbeziehungen und den domänenübergreifenden Austausch von Authentifizierungsund Attributinformationen. Die SAML-Autorität des TFIMs 6.0 unterstützt momentan im Gegensatz zu den FIM-Komponenten von RSA und CA ausschließlich die SAML Version 1.0 (inklusive Browser/Artifact- und Browser/POST-Profil). An dieser Stelle muss jedoch bemerkt werden, dass es sich beim IBM Tivoli Federated Identity Manager 6.0 noch um eine Beta-Version handelt. Nach Aussagen von IBM besteht die Möglichkeit, dass die endgültige Verkaufsversion noch um SAML 1.1 erweitert wird. Neben SAML 1.0 unterstützt TFIM 6.0 außerdem die Spezifikation WS-Federation und das Liberty Identity Federation Framework (Liberty ID-FF 1.1). Eine hohe Sicherheit und Vertraulichkeit beim Austausch von Benutzerinformationen kann durch den Einsatz von WSSecurity gewährleistet werden. Die Implementierung des TFIMs 6.0 ist komplex. Sie setzt sich aus zahlreichen Diensten und Modulen zusammen. Die wichtigsten sollen an dieser Stelle kurz vorgestellt werden [IBMRed]: Trust Service Der Trust Service ist ein Hauptbestandteil des TFIMs 6.0. Diese J2EE-Applikation stellt Dienste zur Verfügung, die es auf eine sichere Art und Weise ermöglichen, die Domänen eines Unternehmens um die Domänen von vertrauenswürdigen Partnerseiten zu erweitern. Neben der Verwaltung von kryptografischen Elementen ist es die Hauptaufgabe dieser Komponente, Sicherheitstoken zwischen den Domänen einer Föderation auszutauschen. Der Trust Service verwaltet dabei die vorhandenen Beziehungen zwischen den verschiedenen Partnern (inklusive der gesendeten bzw. empfangenen Token-Typen). Zudem werden Informationen verwaltet, die festlegen, wie Identitätsinformationen auf unterschiedliche Token Typen abgebildet werden. Der Aufruf des Trust Services geschieht mittels SOAP over HTTP. Alias Service Der TFIM Alias Service verwaltet die Pseudonyme von Benutzern, die von den Single SignOn-Protokollen verwendet werden. Für jeden Partner in der Föderation kann ein anderer Alias verwendet werden. Der Einsatz eines Alias soll verhindern, dass die wirkliche Identität eines Nutzers in einem Netzwerk ausgetauscht wird. Der FIM Alias Service speichert die Mapping-Informationen eines Alias im Access Manager Benutzerverzeichnis. 70 Kapitel 3: Einrichtung der Testumgebungen Dieser Dienst wird nur für das Liberty Alliance Protokoll benötigt. Die anderen Protokolle wie z.B. SAML unterstützen diese Funktionalität nicht. Der Zugriff auf den Alias Service erfolgt durch einen lokalen Java-Aufruf. Die Kommunikation mit dem Benutzerregister geschieht über JNDI. Key Encryption Signing Service Eine Vertrauensbeziehung innerhalb einer Föderation basiert auf öffentlichen/privaten Schlüsseln. In einer solchen Umgebung besitzt jeder Partner einen oder mehrere private Schlüssel, um Identitätsinformationen innerhalb von Sicherheitstoken (z.B. SAML-Assertion) signieren zu können. Die Entschlüsselung dieser Signaturen erfolgt mittels eines passenden öffentlichen Schlüssels. Die Aufgabe der Key Encryption Signing Services ist die Verwaltung bzw. Bereitstellung der vorhandenen Schlüssel. Ein Aufruf dieser J2EE-Komponente erfolgt wieder durch einen lokalen Java-Aufruf. Durchgeführt wird dieser sowohl vom Trust Service als auch vom SSO Protocol Service. SSO Protocol Service Der TFIM SSO Protocol Service (SPS) regelt die komplette HTTP- bzw. SOAP/HTTPKommunikation, um die verschiedenen Single Sign-On Protokolle (z.B. SAML) unterstützen zu können. Der Browser eines Clients greift dabei per HTTP(S), über den Umweg eines WebSeal Reverse Proxies, auf den SPS zu. Der WebSeal übernimmt dabei die Aufgaben des Web Session Managements und der Nutzer-Authentifizierung. Während der Ausstellung einer ausgehenden SSO-Nachricht ruft der SPS den Trust Service auf, um einen SSO-Sicherheitstoken zu erhalten. Dieser hat die Aufgabe, einen lokalen Benutzer auf einer Partnerseite zu authentifizieren. Bei einer eingehenden SSO-Nachricht ruft der SPS den Trust Service auf, damit dieser den erhaltenen SSO-Sicherheitstoken validiert. Die Abbildung 19 zeigt die komplette TFIM-Architektur, die benötigt wird, um SSOProtokolle wie SAML 1.0, WS-Federation und Liberty zu unterstützen. Der WebSeal Proxy in dieser Umgebung verwaltet Sitzungen (Sessions) und Zugriffsrechte eines Benutzers und führt - wenn nötig - eine Authentifizierung durch. Die Policies, anhand derer eine Autorisation durchgeführt wird, werden vom Access Manager verwaltet. Eingehende SSO-Nachrichten werden vom WebSeal zur weiteren Verarbeitung an den SPS weitergeleitet. Soll selbst ein Single Sign-On-Prozess eingeleitet werden, so leitet der WebSeal Reverse Proxy den entsprechenden Client an den SPS weiter, damit dieser eine SSO-Nachricht für den Benutzer erstellen kann. Der SPS kommuniziert mit den Komponenten der Trust-Infrastruktur, um SSO-Nachrichten auszustellen bzw. zu konsumieren. 71 Kapitel 3: Einrichtung der Testumgebungen Die Verwaltung des SPSs geschieht über die TFIM-Konsole. Dazu muss diese Konsole als Plugin in die IBM Integrated Solutions Console (ISC) integriert werden. Auf die ISC kann per HTTP bzw. HTTPS zugegriffen werden. ISC Geschützte Ressourcen WebSphere Key Encryption Signing Service Access Manager WebSeal 5.1 SSO Protocol Service TFIM Konsole Trust Service Alias Service Access Manager 5.1 Policy Server & Authorization Server LDAP Benutzerverzeichnis Abbildung 19: Architektur IBM Federated Identity Manager 6.0 3.3.4 Installation Der IBM Tivoli Access Manager 5.1 und der IBM Tivoli Federated Identity Manager 6.0 wurden zusammen auf einem Pentium III Testserver (2048 MB RAM) unter dem Betriebsystem Windows 2003 Enterprise Edition Server installiert. Noch bevor die beiden Produkte installiert werden konnten, mussten folgende Vorraussetzungen getroffen werden: ● ● ● ● ● Installation der IBM Java Runtime Environment 1.3.1.5 – Diese Java Runtime Environment Version wird vom Tivoli Access Manager 5.1 benötigt. Installation und Konfiguration eines WebSphere Application Servers 6.0 – Der Federated Identity Manager läuft als Java-Applikation auf diesem Application-Server. DB2 Enterprise Server Edition 8.1 (Fixpack 2) – Der Tivoli Directory Server nutzt diese Datenbank, um dort seine LDAP-Daten zu speichern. Installation und Konfiguration der IBM Integrated Solutions Console (ISC) 5.1 – Die ISC stellt eine Web Portal Server-Infrastruktur für die TFIM Console 6.0 bereit. Diese FIM-Konsole wird als Plugin in die Infrastruktur der ISC integriert, um dort in Form einer Applikation ausgeführt zu werden. Installation Global Security Kit (GSKit), Version 7 – Diese Komponente enthält SSLBibliotheken, um eine SSL Daten-Verschlüsselung zu ermöglichen. 72 Kapitel 3: Einrichtung der Testumgebungen ● Installation und Konfiguration eines IBM Tivoli Directory Servers (IDS) 5.2 – Dieses LDAP-Verzeichnis wird vom TAM 5.1 als Benutzerverzeichnis verwendet. Für die Installation des Tivoli Access Managers 5.1 waren folgende Schritte nötig [IBMPreq]: 1. 2. 3. 4. 5. Installation und Konfiguration eines TAM 5.1 Policy Servers. Konfiguration eines Access Manager Authorization Servers. Installation und Konfiguration eines TAM Web Portal Managers (WPM). Installation und Konfiguration eines TAM WebSeal Reverse Proxies. Installation einer IBM Solutions Console (ISC) 5.1. Zu Schritt 1: Der Installationsvorgang des Policy Servers und des Authorization Servers läuft vollkommen automatisch ab. Nach der Installation müssen die TAM Runtime und der TAM Policy Server geeignet konfiguriert werden. Hierzu kann eine komfortable grafische Benutzeroberfläche genutzt werden. Folgende Angaben sind zu machen: Typ des Benutzerverzeichnisses (hier: LDAP), Verbindungsdaten des Benutzerverzeichnisses (Hostname, Portnummer, Administratorname und Administratorpasswort) und SSL-Verbindungseinstellungen (z.B. SSL-Port). Zu Schritt 2: TFIM 6.0 benötigt neben dem Policy Server auch einen Authorization Server. Dieser muss ebenfalls nach der Installation konfiguriert werden. Dem Authorization Server müssen hierzu folgende Informationen mitgeteilt werden: Domänenname, Verbindungsdaten des Policy Servers (Hostname, Portnummer) und Verbindungsinformationen des Authorization Servers (Hostname, Administration-Port, Authorization-Request-Port). Zu Schritt 3: Die Java-Applikation WPM muss in einen WebSphere 5.1 Applikations-Server integriert werden. Da bei den Vorbereitungen der WebSphere 6.0 (benötigt von TFIM 6.0) installiert wurde, und der WPM zu dieser Version nicht kompatibel ist, muss zusätzlich eine WebSphere 5.1 Instanz installiert werden. Bei der Konfiguration des Web Portal Managers müssen neben dem Pfad des zu verwendenden WebSphere 5.1 Servers vor allem die Verbindungsdaten des Policy Servers angegeben werden. Um zu kontrollieren, ob die WPM Applikation aktiv ist, kann man diese mit dem Browser über den URL http://<Virtual Machine>:8426/pdadmin aufrufen. Zu Schritt 4: Während der Installationsroutine des WebSeal 5.1 Reverse Proxies wurden folgende Komponenten installiert: TAM Web Security Runtime, TAM WebSeal und AM Web Security Application Developer Kit. Konfiguriert wird der WebSeal - wie die Komponenten zuvor mittels des TAM Konfigurationsprogramms. WebSeal erlaubt die Konfiguration mehrerer 73 Kapitel 3: Einrichtung der Testumgebungen Instanzen, die unterschiedliche Aufgaben im System wahrnehmen können. Jede WebSealInstanz hat dabei einen eindeutigen Namen, einen Hostnamen und einen Listening Port. Abschließend wird festgelegt, welche Arten von Verbindungen (HTTP, HTTPS) vom WebSeal Server akzeptiert werden sollen. Zu Schritt 5: Ebenso wie der WPM wird auch die IBM Solutions Konsole in den WebSphere 5.1 Server integriert. Während des Installationsvorgangs kann der gewünschte WebSphere Server aus einer Liste ausgewählt werden. Anschließend müssen die Verbindungsdaten für den ISC Portal Server angegeben werden (z.B. HTTP-Port, HTTPS-Port, SOAP-Port). Zum Schluss werden die Zugriffsdaten für das LDAP-Verzeichnis benötigt (z.B. LDAP-Port, LDAP Administrative DN, LDAP Bind DN etc.). Nachdem alle erforderlichen Komponenten des Tivoli Access Managers 5.1 installiert bzw. konfiguriert wurden, kann der Tivoli Federated Identity Manager 6.0 in das bestehende System integriert werden. Im ersten Schritt wird die TFIM 6.0 Konsole installiert. Dazu muss diese in den bereits existierenden ISC Portal Server integriert werden. Um zu überprüfen, ob die FIM-Konsole korrekt installiert wurde, kann die IBM Solutions Console in einem Browser aufgerufen werden (URL: http:/<Virtual Machine>:8421/ibm/console). Im zweiten Schritt wird die Hauptkomponente, der Tivoli Federated Identity Manager 6.0, installiert. Nach der erfolgreichen Installation können mittels der TFIM-Konsole Föderationen mit anderen Unternehmen bzw. Domänen aufgebaut werden. 3.4 Vergleich der eingesetzten IAM-Softwareprodukte In der folgenden Tabelle werden die drei Identity/Access-Management-Produkte, die im Rahmen dieser Diplomarbeit für den Aufbau einer föderierten Umgebung eingesetzt wurden, untereinander verglichen. Netegrity Siteminder 6.0 SP1 RSA Cleartrust 5.5 & FIM 2.5 IBM TAM 5.1 & TFIM 6.0 (Beta) Allgemein Installation Dokumentation Installationsvorgang Installationsvorgang einfach relativ einfach, jedoch und schnell. etwas unübersichtlich, da zahlreiche Komponenten installiert werden müssen. Installationsvorgang im Vergleich zu den anderen Produkten recht komplex und zeitintensiv. Sehr ausführliche Dokumentationen. Mehr Beispiele und Abbildungen wären jedoch wünschenswert. Sehr umgangreiche aber gute Dokumentationen. Es wird sehr viel Detailwissen vermittelt. Gute und verständliche Dokumentationen, die jedoch etwas umfangreicher sein könnten. 74 Kapitel 3: Einrichtung der Testumgebungen Die Konfiguration ist trotz einer grafischen Benutzeroberfläche eher schwierig. Das Netegrity Sicherheitsmodell erfordert, dass sich der Administrator mit zahlreichen neuen Begriffen auseinander – setzt. Die Benutzerschnittstelle zum Management und zur Konfiguration des Systems ist intuitiv und gut organisiert. Übersichtliche Konfiguration des Systems durch eine grafische Benutzeroberfläche (ISC). Manche Konfigurationsschritte müssen jedoch per Konsole durchgeführt werden. Dies erfordert eine Einarbeitung in die Konsolenbefehle. Gute Logging & Reporting Funktionen. Die Fehlerlogdateien liefern jedoch nicht immer den benötigten Detaillevel. Mittelmäßige Logging & Reporting Funktionen. Der Detailgrad der Fehlerlogdateien ist ausreichend (drei mögliche Abstufungen). Sehr gute Logging & Reporting Funktionen. Der Detailgrad kann beliebig genau eingestellt werden. Gute Performanz durch Redundanz (LoadSharing, Failover). Gute Performanz. Problem: Mehrfache Identity-Speicher werden nicht direkt unterstützt. Sehr gute Performanz (Failover, Load-Balancing). Hohe Anpassbarkeit (zahlreiche Programmierschnittstellen). Sehr hohe Anpassbarkeit (ca. 300 Programmierschnittstellen für Java, C, DCOM, JAAS, XML, SOAP etc.). Hohe Anpassbarkeit (Zugriff auf zahlreiche Java 2-, J2EEund JAAS- Implementierungen). CA etrust; IBM Directory Server; Lotus Domino LDAP; Microsoft Active Directory; Novell eDirectory; Oracle Internet Directory, Oracle Databases; Sun One Directory Server; Siemens DirX. CA etrust; Calendra; IBM Tivoli; Microsoft Active Directory, SQL Server 2000; OpenLDAP; Novell eDirectory; Oracle 8.1.7, Oracle Internet Directory; Sun One Directory Server; Sybase 12.5; Radiant Logic RadiantOne VDS; Siemens DirX. IBM Directory Server; Microsoft Active Directory; Novell eDirectory; Sun One Directory Server; Lotus Domino LDAP. Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Single Sign-On Ja Ja Ja Personalisierte Webseiten (basierend auf Nutzer-Attributen) Ja (Header oder Cookie) Ja (Header oder Cookie) Ja (Header) Management & Konfiguration Logging & Reporting Hohe Verfügbarkeit Anpassbarkeit Identity Management Integration von Datenbanken bzw. Verzeichnissen Ausgelagerte (Delegated) Administration Rollen-basierte Zugriffskontrolle Attribut-basierter Zugang Selbstregistrierung durch den Nutzer Zugangskontrolle 75 Kapitel 3: Einrichtung der Testumgebungen Real-time access revocation Ja Ja Ja Authentifizierungsmethoden SAML; Smartcards; X.509 Zertifikate; TwoFactor Tokens; Integrierte Windows Authentifizierung; RADIUS; Passwort; Biometrie; selbstdefinierte Authentifizierungsmethoden; HTML-Formular Authentifizierung. SAML;Passwort; Integrierte Windows Authentifizierung; HTML-Formular Authentifizierung; TwoFactor Authentifizierung (RSA SecurID & RSA Mobile); X.509 Zertifikate; selbstdefinierte Authentifizierungsmethoden. SAML; Passwort; HTMLFormular Authentifizierung; SecurID Token; X.509 Zertifikate; RACF Authentifizierung; Entrust TruePass; Biometrie; Micosoft Passport; selbstdefinierte Authentifizierungsmethoden; LTPA Authentifizierung. Agenten-basiert Ja Ja Ja (Reverse Proxy Ansatz wird jedoch bevorzugt) Reverse Proxy Server-basiert Ja Ja (RSA ACM) Ja (IBM WebSeal) SAML Unterstützt SAML 1.0/1.1 Unterstützt SAML 1.0/1.1 Unterstützt SAML 1.0 Liberty ID-FF Keine direkte Unterstützung. Es müssen Zusatzmodule installiert werden (TPSO, TPSI). Diese ermöglichen den Einsatz von Liberty IDFF 1.1. Momentan keine Unterstützung. Direkte Unterstützung des Liberty ID-FF 1.1 Protokolls. WS-Federation Nein Nein Ja WS-Security Nein Nein Ja Federated Identity Management Tabelle 3: Vergleich IAM-Softwareprodukte 3.5 Aufbau einer föderierten Systemumgebung Nach der Beschreibung der verwendeten Produkte soll die föderierte Systemarchitektur vorgestellt werden, die im Rahmen dieser Diplomarbeit aufgebaut wurde. Das Ziel dieser Architektur war es, die wechselseitige Interoperablität der Sicherheitslösungen im Bereich Federated Identity Management zu untersuchen und zu analysieren. Die zwischen den unterschiedlichen Systemen ausgetauschten Nachrichten basieren auf SAML 1.0/1.1. Die Liberty Alliance Protokolle bzw. das WS-Federation Protokoll wurde in dieser Diplomarbeit nicht getestet. 76 Kapitel 3: Einrichtung der Testumgebungen Um korrekte und nachvollziehbare Ergebnisse zu erhalten, wurden SAML-Anwendungsfälle (vgl. Kapitel 4) definiert. Anhand dieser Use-Cases wurde im Anschluss eine umfangreiche Produktevaluierung vorgenommen (vgl. Kapitel 5). Abbildung 20 zeigt die vernetzte Systemarchitektur auf einem hohen Abstraktionslevel. Ausgangspunkt sind drei unterschiedliche Domänen. Jede dieser drei Domänen wird von einer unterschiedlichen Sicherheitslösung kontrolliert und verwaltet. Der Austausch von Nachrichten zwischen den Föderationsprodukten erfolgt über SAMLRequests und SAML-Responses. Als Protokoll wird hierfür SOAP over HTTP verwendet. Domäne A WebServer mit Webagent Netegrity Siteminder Server SUN One LDAP-Verzeichnis SAML Request & Response Domäne B HTTP(S) Anfragen WebServer mit Webagent RSA Cleartrust & FIM Server Microsoft SQL Server 2000 SAML Request & Response Domäne C WebSeal IBM TAM & TFIM Server Abbildung 20: Föderierte heterogene Systemarchitektur 77 Tivoli Directory Server Kapitel 3: Einrichtung der Testumgebungen Alle drei verwendeten Identity/Access-Management-Produkte können sowohl als Identity Provider (Aussteller von SAML-Assertions) als auch als Service Provider (Empfänger von SAML-Assertions) fungieren. Für eine umfassende Interoperabilitätsüberprüfung müssen die in Kapitel 4 definierten Anwendungsfälle (engl. Use Cases) für folgende Einstellungen geprüft werden: • • • • • • Netegrity Siteminder 6.0 (IdP) – RSA Cleartrust 5.5 & RSA FIM 2.5 (SP) RSA Cleartrust 5.5 & RSA FIM 2.5 (IdP) - Netegrity Siteminder 6.0 (SP) IBM Tivoli Access Manager 5.1 & TFIM 6.0 (IdP) – Netegrity Siteminder 6.0 (SP) Netegrity Siteminder 6.0 (IdP) - IBM Tivoli Access Manager 5.1 & TFIM 6.0 (SP) RSA Cleartrust 5.5 & RSA FIM 2.5 (IdP) - IBM Tivoli Access Manager 5.1 & TFIM 6.0 (SP) IBM Tivoli Access Manager 5.1 & TFIM 6.0 (IdP) - RSA Cleartrust 5.5 & RSA FIM 2.5 (SP) Die folgenden Tabellen zeigen die im Rahmen dieser Diplomarbeit vorgenommenen Einstellungen der jeweiligen Softwareprodukte. Diese Informationen sind wichtig, damit ein IdP bzw. SP weiß, wohin er seine SAML-Requests bzw. SAML-Responses schicken soll. Der Austausch der Nachrichten erfolgt per SOAP over HTTP. Netegrity Siteminder 6.0 SP1 Hostadresse (fully qualified domain name) itacpi29.testeurope1.bmwgroup.com Inter-Site Transfer URL/Service (ISX) http://itacpi29.testeurope1.bmwgroup.com/site minderagent/smprofile.ccc?SMASSERTIONR EF=QUERY&NAME=<affiliate_name>&TAR GET=http://<consumer_site>/<target_page>&S MCONSUMERURL= <assertion_consumer _url >&AUTHREQUIREMENT=2 Assertion Retrieval/SOAP Binding Service URL https://itacpi29.testeurope1.bmwgroup.com:443 /affwebservices/assertionretriever Artifact Receiver Service URL https://itacpi29.testeurope1.bmwgroup.com:443 /affwebservices/public/samlcc Tabelle 4: SSO-Einstellungen Netegrity Siteminder RSA Cleartrust 5.5 & RSA FIM 2.5 Hostadresse (fully qualified domain name) itacpi09.testeurope1.bmwgroup.com 78 Kapitel 3: Einrichtung der Testumgebungen RSA Cleartrust 5.5 & RSA FIM 2.5 Inter-Site Transfer URL/Service (ISX) http://itacpi09.testeurope1.bmwgroup.com:7001 /samlassertingparty/AP?TARGET=http(s)://we b-server-host.target-domain/protected-resource Assertion Retrieval/SOAP Binding Service URL http:// itacpi09.testeurope1.bmwgroup.com: 7001/samlassertingparty/services/SamlRequest Artifact Receiver Service URL http://itacpi09.testeurope1.bmwgroup.com:7001 /samlrelyingparty/RP Tabelle 5: SSO-Einstellungen RSA FIM IBM TAM 5.1 & IBM TFIM 6.0 Hostadresse (fully qualified domain name) itahpi14.testeurope1.bmwgroup.com Inter-Site Transfer URL/Service (ISX) http://itahpi14.testeurope1.bmwgroup.com/FIM /sps/samlfed/saml/login?TARGET=http(s)://we b-server-host.target-domain/protected-resourc Assertion Retrieval/SOAP Binding Service URL https:// itahpi14.testeurope1.bmwgroup.com/ FIM/sps/samlfed/saml/soap Artifact Receiver Service URL https:// itahpi14.testeurope1.bmwgroup.com/ FIM/sps/samlfed/saml/login Tabelle 6: SSO-Einstellungen IBM FIM Der Inter-Site Transfer Service (ISX) befindet sich auf der Seite des IdPs. Er ist verantwortlich für die Initiierung des SAML Single Sign-On-Prozesses. Die Funktionsweise ist folgendermaßen: 1. Ein bereits authentifizierter Nutzer klickt auf einen Link (z.B. auf der IdP PortalWebseite), um den ISX-Dienst zu starten. 2. Der Webbrowser des Nutzers übergibt dem Dienst folgende Daten: ● Benutzerinformationen (wie z.B. User ID) in Form eines HTTP-Cookies, ● Einen Parameter TARGET, der die geschützte Webseite (auf Seite des SPs) spezifiziert, auf welche der Nutzer zugreifen will. 3. Benutzt der IdP das Browser/Artifact-Profil, so sendet der ISX-Dienst mittels des Browsers ein SAML-Artefakt an den SP. Der Artifact Receiver Service (ARS) befindet auf der Seite des Service Providers. Dieser Dienst empfängt SAML-Artefakte von Identity Providern (Browser/Artifact-Profile). Die Funktionsweise ist folgendermaßen [RSAFIM]: 79 Kapitel 3: Einrichtung der Testumgebungen 1. Der ARS verpackt das empfange Artefakt in eine SAML-Request-Nachricht und sendet diese an den Assertion Retrieval/SOAP Binding Service des verantwortlichen IdPs. 2. Der IdP antwortet mit einer passenden SAML-Assertion (SAML-Response). 3. Der SP validiert und verarbeitet die Assertion. 4. Der Browser leitet den Benutzer auf die gewünschte Webseite beim SP um. Der Assertion Retrieval/SOAP Binding Service befindet sich beim Identity Provider. Dieser Service akzeptiert SAML-Requests und antwortet darauf mit passenden SAML-ResponseNachrichten (enthalten SAML-Assertions) [RSAFIM]. Sowohl der Assertion Retrieval/SOAP Binding Service als auch der Artifact Receiver Service wird über einen URL angesprochen. Beim Aufbau einer vertrauenswürdigen Identitätsföderation muss eine Vielzahl von Informationen zwischen einem IdP und einem SP ausgetauscht und synchronisiert werden. Die nachfolgenden Aufzählungen geben einen Überblick über diesen Informationsaustausch. Ein Identity Provider muss allen seinen vertrauenswürdigen Service Providern folgende Einstellungen mitteilen: • • • • • Issuer ID – Eindeutiger Identifier eines IdPs, welcher innerhalb einer SAMLAssertion an den SP geschickt wird. Kennt ein SP die Issuer ID eines IdPs nicht, so werden SAML-Assertions, welche von diesem IdP ausgestellt wurden, als nicht vertrauenswürdig abgelehnt. Assertion Retrieval/SOAP Binding Service URL – siehe oben SOAP Connection Type – Art der Authentifizierung, die von einem IdP verwendet wird, um seinen SOAP Binding Service zu schützen (z.B. Basic Authentication). Source ID – Die SourceID wird benötigt, wenn das Browser/Artifact-Profil eingesetzt wird. Diese eindeutige ID (Base 64- oder Hexadezimal-Format) verweist auf den SOAP Binding Service URL eines IdPs. Durch diese ID weiß der SP, wohin er seinen SAML-Request schicken soll. Subject Name Qualifier – Jeder IdP mit einer Authentifizierungsautorität muss den SP den Wert des Subject Name Qualifiers mitteilen, welchen er in allen SAML <Subject>-Elementen verwendetet. Ein Service Provider muss den Identity Providern, welchen er vertrauen will, folgende Daten übermitteln: • • Artifact Receiver Service URL – siehe oben. Recipient Identifier URI (optional) – Ein SP vergleicht diesen URI mit der Empfänger-URI, die ihm von einem IdP innerhalb einer Assertion geschickt wird. 80 Kapitel 3: Einrichtung der Testumgebungen • Audience Identifier URI (optional) – Dieser URI wird vom SP mit der Liste der ''Audiences'' verglichen, die ihm innerhalb einer SAML-Assertion vom IdP geschickt wurden. Bezüglich folgender Informationen bzw. Einstellungen müssen sich beide Parteien einigen: • SAML Version – Festlegung der zu verwendenden SAML Version. • Profile Type – Festlegung, auf welchem SAML-Profil die Föderation basieren soll. • Subject Namespace – Namensraum, der für alle Subjekte innerhalb einer SAMLAssertion verwendet werden soll. • Subject/Name-Identifier Format – URI-Referenz, die für das Attribut Format innerhalb der Elemente <saml:NameIdentifier> einer SAML-Assertion verwendet werden soll (z.B. urn:oasis:names:tc:SAML:1.0:assertion#X509Subject Name). Das SAML 1.0/1.1 Browser Artifact Profil (BAP) benötigt einen sog. Back-Channel zwischen Identity und Service Provider. Über diesen Kanal werden SAML-Request- und korrespondierende SAML-Response-Nachrichten verschickt. Da SAML 1.0/1.1-Anfragen (SAML-Requests) nicht signiert werden können, wird eine Schutzmaßnahme auf der Transportebene benötigt, d.h., ein IdP muss eine eingehenden SAML-Request-Nachricht (SOAP über HTTP(S)) authentifizieren, bevor er diese verarbeiten kann. Die meisten föderierten Sicherheitslösungen bieten zwei unterschiedliche Möglichkeiten zur Authentifizierung eines Service Providers beim SOAP Endpoint (SOAP Binding Service URL) eines Identity Providers: ● ● Basic Authentication – Authentifizierung mittels einer UserID und einem Passwort. Bei dem Versuch eines SPs, auf den SOAP Binding Service eines IdPs zuzugreifen, sendet der Webserver des IdPs einen ''401 Authentication Required Header'' als Antwort auf die Anfrage. Der SP muss daraufhin Nutzernamen und Passwort zurücksenden, um Zugriff auf den Dienst des IdPs zu erhalten. Client-Zertifikat – Authentifizierung mittels eines Client-Zertifikats (z.B. X.509 ClientCertificate). Ein SP sendet ein Zertifikat an den IdP, um auf dessen SOAP Binding Service URL zuzugreifen. Damit die Authentifizierung erfolgreich sein kann, muss der IdP dem Zertifikat des Service Providers vertrauen. 81 Kapitel 4: Anwendungsfälle 4. Anwendungsfälle für ein föderiertes Identitätsmanagement In diesem Kapitel werden SAML-Anwendungsfälle definiert, die in einer komplexen föderierten Identitätsumgebung unterstützt werden sollten. Diese Use Cases sollen auf die Systemarchitektur angewendet werden, welche in Kapitel 3 vorgestellt wurde. Ziel ist es, anhand dieser Anwendungsfälle zu testen, inwieweit die Sicherheitslösungen der verschiedenen Hersteller bei der Föderierung von Identitäten interoperabel sind. Die tatsächliche Anwendung und Analyse der hier definierten Use-Cases wird in Kapitel 5 detailliert beschrieben. Jeder einzelne hier beschriebene Testfall soll für jede mögliche Kombination der verwendeten Sicherheits-Softwaresysteme durchgeführt werden. Da jedes dieser drei Softwaresysteme sowohl als Identity Provider als auch als Service Provider eingesetzt werden kann, ergeben sich für jeden Testfall sechs mögliche Kombinationen. Alle hier beschrieben Anwendungsfälle beziehen sich auf das SAML Browser/Artifact-Profil. Eine Kommunikation über das SAML Browser/POST-Profil wurde nicht geprüft, da dieses vom Netegrity Siteminder 6.0 SP1 nicht unterstützt wird [NeteFed]. 4.1 Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On Die SAML-basierte Föderierte Authentifizierung erfolgt durch den domänenübergreifenden Austausch von Nutzeridentitäten. Dazu müssen Authentication-Assertions ausgetauscht werden. Dies ermöglicht die Umsetzung eines Federated Single Sign-On Szenarios. Abbildung 21 zeigt den vollständigen Ablauf dieses Anwendungsfalls. Identity Provider Benutzer Service Provider Authentifizierung (z.B. Passwort) Zugriff Inter-Site Transfer URL Inter-Site Transfer Service Generierung einer SAML Auth.-Assertion + SAML Artefakt HTTP-Redirect HTTP-GET-Request (Parameter SAMLArt & TARGET) SAML-Request SOAP Binding Service SAML-Reponse Gewährung bzw. Verweigerung des Zugriffs auf die gewünschte Ressource Abbildung 21: Ablauf Föderierte Authentifizierung/Föderiertes Single Sign-On 82 Kapitel 4: Anwendungsfälle Um den SSO-Prozess einzuleiten, ruft der Benutzer zunächst eine Webseite beim Identity Provider auf, um sich dort zu authentifizieren. Die Authentifizierung erfolgt mittels einer geeigneten Authentifizierungsmethode (z.B. Username und Passwort). Anschließend wird beim IdP der lokale ISX-Dienst aufgerufen. Für eine erfolgreiche Unterstützung dieses Testfalls Sicherheitsprodukte folgende Schritte implementieren [FIM]: müssen die zu testenden Schritt 1: Aufbau des SAML-Artefakts Der Aufbau des SAML-Artefakts hat den Vorgaben aus [SAMLBind] Abschnitt 4.1.1.8 zu genügen. Bei einem fehlerhaften Aufbau des Artefakts sollte auf Seite des Service Providers eine Fehlermeldung erfolgen, da das Artefakt nicht korrekt verarbeitet werden kann. Ist der Artefakt entsprechend den Vorgaben der SAML-Spezifikation gültig, so gilt der Test als bestanden. Schritt 2: Übertragung des generierten SAML-Artefakts an den Service Provider Der Inter-Site Transfer-Dienst beim Identity Provider muss das generierte SAML-Artefakt an den Service Provider mittels HTTP-Redirect übertragen. Für die weitere Übertragung der Informationen vom Browser des Nutzers zum Artifact Receiver Service beim Service Provider muss ein HTTP-GET-Request verwendet werden. Dieser muss folgende Elemente enthalten: ● ● ● ● Das Ziel des Requests muss auf den URL des Artifact Receiver Services zeigen. Der Parameter SAMLArt muss das generierte SAML-Artefakt enthalten Der Parameter TARGET muss auf die gewünschte (geschützte) Ressource beim Service Provider verweisen. Der SourceID-Teil des übermittelten Artefakts muss der konfigurierten SourceID beim IdP entsprechen. Der Test ist erfolgreich, wenn der Service Provider alle obigen Informationen erfolgreich empfängt und das erhaltene SourceID-Element eindeutig einem vertrauenswürdigen IdP zugeordnet werden kann. Schritt 3: Anfordern der SAML-Assertion Um die korrespondierende SAML-Assertion zu erhalten, muss der SP das empfangene Artefakt an den durch die SourceID spezifizierten Identity Provider zurücksenden. Hierfür sendet der SP eine Anfrage in Form eines SAML-Requests (SOAP over HTTP) an den IdP. Um eine Konformität zur OASIS SAML-Spezifikation zu gewährleisten, muss der SAMLRequest folgende Elemente bzw. Attribute enthalten (vgl. Kapitel 2.4.3.3): ● RequestID 83 Kapitel 4: Anwendungsfälle ● MajorVersion MinorVersion IssueInstant ● <saml:AssertionArtifact>-Element mit dem Wert des übergebenen SAML- ● ● Artefakts Fehlt eines der obigen Elemente im SAML-Request, werden fehlerhafte Werte verwendet oder ist der Zeitpunkt (IssueInstant) nicht im UTC-Format (Universal Coordinated Time) [SAMLProt], so muss der Test als nicht bestanden betrachtet werden. Das gleiche gilt, wenn trotz korrekt übertragener Elemente eine Fehlermeldung beim IdP ausgelöst wird. In diesem Fall ist davon auszugehen, dass die SAML-Implementierung des verwendeten Sicherheitsprodukts nicht konform zur SAML-Spezifikation ist. Schritt 4: Übertragung der SAML-Assertion Empfängt ein IdP einen SAML-Request von einem vertrauenswürdigen SP und ist der darin enthaltene SAML-Artefakt zum ersten Mal benutzt worden (one-time-use), so muss der IdP die Anfrage mit einer SAML-Response beantworten. Diese Antwort muss gemäß der SAML-Spezifikation unbedingt folgende Elemente enthalten (vgl. Kapitel 2.4.3.3): ● ● ● ● ● ResponseID MajorVersion MinorVersion IssueInstant Status Der Test scheitert, wenn eines der Elemente fehlt bzw. fehlerhaft ist. Der Test misslingt ebenso, wenn die zuständige Software des Service Providers eine Fehlermeldung produziert, aus welchen Gründen auch immer. Schritt 5: Verarbeitung der empfangenen SAML-Assertion Zuerst muss vom Service Provider untersucht werden, ob die Syntax der empfangenen SAML-Response den Anforderungen der OASIS SAML-Spezifikation genügt. Als nächstes muss der SP den semantischen Teil der SAML-Response überprüfen. Die wichtigsten Punkte sind: ● <samlp:Status>-Element muss den Wert Success aufweisen. ● Assertion muss mindestens ein <saml:AuthenticationStatement> beinhalten. Das AuthenticationMethod-Attribut muss dabei folgenden Wert besitzen: urn:oasis:names:tc:SAML:1.0:am:password. Dieser Wert gilt sowohl für SAML 1.0 als auch für SAML 1.1. 84 Kapitel 4: Anwendungsfälle ● ● Alle Assertions verwenden <saml:Subject>-Elemente. Folgende Anforderungen sind zu erfüllen: 1) Das <saml:NameIdentifier>-Element beinhaltet ein Format-Attribut mit dem Wert: urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName (SAML 1.0) bzw. urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName (SAML 1.1). 2) Alle <saml:Subject>-Elemente verwenden ein NameQualifier-Attribut innerhalb des Tags <saml:NameIdentifier>. 3) Als Wert für das <saml:NameIdentifier>-Element muss ein X.509 Subjektname verwendet werden. Enthält die Assertion ein <saml:Subject>-Element, so muss diese auch ein <saml:SubjectConfirmation>-Element enthalten. Das darin enthaltene <saml:ConfirmationMethod>-Element muss folgenden Wert besitzen: urn:oasis:names:tc:SAML:1.0:cm:artifact-01 (SAML 1.0) bzw. urn:oasis:names:tc: SAML:1.0:cm:artifact (SAML.1.1). Werden diese oder andere Punkte der offiziellen SAML-Spezifikation (SAML 1.0/1.1) nicht erfüllt, so muss der SP die Verarbeitung der SAML-Assertion unverzüglich abbrechen und eine entsprechende Fehlermeldung ausgeben. Werden die obigen Anforderungen hingegen erfüllt, so muss der SP die in der SAMLAssertion enthaltene Benutzeridentität (z.B. UserID) extrahieren, um diese im Anschluss auf eine lokale Identität in seinem Benutzerverzeichnis abzubilden. Dieser Vorgang wird UserMapping genannt. Zwei Arten von Abbildungen sollten von den Softwareprodukten unterstützt werden: ● ● 1:1 Mapping – Abbildung eines entfernten Nutzers (gespeichert in einer Datenbank beim IdP) auf einen lokalen Nutzer (gespeichert in einer Datenbank beim SP). n:1 Mapping – Abbildung mehrer Benutzer beim IdP auf einen Nutzereintrag beim SP. Dieses Mapping Szenario hat den Vorteil, dass eine Gruppe von Nutzern authentifiziert werden kann, ohne das für jeden einzelnen Benutzer ein lokaler Datenbankeintrag verwaltet werden muss. Kann der SP den in einer SAML-Assertion übergebenen entfernten Benutzer auf einen lokalen Benutzereintrag abbilden, so ist der Test erfolgreich bestanden. Schritt 6: Generierung von SSO-Cookies Damit der SSO-Vorgang erfolgreich abgeschlossen werden kann, muss der SP ein oder mehrere Session-Cookie(s) im Browser des Nutzers ablegen, damit dieser übergangslos, d.h. ohne erneute Authentifizierung, auf die geschützte Ressource zugreifen kann. 85 Kapitel 4: Anwendungsfälle Der Test ist bestanden, wenn der SP die Cookies im Browser des Nutzers ablegt und diesen anschließend zur gewünschten Ressource weiterleitet. Am Ende muss der User Zugriff auf die Ressource(n) haben. 4.2 Anwendungsfall: Föderierter Attribut-Austausch Ein weiterer wichtiger Use-Case, neben Federated SSO, ist der domänenübergreifende Austausch von Nutzerattributen (wie z.B. Kontostände, Rollen etc.). Anhand dieser übertragenen Attribute eines Nutzers kann ein SP seine Dienste für den jeweiligen Benutzer personalisieren. Beim Austausch von User-Attributen unterscheidet SAML zwischen impliziter Übertragung und expliziter Nachfrage. Implizit bedeutet, dass beim IdP von Anfang an (statisch) festgelegt wird, welche Attribute an einen bestimmten SP übertragen werden sollen. Explizit heißt, dass der SP Nutzerattribute dynamisch (z.B. nach dem Erhalt einer Authentication-Assertion) beim IdP anfordern kann. Als Vorraussetzung für beide Fälle muss der Identity Provider eine Datenbank verwalten, in der die verschiedenen Nutzerattribute hinterlegt werden. Diese sollen dann auf Wunsch ausgelesen und in Form einer SAML Attribute-Assertion an den SP verschickt werden. Fall 1: Implizite Übertragung von Nutzerattributen Die implizite Übertragung von Nutzerattributen an einen Service Provider erfolgt mit Hilfe eines <saml:AttributeStatement>-Elements im Rahmen einer SAML-Assertion. Dieses Statement wird zusammen mit einem <saml:AuthenticationStatement>-Element an den Service Provider übertragen. Die Anforderungen hinsichtlich der Generierung und Übertragung dieses Statements wurden bereits im obigen Anwendungsfall “Föderierte Authentifizierung” ausführlich beschrieben. Der erste Teil des Tests ist bestanden, wenn Attributwerte SAML-konform an einen Service Provider übertragen werden können. Der zweite Teil des Tests betrifft den Empfang und die Verarbeitung der Attributwerte durch den Service Provider. Dazu muss der SP im ersten Schritt die Syntax des <saml:AttributeStatement>-Elements prüfen. Im Anschluss muss er die enthaltenen Attribute extrahieren, damit diese den internen Applikationen und Diensten zur Verfügung gestellt werden können. Der Test ist erfolgreich, wenn die Attributdaten eines Testnutzers von einer Testapplikation (z.B. Servlet oder JSP-Seite) ausgelesen und angezeigt werden können. Fall 2: Explizite Übertragung von Nutzerattributen Bei einer expliziten Nachfrage bzgl. bestimmter Attribute eines Nutzers sendet der Service Provider einen SAML Attribute-Request an den Attribut-Dienst beim IdP. Dieser Attribut86 Kapitel 4: Anwendungsfälle Dienst besitzt Zugriffsrechte auf das gewünschte Nutzerprofil und kann Attributsanfragen eines Service Providers verarbeiten und entsprechend beantworten. Die Anfrage des SPs muss ein <samlp:AttributeQuery>-Element enthalten. Dieses muss den Regeln der SAML Protocol Spezifikation entsprechen (vgl. Kapitel 2.4.3.3). Beim IdP muss die Anfrage-Nachricht auf ihren syntaktisch korrekten Aufbau hin überprüft werden. Werden innerhalb der Anfrage explizite Namen von Attributen angegeben, so muss der IdP die korrespondierenden Werte in einer SAML Attribute-Response zurückgeben. Fehlt dagegen eine explizite Angabe von Attributsnamen, so werden alle Attribute eines Nutzers zurückgegeben, sofern die Sicherheitsregeln des IdPs ein derartiges Vorgehen erlauben. Die Antwortnachricht des IdPs enthält im erfolgreichen Fall ein <saml:AttributeStatement>-Element. Dieses enthält die gewünschten Name/WertPaare des Nutzers. Der Empfang und die Verarbeitung der Attributinformationen erfolgen analog zu Fall 1. Der detaillierte Ablauf dieses Anwendungsfalls wird in Abbildung 22 dargestellt. In diesem Ablaufdiagramm wird davon ausgegangen, dass der SP bereits eine SAML AuthenticationAssertion vom IdP erhalten hat. Benutzer Identity Provider Service Provider SAML Attribute-Request SOAP Binding Service Generierung einer SAML Attribute-Assertion SAML Attribute-Response Autorisierung des Nutzers Gewährung bzw. Verweigerung des Zugriffs auf die gewünschte Ressource Abbildung 22: Ablauf Föderierter Attribut-Austausch (explizite Übertragung) Können alle oben genannten Anforderungen sowohl vom IdP als auch vom SP erfüllt werden, so ist der Test erfolgreich abgeschlossen. 4.3 Anwendungsfall: Lokale Autorisierung Da unterschiedliche Benutzer meist auch unterschiedliche Berechtigungen bzgl. bestimmter Ressourcen haben, wird über eine Authentifizierung hinaus oftmals auch eine feingranulare Autorisierung benötigt. Im Federated Identity Szenario existieren mehrere Möglichkeiten, eine solche Autorisierung durchzuführen. Eine Möglichkeit ist, dass die Autorisierung direkt vom Service Provider übernommen wird (lokale Autorisierung). Die andere Möglichkeit ist eine entfernte Autorisierung durch einen IdP bzw. eine vertrauenswürdige dritte Partei. Zuerst soll der einfachere der beiden Testfälle, die lokale Autorisierung, betrachtet werden. 87 Kapitel 4: Anwendungsfälle In diesem Szenario liegen Policy-Daten in einem Repository beim SP, d.h., dort wird auch die Autorisierung eines Nutzers vorgenommen. Vorraussetzung zur Umsetzung dieses Use-Cases ist die Definition einer Policy, welche für die Nutzung einer Testapplikation bestimmte Zugriffsrechte erwartet (wie z.B. Kontostand des Nutzers >= 1000). Anschließend sollen verschiedene Testnutzer (mit unterschiedlichen Zugriffsattributen) definiert werden, damit eine umfassende Evaluierung dieses Anwendungsfalls möglich wird. Bezüglich der lokalen Autorisierung müssen zwei Fälle unterschieden werden: 1.Fall: 1:1 Account-Linking zwischen IdP und SP In diesem Fall werden ausgewählte Nutzer bzw. Nutzerkonten beim IdP per User-Mapping 1:1 auf eine Datenbank beim SP abgebildet. Schickt nun der IdP eine Nutzeridentität innerhalb einer SAML-Assertion an den SP, so kann dieser die übergebene Identität auf eine entsprechende lokale Identität innerhalb der eigenen Datenbank abbilden. Die Daten dieses lokalen Benutzerkontos können anschließend zur Autorisierung verwendet werden. Der Test ist erfolgreich, wenn der SP mit Hilfe eines lokalen Nutzerprofils und einer vorher festgelegten Policy eine Autorisierung bzgl. einer Testapplikation durchführen kann. 2.Fall: Übertragung von Autorisierungsinformationen an den SP Wie im ersten Fall, führt auch hier der SP die Autorisierung durch, jedoch mit dem Unterschied, dass diesmal die Zugriffsrechte bzw. das Nutzerprofil eines Nutzers nicht beim SP, sondern ausschließlich beim IdP in gespeicherter Form vorliegen. Damit der SP dennoch eine Autorisierungsentscheidung treffen kann, müssen die Zugriffsrechte eines Benutzers vom IdP an den SP übertragen werden. SAML erlaubt die Übertragung von Autorisierungsinformationen im Rahmen von <saml:AttributeStatement>-Elementen (siehe Kapitel 4.2). Die Daten innerhalb eines <saml:AttributeStatement> müssen als Name/Wert-Paar ausdrückbar sein. Der Testfall ist erfolgreich, wenn der SP die Attribute aus der erhaltenen SAML-Assertion verwenden kann, um einen Testnutzer auf Basis einer vorhandenen Policy bzgl. einer bestimmten Ressource zu autorisieren. 4.4 Anwendungsfall: Entfernte (Remote) Autorisierung In diesem Testszenario befindet sich der Policy Decision Point entweder direkt beim Identity Provider oder bei einer vertrauenswürdigen dritten Partei (z.B. Kreditkarteninstitut). Dort wird entschieden, ob ein Benutzer ausreichende Berechtigungen hat, um auf die gewünschte Ressource beim SP zuzugreifen. Da SAML keine Möglichkeit bietet, Policyinformationen bei einem SP abzufragen bzw. diese an einen entfernten Policy Decision Point zu übertragen, muss sich in diesem Fall das Policy-Repository beim IdP bzw. bei einer vertrauenswürdigen dritten Stelle befinden. Diese Form der Autorisierung wird als entfernte (Remote) Autorisierung bezeichnet. 88 Kapitel 4: Anwendungsfälle Hinsichtlich der entfernten Autorisierung müssen wieder zwei Fälle unterschieden werden: 1.Fall: Statische Übertragung von Autorisierungsinformationen an den SP Beim Aufruf von Ressourcen eines SPs wird direkt beim IdP überprüft, ob der Nutzer hierzu berechtigt ist. Das positive (Permit) bzw. negative Ergebnis (Deny) dieser Überprüfung wird in ein <saml:AuthorizationDecisionStatement>-Element (vgl. Kapitel 2.4.3.2) verpackt und an den Policy Enforcement Point (z.B. Webagent) des betreffenden SPs übertragen. Ist die Syntax der übermittelten SAML-Assertion korrekt, so muss der SP anhand der übergegeben Informationen entscheiden, ob der Zugriff auf die angeforderte Ressource erlaubt oder verweigert werden soll. Wird der Zugriff genehmigt, so gewährt der Policy Enforcement Point dem Browser des Nutzers Zugriff auf die gewünschte Ressource. Wird der Zugriff hingegen verweigert, so erfolgt die negative Antwort in Form einer HTTPStatusmeldung. Diese beiden Möglichkeiten müssen mit entsprechenden Eingabedaten getestet werden, um das Verhalten des jeweiligen Policy Enforcement Points überprüfen zu können 2.Fall: Dynamische Anforderung von Autorisierungsinformationen Dieses Szenario ist vor allem dann interessant, wenn neben einem IdP und mehreren SP eine vertrauenswürdige dritte Partei hinzukommt, die unterschiedliche Autorisierungsfunktionen wahrnehmen soll. Dazu muss der SP nach der Authentifizierung eines Benutzers eine Autorisierungsanfrage (SAML Authorization-Request) an diese vertrauenswürdige Partei schicken. Der übermittelte SAML-Request enthält dabei ein <saml:AuthorizationDecisionQuery>-Element (vgl. Kapitel 2.4.3.3). Damit die vertrauenswürdige dritte Partei eine Entscheidung treffen kann, werden die übermittelten Autorisierungsdaten anhand vorhandener Policies geprüft. Das Ergebnis wird, wie auch schon im 1.Fall, in ein <saml:AuthorizationDecisionStatement> verpackt und in Form einer SAML-Response-Nachricht an den SP geschickt. Der Test ist erfolgreich, wenn der SP eine Autorisierungsanfrage (SAML AuthorizationRequest) erstellen bzw. verschicken kann und diese geeignet mit einer Autorisierungsentscheidung (SAML Authorization-Response) beantwortet wird. Ähnlich zum 1.Fall soll dieser Use Case wieder mittels unterschiedlicher Eingabedaten geprüft werden. Der detaillierte Ablauf dieses Anwendungsfalls wird in Abbildung 23 dargestellt. In diesem Ablaufdiagramm wird davon ausgegangen, dass der SP bereits eine SAML AuthentificationAssertion vom IdP erhalten hat. 89 Kapitel 4: Anwendungsfälle Benutzer Identity Provider Service Provider SAML Authorization -Request SOAP Binding Service Autorisierung des Nutzers Generierung einer SAML Authorization-Assertion SAML Authorization-Response Gewährung bzw. Verweigerung des Zugriffs auf die gewünschte Ressource Abbildung 23: Ablauf Entfernte Autorisierung (dynamisch) 4.5 Anwendungsfall: Föderiertes Single Logout Ziel dieses Anwendungsfalls ist ein globaler Logout auf allen besuchten Systemen. Hierzu muss beim SP ein Benachrichtigungssystem (engl. Notification System) vorhanden sein, welches den IdP über den Logout eines Nutzers informiert. Um einen globalen Logout durchführen zu können, muss sich der IdP alle die SP merken, bei denen der betreffende Nutzer eine aktive Session (Cookie) unterhält. Bekommt ein IdP von einem SP den Befehl zum Logout eines Nutzers, so werden alle aktiven Sessions des Nutzers beendet. Obwohl SAML 1.0/1.1 kein Single Logout-Protokoll spezifiziert, soll getestet werden, ob dieser Use Case dennoch durch die verwendeten Softwaresysteme unterstützt wird. Der Test besteht aus zwei Teilen: ● ● Ein SP muss den zuständigen IdP mittels einer Nachricht über den Logout eines Nutzers informieren können. Ein IdP muss auf Anfrage eines Benutzers all seine bestehenden Browser-Sitzungen beenden. Der Test ist erfolgreich, wenn nach dem Logout eines Testnutzers all seine aktiven Sessions durch den verantwortlichen IdP beendet werden. 90 Kapitel 5: Umsetzung und Analyse 5. Umsetzung und Analyse Dieses Kapitel widmet sich der Umsetzung und der Analyse der in Kapitel 4 definierten Anwendungsfälle. Diese Use-Cases wurden auf die in Kapitel 3.5 vorgestellte föderierte Systemumgebung angewendet. Die Testergebnisse der Untersuchungen sollen zeigen, inwieweit die verwendeten Produkte bzgl. des föderierten Austauschs von Identitäten untereinander interoperabel sind. Für auftretende Probleme während der Tests werden im Rahmen dieser Diplomarbeit Lösungsvorschläge erbracht und - wenn möglich - werden diese auch gleich umgesetzt bzw. implementiert. Das Endergebnis der Interoperablitätsbetrachtungen soll Unternehmen wie der BMW AG zum einen Aufschluss über den Aufwand geben, der nötig ist, um eine föderierte Identitätsumgebung mit Partnerunternehmen aufzubauen und zum anderen soll festgestellt werden, inwieweit eine Föderierung von Identitäten beim Einsatz von heterogenen Softwaresystemen überhaupt möglich ist. Als Szenario für die Testphase wurde – basierend auf dem Browser/Artifact-Profil - das SAML IdP-Site-First Szenario verwendet. In diesem generischen Webszenario loggt sich ein Benutzer auf einer Portalseite ein, um sich zu authentifizieren. Diese wird vom IdP geschützt. Anschließend greift der Nutzer - mittels eines Inter-Site Transfer URLs (Link auf der Portalseite) - auf eine geschützte Demo-Webapplikation der SP-Seite zu. Der Ablauf gestaltet sich folgendermaßen (vgl. Abb. 21 in Kapitel 4): 1. Ein unauthentifizierter Nutzer besucht mit einem Browser seiner Wahl die IdPPortalseite. 2. Der Nutzer wird von der Authentifizierungsautorität des IdPs aufgefordert, sich zu authentifizieren. Die erforderlichen Benutzerdaten speichert der IdP in einem UserVerzeichnis oder in einer User-Datenbank. 3. Nach der erfolgreichen Authentifizierung klickt der Benutzer auf den gewünschten Inter-Site Transfer URL (Link auf der Portalseite), um auf eine geschützte Webapplikation eines SPs zuzugreifen. 4. Die SAML-Autorität des IdPs erstellt eine SAML-Assertion und einen zugehörigen Artefakt für den Benutzer. 5. Das Artefakt wird mit Hilfe des Browsers an den Artifact Receiver Service des SPs geschickt. 6. Der SP verpackt das übermittelte SAML-Artefakt in eine SAML-Request-Nachricht und schickt diese an den SOAP Binding Service des IdPs. 7. Der IdP übergibt die gewünschte SAML-Assertion an den SP. 8. Der SP extrahiert die Nutzerdaten aus der SAML-Assertion und speichert eine Reihe von Session-Cookies im Browser des Benutzers. 9. Der Benutzer erhält Zugriff auf die Ressource beim SP. 91 Kapitel 5: Umsetzung und Analyse Zwischen IdP und SP werden in den Testszenarios jeweils folgende Nutzerdaten ausgetauscht: 1. Benutzer Admin: a. uid: admin b. businesscategory: gold 2. Benutzer JDoe a. uid:jdoe b. businesscategory: bronze Diese Nutzerkonten müssen in den nachfolgenden Interoperabilitätstests auf SAML-Subjekte abgebildet bzw. aus denselbigen extrahiert werden. Die Mapping-Funktion darf dabei durch einen beliebigen Algorithmus ausgeführt werden. Für die Tests, die im Rahmen dieser Diplomarbeit stattfinden, sollen X.509 Subjektnamen verwendet werden. Diese müssen mit dem Relative Distinguished Name (RDN) uid beginnen (z.B. uid=admin). Die folgenden Unterpunkte zeigen die Ergebnisse der durchgeführten Interoperabilitätstests. Da außerhalb der eigentlichen Testreihe noch das Szenario “Netegrity Siteminder 6.0 (IdP) – Netegrity SAML Affiliate Agent 6.0 (SP)” aufgenommen wurde, existieren anstatt der im vorherigen Kapitel angekündigten sechs nun sieben Kombinationen, die geprüft und analysiert werden mussten. 5.1 Testszenario Netegrity Siteminder 6.0 (IdP) – SAML Affiliate Agent 6.x QMR2 (SP) Auf der Seite des Identity Providers (Host: itacpi29.testeurope1.bmwgroup.com) existierte eine vollständige Siteminder 6.0 SP1 Installation. Auf der Seite des Service Providers (Host: itacpi09.testeurope1.bmwgroup.com) befand sich ausschließlich ein SAML Affiliate Agent 6.x QMR2 (d.h. kein Netegrity Policy Server o.ä.). 5.1.1 Konfiguration der Testumgebung Der SAML Affiliate Agent (vgl. Kapitel 3.1.2) unterstützt ausschließlich den SAML 1.0 Standard. SAML 1.1 wird in der Version 6.x QMR2 nicht unterstützt. Deshalb erfolgte der Austausch von SAML-Assertions in dieser Testumgebung auf Basis von SAML 1.0. In Tabelle 7 wird detailliert aufgeschlüsselt, welche Teile der SAML-Standards vom Netegrity Siteminder bzw. SAML Affiliate Agent verwendet bzw. unterstützt werden. Siteminder 6.0 SP1 SAML Affiliate Agent 6.x QMR2 Syntax SAML 1.0 Ja Ja Syntax SAML 1.1 Ja Nein 92 Kapitel 5: Umsetzung und Analyse SAML BAP (Browser Artifact Profile) Ja Ja SAML BPP (Browser Post Profile) Nein Nein SAML SOAP over HTTP Binding Ja Ja SAML Authentication Request Ja Ja SAML Authentication Response Ja Nein SAML Attribute Request Nein Nein SAML Attribute Response Nein Nein SAML Authorization Request Nein Nein SAML Authorization Response Nein Nein Tabelle 7: SAML-Features Netegrity Siteminder vs. SAML Affiliate Agent Tabelle 8 zeigt Einstellungen der Testumgebung, welche verwendet wurden, um eine funktionierende Identity Federation zwischen dem SP (SAML Affiliate Agent) und dem IdP (Netegrity Siteminder) zu erreichen. Hostadresse SP itacpi09.testeurope1.bmwgroup.com Hostadresse IdP itacpi29.testeurope1.bmwgroup.com SSL Interceptor Root URL https://itacpi09.testeurope1.bmwgroup.com:443/smafa/amts/test1.htm Portal Query Root URL http://itacpi29.testeurope1.bmwgroup.com:80/siteminderagent/smprofile.ccc SOAP Binding Service URL https://itacpi29.testeurope1.bmwgroup.com:443/affwebservices/assertionretriever IdP Portal Website URL http://itacpi29.testeurope1.bmwgroup.com/protected/portal.html SP Demo Website URL http://itacpi09.testeurope1.bmwgroup.com/affiliate.asp BAP SourceID (Hex) b818452610a0ea431bff69dd346aeeff83128b6a Issuer http://www.netegrity.com/SiteMinder Subject Name Qualifier www.netegrity.com Tabelle 8: Einstellungen Netegrity Siteminder & SAML Affiliate Agent Der SOAP Binding Service URL des Netegrity Siteminders wurde durch die Authentifizierungsmethode Basic Authentication geschützt. Ein Schutz des URLs auf Basis von Client-Zertifikaten war nicht möglich. 5.1.2 Test der Anwendungsfälle Computer Associates bietet mit dem SAML Affiliate Agent eine einfache Möglichkeit, in Verbindung mit dem Netegrity Siteminder Softwareprodukt (Policy Server + Webagent) eine Federated Single Sign-On Umgebung aufzubauen. Ob neben SSO auch weitere Use-Cases unterstützt werden, soll dieses Kapitel zeigen. 93 Kapitel 5: Umsetzung und Analyse Tabelle 9 zeigt die untersuchten Anwendungsfälle und die jeweilige Unterstützung durch den SAML Affiliate Agent im Überblick. Eine genaue Analyse der einzelnen Use-Cases folgt im Anschluss. Use Cases Erfolgreich getestet Föderierte Authentifizierung/Föderiertes Single Sign-On Ja Föderierter Attribut-Austausch Ja Lokale Autorisierung Nein Entfernte (Remote) Autorisierung Nein Föderierter Single Logout Ja Tabelle 9:Testergebnisse - Netegrity Siteminder (IdP) & SAML Affiliate Agent (SP) Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On Wie zu erwarten war, wird dieser Use-Case vom SAML Affiliate Agent unterstützt. Der Authentifizierungsprozess wurde vom Siteminder-Produkt (IdP) übernommen. Dort wurden auch die SAML Authentication-Assertions für den Nutzer generiert und gespeichert. Auf Anfrage (SAML-Request) wurden diese Assertions an den SAML Affiliate Agent geschickt. Dort wurde geprüft, ob die übermittelte SAML-Assertion von einem vertrauenswürdigen IdP ausgestellt wurde. Am Ende des SSO-Vorgangs wurde sowohl vom Netegrity Siteminder als auch vom SAML Affiliate Agent ein Session-Cookie erstellt und im Browser des Nutzers gespeichert. Der Testfall „Föderierte Authentifizierung/Föderiertes Single Sign-On“ wurde erfolgreich getestet, d.h., alle in Kapitel 4.1 definierten Schritte konnten in dieser Testumgebung erfolgreich umgesetzt werden. Trotz der erfolgreichen Umsetzung des Anwendungsfalls muss an dieser Stelle jedoch bemerkt werden, dass die von der SAML-Autorität des Netegrity Siteminders ausgestellten SAML-Assertions nicht vollständig konform zum offiziellen OASIS SAML-Standard waren. Ein konkretes Beispiel für einen SAML-Request (erstellt vom SAML Affiliate Agent) und eine daraufhin übermittelte SAML-Response Nachricht (erstellt vom Siteminder Assertion Generator) befindet sich im Anhang A.3.1 dieser Diplomarbeit. Anwendungsfall: Föderierter Attribut-Austausch Ein föderierter Austausch von Attributen ist mit dem SAML Affiliate Agent 6.x QMR2 und dem Netegrity Siteminder 6.0 SP1 generell möglich. Potentielle Attribute wurden vom Assertion-Generator des Netegrity Siteminder Produkts in ein <saml:AttributeStatement>-Element verpackt und im Rahmen einer SAML Authentication-Assertion an den SAML Affiliate Agent verschickt (vgl. Kapitel 4.2 Fall 1). Die Generierung von eigenständigen SAML Attribute-Response Nachrichten wird momentan 94 Kapitel 5: Umsetzung und Analyse von der Siteminder SAML-Autorität nicht unterstützt. Aus diesem Grund war es dem SAML Affiliate Agent nicht möglich, Attribute vom IdP dynamisch anzufordern, d.h., SAML Attribute-Requests bzw. SAML Attribute-Responses wurden in diesem Testszenario nicht unterstützt. Der 2. Fall des Use-Cases „Föderierter Attributaustausch“ (vgl. Kapitel 4.2) konnte deshalb nicht umgesetzt werden. Aus diesem Grund musste die SAML-Autorität des Netegrity Siteminders stets von vornherein wissen, welche Attribute einem SAML Affiliate Agent zugestellt werden sollten. Schickte die Netegrity SAML-Autorität Attribute in einer Attribute-Assertion an den SAML Affiliate Agent, so extrahierte dieser die vorhanden Attribut/Wert-Paare und stellte sie seinen Webapplikationen (hier: affiliate.asp) zur Verfügung. Die übertragenen Attribute konnten vom SAML Affiliate Agent entweder in Form von Header-Variablen oder innerhalb von Cookies den Anwendungen zur Verfügung gestellt werden. In der verwendeten Testumgebung wurde der beschriebene Anwendungsfall getestet, indem das Attribut businesscategory für den Nutzer Admin bzw. JDoe erfolgreich innerhalb einer SAML-Assertion an den SAML Affiliate Agent übermittelt werden konnte (siehe Anhang A.3.1). Der Wert des Attributs konnte von der Testapplikation affiliate.asp angezeigt werden. Anwendungsfall: Lokale Autorisierung Eine lokale Autorisierung auf Basis von 1:1 Account Linking (vgl. Kapitel 4.3 1.Fall) oder auf Basis von übermittelten Attributen (vgl. Kapitel 4.3 2.Fall) wurde vom SAML Affiliate Agent nicht unterstützt, da der Agent keine Möglichkeit zur Autorisierung bot. Anwendungsfall: Entfernte (Remote) Autorisierung Da das aktuelle Netegrity Siteminder Produkt (Version 6.0 SP1) weder SAML AuthorizationAssertion-Requests (<saml:AuthorizationDecisionQuery>) noch entsprechende Responses (<saml:AuthorizationDecisionStatement>) unterstützt, war eine entfernte Autorisierung in Verbindung mit dem SAML Affiliate Agent nicht möglich, d.h., weder eine statische Übertragung (vgl. Kapitel 4.4 1.Fall) noch eine dynamische Anforderung (vgl. Kapitel 4.4 2.Fall) von Autorisierungsinformationen konnten in dieser Testumgebung realisiert werden. Anwendungsfall: Föderiertes Single Logout Single Logout wird in der Version 6.x QMR2 des SAML Affiliate Agents unterstützt. Möglich ist dies durch das Shared-Session-Model des Netegrity Siteminders. Dieses Modell erstellt eine zentrale Session für einen Nutzer und speichert diese auf der Seite des IdPs. Dabei kann der Affiliate Agent mit dem IdP interagieren, um festzustellen, ob die aktuelle Session noch gültig ist oder ob sie terminiert werden soll. Dabei überprüft der SAML Affiliate Agent periodisch, ob die Session auf der Seite des IdPs noch aktiv ist. 95 Kapitel 5: Umsetzung und Analyse Das Shared Session Modell ermöglicht ein Single Logout für zwei Fälle: • • Ein Nutzer hat die Möglichkeit, sich aktiv von jeder Affiliate- (SP) oder Portal-Site (IdP) auszuloggen. Loggt sich ein User an einer Affiliate-Site aus, so wird dem IdP dies sofort (per XML-Nachricht) mitgeteilt. Dieser beendet die Shared-Session des Benutzers. Dies entspricht einem sofortigen globalen Logout. Hat ein Nutzer während seiner gültigen Session verschiedene Affiliate-Sites besucht, so gilt dieser Logout für alle besuchten SP. Ein Nutzer kann aufgrund einer aktiven Session solange auf Ressourcen der Affiliateund Portal-Seite zugreifen bis der Wert MaxTimeoutEnabled (konfigurierbar beim IdP) überschritten wurde. Danach wird der Nutzer automatisch ausgeloggt. Jedes Mal, wenn der Affiliate Agent (SP) überprüft, ob noch eine aktive Session besteht, erneuert der Netegrity Siteminder (IdP) den Zeitstempel beim Portal. Dadurch wird verhindert, dass dieser automatisch ausgeloggt wird. Die Tests konnten für beide Fälle erfolgreich durchgeführt werden. 5.1.3 Fazit Computer Associates bietet mit dem SAML Affiliate Agent eine einfache Möglichkeit, in Verbindung mit dem Netegrity Siteminder Softwareprodukt (Policy Server + Webagent) eine Federated Single Sign-On Umgebung aufzubauen. Der SAML Affiliate Agent kann jedoch nur auf der Seite des SPs eingesetzt werden, da der Agent keine Möglichkeit zur Authentifizierung bzw. Autorisierung von Nutzern anbietet. Ein sicherlich großer Vorteil des SAML Affiliate Agents ist die relativ einfache Installation und Konfiguration. Partner können sich somit - ohne großen Aufwand - mit einem Unternehmen, welches als IdP fungiert, verbinden. Die Daten, die bei der Installation bzw. Konfiguration benötigt werden, müssen im Wesentlichen von der Seite des IdPs geliefert werden. Deswegen mussten die meisten Probleme, die während der Tests mit dem SAML Affiliate Agent auftraten, auf der Seite des IdPs (Netegrity Siteminder 6.0 SP1) gelöst werden. Ein weiterer Vorteil des SAML Affiliate Agents ist die Unterstützung eines föderierten Single Logouts. Dieser Use-Case wird momentan nur von wenigen anderen Access/Identity-Management-Software Herstellern unterstützt. Einem umfassenden Einsatz des SAML Affiliate Agents steht jedoch die fehlende Kompatibilität zu Softwareprodukten anderer Hersteller im Wege, d.h., der Affiliate Agent kann ausschließlich mit dem hauseigenen Produkt Siteminder verbunden werden. Hier wäre es sicherlich sinnvoll, wenn Computer Associates in kommenden Versionen eine allgemeinere Schnittstelle definieren würde, damit eine Federated Identity Umgebung auch mit Produkten anderer Hersteller umgesetzt werden kann. Ein weiteres Problem ergibt sich, wenn ein SAML Affiliate Agent mehreren IdP den Zugriff auf eine oder mehrere gleiche Ressourcen gewähren soll. Um dies zu erreichen, müssten die Ressourcen dupliziert bzw. in vielfacher Ausfertigung gespeichert werden, da der Zugriff auf 96 Kapitel 5: Umsetzung und Analyse eine bestimmte Ressource in der XML-Datei AffiliateConfig.xml stets nur einem bestimmten IdP zugeordnet werden kann. In zukünftigen Versionen des SAML Affiliate Agents wäre es deshalb wünschenswert, wenn gleiche Ressourcenadressen auch mehreren IdPs zugeordnet werden können. Ein weiterer Fortschritt wäre sicherlich auch eine Unterstützung von SAML AuthorizationAssertions. Dadurch könnte der Anwendungsfall „Entfernte Autorisierung” umgesetzt werden. Dazu müsste jedoch auch das Netegrity Siteminder Produkt Authorization-Assertions unterstützen. Dies ist im Moment jedoch nicht der Fall. Trotz dieser Probleme bietet der SAML Affiliate Agent eine einfache Möglichkeit für Unternehmen, schnell und effizient eine sichere Web Single Sign-On Umgebung mit Partnerunternehmen aufzubauen. Für komplexe föderierte Identitätsumgebungen, die über ein SSO hinausgehen, ist der SAML Affiliate Agent jedoch nicht zu empfehlen. 5.2 Testszenario Netegrity Siteminder 6.0 (IdP) – RSA Cleartrust 5.5 & FIM 2.5 (SP) Auf Identity Provider Seite (Host: itacpi29.testeurope1.bmwgroup.com) existierte nach wie vor eine vollständige Siteminder 6.0 SP1 Installation. Auf der Service Provider Seite (Host: itacpi09.testeurope1.bmwgroup.com) befand sich diesmal eine Installation des RSA Cleartrusts 5.5 und des RSA Federated Identity Managers 2.5. 5.2.1 Konfiguration der Testumgebung Der Austausch von SAML-Assertions basierte anfangs auf SAML 1.1. Da jedoch während der Tests Probleme mit dieser Version aufgetreten sind, wurde die Kommunikation auf SAML 1.0 umgestellt. In Tabelle 10 wird wieder detailliert aufgeschlüsselt, welche Teile der SAML-Standards vom Netegrity Siteminder 6.0 SP1 bzw. RSA Federated Identity Manager 2.5 verwendet bzw. unterstützt werden. Siteminder 6.0 SP1 Federated Identity Manager 2.5 Syntax SAML 1.0 Ja Ja Syntax SAML 1.1 Ja Ja SAML BAP (Browser Artifact Profile) Ja Ja SAML BPP (Browser Post Profile) Nein Ja SAML SOAP over HTTP Binding Ja Ja SAML Authentication Request Ja Ja SAML Authentication Response Ja Ja SAML Attribute Request Nein Ja SAML Attribute Response Nein Ja SAML Authorization Request Nein Nein 97 Kapitel 5: Umsetzung und Analyse SAML Authorization Response Nein Nein Tabelle 10: SAML-Features Netegrity Siteminder vs. RSA FIM Tabelle 11 zeigt Einstellungen der Testumgebung „Netegrity Siteminder – RSA Federated Identity Manager“. Hostadresse SP itacpi09.testeurope1.bmwgroup.com Hostadresse IdP itacpi29.testeurope1.bmwgroup.com Artifact Receiver Service URL http://itacpi09.testeurope1.bmwgroup.com:7001/samlrelyingparty/RP SOAP Binding Service URL https://itacpi29.testeurope1.bmwgroup.com:443/affwebservices/assertionretriever IdP Portal Website URL http://itacpi29.testeurope1.bmwgroup.com/protected/portal.html SP Demo Website URL http://itacpi09.testeurope1.bmwgroup.com/protected.php BAP SourceID (Hex) b818452610a0ea431bff69dd346aeeff83128b6a Issuer http://www.netegrity.com/SiteMinder Subject Name Qualifier http://www.netegrity.com/SiteMinder Tabelle 11: Einstellungen Netegrity Siteminder & RSA FIM Der SOAP Binding Service wurde durch den Authentifizierungstyp Basic Authentication geschützt. Ein Schutz des URLs auf Basis von Client-Zertifikaten wäre jedoch auch möglich gewesen. 5.2.2 Test der Anwendungsfälle In dieser Testumgebung wurde der Netegrity Siteminder 6.0 SP1 als Identity Provider und RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5 als Service Provider eingesetzt. Tabelle 12 zeigt einen Überblick bzgl. der Testergebnisse. Use Cases Erfolgreich getestet Föderierte Authentifizierung/Föderiertes Single Sign-On Ja Föderierter Attribut-Austausch Ja Lokale Autorisierung Ja Entfernte (Remote) Autorisierung Nein Föderierter Single Logout Nein Tabelle 12: Testergebnisse – Netegrity Siteminder (IdP) & RSA FIM (SP) 98 Kapitel 5: Umsetzung und Analyse Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On Dieser Anwendungsfall konnte letztendlich erfolgreich umgesetzt werden. Dazu musste eine Vielzahl aufgetretender Probleme gelöst werden. Dies umfasste unter anderem die Konzeption und die Implementierung eines Java-Plugins. Dieses musste in den AssertionGenerator des Netegrity Siteminders integriert werden. Die Bemühungen, die nötig waren, damit dieser Use Case erfolgreich umgesetzt werden konnte, werden im Folgenden detailliert erläutert. Dazu soll die Umsetzung des Testfalls Schritt für Schritt analysiert werden (vgl. Kapitel 4.1): Schritt 1: Aufbau des SAML-Artefakts Das SAML-Artefakt (generiert vom Netegrity Siteminder) entsprach den Anforderungen der SAML-Spezifikation. Der Test war somit erfolgreich bestanden. Schritt 2: Übertragung des generierten SAML-Artefakts an den Service Provider Der Artifact Receiver Service des RSA Federated Identity Managers empfing erfolgreich ein SAML-Artefakt (generiert und übermittelt vom Netegrity Siteminder). Darüber hinaus referenzierte der übergebene Parameter TARGET die gewünschte Ressource (http://itacpi09.testeurope1.bmwgroup.com/protected.php) beim Service Provider. Auch dieser Test war damit erfolgreich bestanden. Schritt 3: Anfordern der SAML-Assertion Die erfolgreiche Durchführung dieses Schritts erforderte die Lösung zahlreicher Probleme. Diese Probleme sollen im Folgenden beschrieben und die entsprechenden Lösungen vorgestellt werden: 1. Problem: Der SAML-Request (generiert vom RSA Federated Identity Manager) konnte anfangs nicht erfolgreich an den Assertion Retriever/SOAP Binding Service (URL: https://itacpi29.testeurope1.bmwgroup.com:443/affwebservices/assertionretriever) übermittelt werden, da die im SAML-Request enthaltene SourceID dem IdP (Netegrity Siteminder) unbekannt war. Lösung: Die SourceID, welche in der erschaffenen Trusted Asserting Party (innerhalb des RSA Federated Identity Managers) konfiguriert wurde, musste dem IdP (Netegrity Siteminder) mitgeteilt werden. Dazu musste das Feld Company Source ID in der verantwortlichen Siteminder Affiliate-Konfiguration entsprechend dieser SourceID gesetzt werden. 2. Problem: Das Zeitformat des IssueInstant-Attributs (IssueInstant="2005-0225T11:31:56") innerhalb des übermittelten SAML-Requests konnte nicht erfolgreich 99 Kapitel 5: Umsetzung und Analyse vom Netegrity Siteminder geparst werden. Das Siteminder Produkt stoppte den SSOProzess mit folgender Fehlermeldung: java.text.ParseException: Unparseable date: "2005-02-25T11:31:56Z" Der Grund hiefür war der Umstand, dass der Netegrity Siteminder 6.0 SP1 ein Zeitformat mit einer Genauigkeit von Millisekunden erwartete (z.B. IssueInstant="2005-0225T11:31:56.000Z"). In der SAML-Spezifikation 1.0/1.1 ist für das Attribut IssueInstant ein UTC-Format (Typ xsd:datetime) vorgeschrieben. Dieses erlaubt sowohl eine Zeitangabe mit einer Genauigkeit von Millisekunden (YYYYMMDD-HH:MM:SS.sss) als auch eine Zeitangabe mit einer Genauigkeit von Sekunden (YYYYMMDDHH:MM:SS). Die genaue Definition des UTC-Formats kann unter [W3CSchema] Abschnitt 3.2.7.1 eingesehen werden. Die SAML-Implementierung des Netegrity Siteminders 6.0 SP1 war damit hinsichtlich dieses Punktes nicht konform zur SAML-Spezifikation 1.0/1.1, da von diesem Produkt ausschließlich UTC-Zeitformate mit einer Genauigkeit von Millisekunden akzeptiert wurden. Lösung: Auf Anfrage stellte die Support-Abteilung von Computer Associates das "Webagent OptionPack 6.0 HF03" Hotfix zur Verfügung. Nach der Installation dieses Hotfixes unterstützte der Netegrity Siteminder auch UTC-Zeitformate mit einer Genauigkeit von Sekunden. Nach der Behebung dieser beiden Probleme konnte auch dieser Testschritt erfolgreich abgeschlossen werden. Der SAML-Request (siehe Anhang A.3.2) des RSA Federated Identity Managers enthielt alle erforderlichen Elemente (inklusive SAML-Artefakt). Zudem konnte der übermittelte SAML-Artefakt erfolgreich vom Netegrity Siteminder extrahiert werden, um anschließend die SAML-Assertion für den entsprechenden Nutzer zu referenzieren. Schritt 4: Übertragung der SAML-Assertion Die SAML-Response-Nachricht des Netegrity Siteminders konnte anfangs nicht erfolgreich an den RSA Federated Identity Manager übermittelt werden, da kein sicherer SSL-Back Channel aufgebaut werden konnte. Der Grund hierfür war ein unbekanntes Zertifikat auf der Seite des RSA Federated Identity Managers. Um dieses Problem zu beheben, wurde das ROOT-Zertifikat des SPs der AM-keystore-Datei des Netegrity Siteminders hinzugefügt. Diese Datei muss alle Zertifikate der vertrauenswürdigen Partner enthalten, zu denen SSLVerbindungen aufgebaut werden sollen. Nach dem Hinzufügen des ROOT-Zertifikats konnte der SSL-Back Channel erfolgreich etabliert und die SAML-Response-Nachricht an den SP (RSA FIM) übermittelt werden. Diese SAML-Response enthielt neben einer Authentication Assertion alle erforderlichen Attribute (vgl. Anhang A.3.2). Auch dieser Test war damit bestanden. 100 Kapitel 5: Umsetzung und Analyse Schritt 5: Verarbeitung der empfangenen SAML-Assertion Die erfolgreiche Umsetzung dieses Schrittes erforderte einen erheblichen Aufwand. Es ergaben sich folgende Probleme, die gelöst werden mussten: 1. Problem: Der Wert für das Attribut ResponseID (ResponseID="10.250.23.22. 1111141685076") konnte vom SP (RSA FIM) nicht fehlerfrei geparst werden. Daraufhin wurde der SSO-Prozess vom SP mit folgender Fehlermeldung abgebrochen: The server encountered the following unexpected condition: Error in RSA Federated Identity Manager: Error encountered in Relying Party servlet: com.rsa.csf.common.exceptionbase.CsfApplicationException: Error in Relying Party while processing Asserting Party response: ; nested exception is: org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '10.250.23.22.1111141685076' is not a valid value for 'NCName'. Die SAML-Spezifikation 1.1 fordert xsd:ID als Typformat für das Attribut ResponseID. Die genaue Definition für dieses Attribut kann unter [SAMLProt] Abschnitt 1.2.3 gefunden werden. Der Typ xsd:ID ist abgeleitet vom Typ xsd:NCName [RelaxSchema]: <xsd:simpleType name="ID" id="ID"> <xsd:restriction base="xsd:NCName"/> </xsd:simpleType> Ein String vom Typ xsd:NCName muss mit einem Buchstaben oder einem Unterstrich ('_') beginnen. Ansonsten ist der String nicht konform bzgl. des Typs xsd:NCName [XMLName]. Diese Regel wurde jedoch - wie oben ersichtlich - vom Assertion-Generator des Netegrity Siteminders (ResponseID="10.250.23.22.1111141685076") verletzt, d.h., auch hier ist die SAML-Autorität des Netegrity Siteminders 6.0 SP1 nicht konform zur SAML Spezifikation 1.1. Lösung: Um dieses Problem zu beheben, wurde die Kommunikation zwischen dem IdP und dem SP auf SAML 1.0 (anstatt SAML 1.1) umgestellt. Die SAML-Spezifikation 1.0 fordert für das Attribut ResponseID anstatt xsd:ID den Typ IDType. Die Definition ist folgendermaßen [SAMLCore10]: <simpleType name="IDType"> <restriction base="string"/> </simpleType> Dieser Typ erlaubt somit auch Strings, welche mit einer Zahl statt einem Buchstaben oder Unterstrich beginnen. 2. Problem: Der Assertion-Generator des Netegrity Siteminders definiert eine Reihe von Elementen bzw. Attributen innerhalb seiner Authentication-Assertions, die bzgl. der SAML-Spezifikation 1.0 nicht konform sind. Deshalb war die SAML-Autorität des RSA Federated Identity Managers nach wie vor nicht in der Lage, eine SAML-Assertion 101 Kapitel 5: Umsetzung und Analyse (ausgestellt vom Netegrity Siteminder) erfolgreich zu parsen. Das RSA Produkt löste dabei folgende Fehlermeldung aus: The server encountered the following unexpected condition: Error in RSA Federated Identity Manager: Error encountered in Relying Party servlet: com.rsa.csf.common.exceptionbase.CsfApplicationException: Error in Relying Party while processing Asserting Party response: ; nested exception is: java.lang.NullPointerException Ursache für diese Fehlermeldung war das Attribut Format innerhalb des Elements <saml:NameIdentifier>. Netegrity Siteminder übertrug für dieses Attribut folgenden ungültigen Wert: Format=''urn:oasis:names:tc:SAML:1.0:assertion". Die SAML-Spezifikation 1.0 erlaubt jedoch nur folgende Werte [SAMLCore10 Abschnitt 2.4.2.1]: ● urn:oasis:names:tc:SAML:1.0:assertion#emailAddress ● urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName ● urn:oasis:names:tc:SAML:1.0:assertion#WindowsDomainQualifiedName Lösung: Die Lösung dieses Problems erforderte einen erheblichen Aufwand. Es musste eigens ein Java-Plugin (vgl. Anhang A.1) geschrieben und an den Assertion-Generator des Netegrity Siteminders angebunden werden. Dieses Plugin war in der Lage, ausgehende SAMLAssertions, welche standardmäßig von der SAML-Autorität des Netegrity Siteminders ausgestellt wurden, abzuändern, bevor diese über einen SOAP-Kanal an den Service Provider verschickt wurden. Das Plugin wurde immer dann aufgerufen, wenn eine SAML-Assertion vom Netegrity Siteminder generiert wurde. Diese Standard-Assertion wurde in Form eines Java-DOM-Baums [DOM] an das Plugin übergeben. Aus Gründen der Performanz wurde für jeden einzelnen Plugin-Aufruf ein eigener Document-Handler initialisiert. Das selbstgeschriebene Netegrity Assertion-Generator-Plugin führte folgende Änderungen an dem übergebenen DOM-Baum durch: ● ● ● Abänderung des Attributs Format auf den OASIS-konformen Wert ''urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName''. Hinzufügen eines <saml:SubjectConfirmation>-Elements und eines <saml:ConfirmationMethod>-Elements mit dem Wert ''urn:oasis:names:tc: SAML:1.0:cm:artifact-01'' [SAMLCore10 Abschnitt 2.4.2.3]. Abänderung des Attributs AuthenticationMethod auf den URI-Wert ''urn:oasis:names:tc:SAML:1.0:am:password''. 102 Kapitel 5: Umsetzung und Analyse Nach der Beendigung aller oben genannten Tätigkeiten gab das Java-Plugin die geänderte SAML-Assertion als String zurück. Dieser konnte nun von der zuständigen SiteminderKomponente über den Back-Channel an den Service Provider weitergeleitet werden. Nach der Behebung aller bisher erwähnten Probleme (Umstellung auf SAML 1.0; Integration eines Java-Plugins) konnte der SP (RSA Cleartrust & FIM 2.5) die - in der SAML-Assertion übergebene - UserID (z.B. Admin) extrahieren und erfolgreich auf einen lokalen Datenbankeintrag abbilden (1:1 Mapping). Dieser Teilschritt konnte somit erfolgreich abgeschlossen werden. Schritt 6: Generierung von SSO-Cookies Trotz der erfolgreichen Authentifizierung des Nutzers in Schritt 5 konnte dieser nicht mit seinem Browser auf die Ressource protected.php zugreifen (Error 404). Die RSA Webagent Logdatei meldete einen Fehler bei der Validierung des erstellten SSO-Cookies. Dieses Problem konnte durch die zwei folgenden Maßnahmen behoben werden: ● ● Hinzufügen der Zeile "cleartrust.aserver.token_version=1" in die Konfigurationsdatei des RSA Authorization Servers. Der RSA Cleartrust 5.5 stellt - verglichen mit der Vorgängerversion - ein neues TokenFormat zu Verfügung, welches standardmäßig verwendet wird. Da der verwendete RSA Webagent 2.5 dieses neue Format nicht unterstützt, musste eine Umstellung auf das alte Token-Format (Version 1) vorgenommen werden. Abänderung der Zeile "cleartrust.agent.cookie_ip_check=Yes" auf "cleartrust.agent.cookie_ip_check=No" innerhalb der RSA Webagent Konfigurationsdatei. In einem erstellten SSO-Cookie wird u.a. die IP-Adresse derjenigen Partei gespeichert, welche dieses Cookie generiert hat. Der RSA Webagent 2.5 überprüft nun standardmäßig, ob das erstellte SSO-Cookie von einer vertrauenswürdigen Partei ausgestellt wurde. Dazu überprüft der Webagent unter anderem auch die IP-Adresse, welche in diesem Cookie gespeichert ist. Die Support-Abteilung von RSA Security wies jedoch darauf hin, dass in manchen Systemumgebungen diese IP-Kontrolle einen Fehler bei der Validierung des erstellten SSO-Cookies auslösen kann. In diesen Fällen wird empfohlen, die IP-Überprüfung zu deaktivieren. Nach der Durchführung dieser beiden Maßnahmen konnte das RSA SSO-Cookie erfolgreich in den Browser des Nutzers abgelegt werden. Dieser hatte damit vollen Zugriff auf die geschützte Ressource protected.php des Service Providers. Anwendungsfall: Föderierter Attribut-Austausch Basierend auf den oben genannten Lösungsansätzen konnte die implizite Übertragung von Nutzerattributen erfolgreich getestet werden. Da die standardmäßigen Attributelemente einer 103 Kapitel 5: Umsetzung und Analyse Netegrity SAML-Assertion jedoch nicht konform zur OASIS SAML-Spezifikation waren, mussten am Java-Plugin, welches in den Netegrity Assertion-Generator integriert wurde, folgende Erweiterungen vorgenommen werden: ● ● Methode zur Entfernung des Attributs xmlns:SM aus dem Header einer SAMLAssertion. Methode zur Umwandlung aller proprietären <SM:NVpair>-Elemente (innerhalb des Tags <saml:AttributeStatement>) in OASIS-konforme Attributelemente <saml:Attribute>. Nach der Durchführung dieser Änderungen konnten Attribute eines Nutzers - kompatibel zum SAML-Standard - in einer Attribute-Assertion (zusammen mit einer AuthentificationAssertion) an den Service Provider (RSA Federated Identity Manager 2.5) übermittelt werden. Nach der Authentifizierung des Nutzers konnte die RSA SAML-Autorität die Attribute extrahieren und diese als Header-Variablen seinen Webapplikationen zur Verfügung stellen. In der verwendeten Testumgebung wurde der beschriebene Anwendungsfall getestet, indem das Attribut businesscategory für den Nutzer Admin bzw. JDoe erfolgreich innerhalb des Elements <saml:AttributeStatement> an den RSA Federated Identity Manager übermittelt werden konnte (siehe Anhang A.3.2). Dieses Attribut konnte von der Testapplikation protected.php angezeigt werden. Eine explizite Übertragung von Nutzerattributen auf Anfrage wurde in diesem Testszenario nicht unterstützt. Der RSA Federated Identity Manager bietet zwar die Möglichkeit, mittels eines SAML Attribute-Requests (enthält <saml:AttributeQuery>) eine explizite Attributanforderung an einen IdP zu stellen, jedoch wird eine solche Anfrage vom Netegrity Siteminder nicht unterstützt (vgl. 5.1.2 Anwendungsfall: Föderierter Attributaustausch). Anwendungsfall: Lokale Autorisierung Die Umsetzung dieses Testfalls war nahezu problemlos möglich. Beide Fälle (vgl. Kapitel 4.3) wurden vom RSA Produkt (RSA Cleartrust 5.5 bzw. Federated Identity Manager 2.5) erfolgreich unterstützt. Damit eine lokale Autorisierung ausgeführt werden konnte, mussten sog. SmartRules [RSAAdmin] innerhalb des RSA Cleartrust Systems definiert werden. Diese Regeln konnten verwendet werden, um einen User - anhand seiner Attribute bzw. Attributwerte - für eine Ressource zu autorisieren. Beispiel einer SmartRule: Erlaube Zugriff, wenn das Attribut businesscategory eines Nutzers x gleich dem Wert ''Gold'' ist (businesscategory=''Gold''). In der Testumgebung wurde genau dieses Beispiel umgesetzt. Ein Benutzer (authentifiziert beim SP mittels einer SAML-Assertion) erhält Zugriff auf die Applikation protected.php, 104 Kapitel 5: Umsetzung und Analyse wenn dieser ein Attribut businesscategory mit dem Wert ''Gold'' besitzt. Dieser Test wurde sowohl für den Nutzer Admin (businesscategory=''Gold'') als auch für den Nutzer JDoe (businesscategory=''Bronze'') durchgeführt. Wie beabsichtigt, erhielt der Nutzer Admin Zugriff auf die Ressource protected.php. Dem Benutzer JDoe hingegen wurde der Zugriff aufgrund mangelnder Berechtigung verweigert. Der Fall ''1:1 Account-Linking zwischen IdP und SP'' wurde somit erfolgreich getestet. Wie zu Beginn bereits angekündigt, wurde auch der zweite Fall (''Übertragung von Autorisierungsinformationen an den SP'') in dieser Testumgebung unterstützt. Dazu musste das geforderte Attribut businesscategory vom Netegrity Siteminder innerhalb einer SAML Attribute-Assertion an den RSA Federated Identity Manager übertragen werden (vgl. Kapitel 5.2.2 Anwendungsfall: Föderierter Attributaustausch). Dieses übertragene Attribut wurde dann von der RSA SAML-Autorität extrahiert und der Authentifizierungsstelle des RSA Cleartrusts übergeben. Der Rest verlief analog zum Fall ''1:1 Account-Linking zwischen IdP und SP''. Anwendungsfall - Entfernte (Remote) Autorisierung Dieser Testfall konnte nicht getestet werden, da weder der Netegrity Siteminder 6.0 SP1 noch der RSA Federated Identity Manager 2.5 die Verwendung von Authorization-Assertions unterstützt. Im Zuge der Unterstützung von SAML 2.0 hat RSA jedoch angekündigt, den Austausch und die Anfrage von SAML Authorization-Assertions in der nächsten Version des Federated Identity Managers zu ermöglichen. Anwendungsfall: Föderiertes Single Logout Der Netegrity Siteminder unterstützt den Testfall Single Logout ausschließlich in Kombination mit dem hauseigenen Produkt SAML Affiliate Agent. Ein Single Logout in Verbindung mit dem RSA Produkt war somit - bei Einsatz des SAML-Protokolls - nicht möglich. Eine Möglichkeit, diesen Use Case dennoch umzusetzen, wäre der Umstieg auf das Liberty ID-FF Protokoll (anstatt SAML 1.0/1.1). Der Einsatz dieses Protokolls wurde jedoch im Rahmen dieser Diplomarbeit nicht getestet, da dieses von der aktuellen Version des RSA FIM 2.5 nicht unterstützt wird. 5.2.3 Fazit Wie die obige Analyse der einzelnen Anwendungsfälle zeigt, ist eine Interoperabilität zwischen den Produkten Netegrity Siteminder 6.0 SP1 und dem RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5 zu weiten Teilen gegeben (3 von 5 Testfällen werden unterstützt). Es hat sich jedoch gezeigt, dass dies nicht, wie oft von den Softwareherstellern behauptet, ohne Probleme und Aufwand möglich war. Als Hauptquelle für die aufgetretenen Probleme konnte ganz klar der Netegrity Siteminder 6.0 SP1 ausgemacht werden. Besonders 105 Kapitel 5: Umsetzung und Analyse problematisch war dabei die unausgereifte SAML-Autorität dieses Produkts. Im Laufe der Tests konnten zahlreiche Inkompatibilitäten bzgl. der OASIS SAML-Standards festgestellt werden. Um diese Fehlerquellen zu beseitigen, war teilweise ein erheblicher Aufwand nötig (wie z.B. die Integration eines umfangreichen Java-Plugins in den Assertion Generator des Netegrity Siteminders). Im Vergleich dazu hat der RSA Federated Identity Manager 2.5 in diesem Testszenario nur wenige Probleme bereitet. Zudem bot das RSA Produkt mit der Definition von SmartRules eine einfache Möglichkeit, entfernte Benutzer, deren Identität innerhalb einer SAML-Assertion übertragen wurde, feingranular - basierend auf Nutzerattributen - zu autorisieren. 5.3 Testszenario Netegrity Siteminder 6.0 (IdP) – IBM TAM 5.1 & TFIM 6.0 (SP) Wie in den beiden vorangegangenen Testszenarios fungierte der Netegrity Siteminder 6.0 SP1 auch hier als Identity Provider (Host: itacpi29.testeurope1.bmwgroup.com). Als Service Provider wurden diesmal die IBM Produkte Tivoli Access Manager 5.1 und Tivoli Federated Identity Manager 6.0 (Beta) eingesetzt (Host: itahpi14.testeurope1.bmwgroup.com). 5.3.1 Konfiguration der Testumgebung Die Beta-Version des Tivoli Federated Identity Managers 6.0 unterstützt momentan ausschließlich SAML 1.0. Aus diesem Grund musste der SAML 1.0 Standard als Basis für das vorliegende Testszenario verwendet werden. Die SAML-Autorität des Identity Providers (Netegrity Siteminder) wurde dementsprechend konfiguriert. In Tabelle 13 werden wie gewohnt die SAML-Fähigkeiten der beiden verwendeten Produkte gegenübergestellt, um gemeinsame Schnittmengen erkennen zu können. Siteminder 6.0 SP1 IBM Tivoli FIM 6.0 Syntax SAML 1.0 Ja Ja Syntax SAML 1.1 Ja Nein SAML BAP (Browser Artifact Profile) Ja Ja SAML BPP (Browser Post Profile) Nein Ja SAML SOAP over HTTP Binding Ja Ja SAML Authentication Request Ja Ja SAML Authentication Response Ja Ja SAML Attribute Request Nein Nein SAML Attribute Response Nein Nein SAML Authorization Request Nein Nein SAML Authorization Response Nein Nein Tabelle 13: SAML-Features Netegrity Siteminder vs. IBM TFIM 106 Kapitel 5: Umsetzung und Analyse Tabelle 14 zeigt die verwendeten Einstellungen bzgl. der Testumgebung „Netegrity Siteminder – IBM TFIM“. Hostadresse SP itahpi14.testeurope1.bmwgroup.com Hostadresse IdP itacpi29.testeurope1.bmwgroup.com Artifact Receiver Service URL https://itahpi14.testeurope1.bmwgroup.com/FIM/sps/samlfed/saml/login SOAP Binding Service URL https://itacpi29.testeurope1.bmwgroup.com:443/affwebservices/assertionretriever IdP Portal Website URL http://itacpi29.testeurope1.bmwgroup.com/protected/portal.html SP Demo Website URL http://itacpi14.testeurope1.bmwgroup.com/protected.jsp BAP SourceID (Hex) b818452610a0ea431bff69dd346aeeff83128b6a Issuer http://www.netegrity.com/SiteMinder Subject Name Qualifier http://www.netegrity.com/SiteMinder Tabelle 14: Einstellungen Netegrity Siteminder & IBM TFIM Der SOAP Binding Service URL des Netegrity Siteminders wurde durch einen ClientZertifikat-Mechanismus geschützt. Ein Schutz dieses URLs mittels des Authentifizierungstyps Basic-Authentication war in diesem Testszenario nicht möglich. Der Tivoli Federated Identity Manager unterstützt als Service Provider ausschließlich eine Authentifizierung über Client-Zertifikate. Die Authentifizierungsmethode Basic Authentication wird nur dann unterstützt, wenn das IBM-Produkt als Identity Provider auftritt. 5.3.2 Test der Anwendungsfälle In dieser Testumgebung wurde der Netegrity Siteminder 6.0 SP1 als Identity Provider und der IBM Tivoli Access Manager 5.1 & Federated Identity Manager als Service Provider eingesetzt. Tabelle 15 zeigt einen Überblick bzgl. der Testergebnisse. Use Cases Erfolgreich gestestet Föderierte Authentifizierung/Föderiertes Single Sign-On Nein Föderierter Attribut-Austausch Nein Lokale Autorisierung Nein Entfernte (Remote) Autorisierung Nein Föderierter Single Logout Nein Tabelle 15: Testergebnisse - Netegrity Siteminder (IdP) & IBM TFIM (SP) 107 Kapitel 5: Umsetzung und Analyse Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On Eine vollständige Umsetzung dieses Testfalls war nicht erfolgreich. Da alle nachfolgenden Use-Cases von diesem elementaren Anwendungsfall abhingen, konnten auch diese nicht erfolgreich getestet werden. Die Gründe hierfür werden in der folgenden Analyse detailliert dargelegt. Um die Ursachen für das Scheitern dieses Use Cases erläutern zu können, wurde der Testfall wieder Schritt für Schritt analysiert (vgl. Kapitel 4.1): Schritt 1: Aufbau des SAML-Artefakts Das SAML-Artefakt (generiert vom Netegrity Siteminder) entsprach den Anforderungen der SAML-Spezifikation. Dieser Test war somit erfolgreich bestanden. Schritt 2: Übertragung des generierten SAML-Artefakts an den Service Provider Bevor dieser Teilschritt erfolgreich gestestet werden konnte, musste ein Problem auf der Seite des Service Providers (IBM Federated Identity Manager) behoben werden. Nach der Übermittlung des SAML-Artefakts, wurde der SSO-Prozess beim SP mit folgender Fehlermeldung unterbrochen: FBTSML004E The request received an artifact with succinct ID: AAG4GEUmEKDqQxv/ad00au7/gxKLavQXWyLiWENOYGuPvq3e8kAYQd5R, which did not match a known partner identity provider. Dies bedeutete, dass die SourceID - gewonnen aus dem übermittelten SAML-Artefakt - dem SP unbekannt war. Die Lösung dieses Problems erforderte eine manuelle Bearbeitung der Konfigurationsdatei feds.xml des TFIMs. In dieser Datei musste an entsprechender Stelle (Element <SAML.PartnerSuccinctID>) die SourceID des Identity Providers (Netegrity Siteminder) eingetragen werden. Dadurch konnte das Problem gelöst und die Übertragung des SAML-Artefakts fehlerfrei vollzogen werden. Der Artifact Receiver Service des Tivoli Federated Identity Managers empfing erfolgreich einen SAML-Artefakt (generiert und übermittelt vom Netegrity Siteminder). Darüber hinaus zeigte der übergebene Parameter TARGET auf die gewünschte Ressource (http://itahpi14.testeurope1.bmwgroup.com/protected.jsp) beim Service Provider. Auch dieser Teil des Anwendungsfalls war damit erfolgreich abgeschlossen. Schritt 3: Anfordern der SAML-Assertion Dieser Teilschritt konnte nicht erfolgreich getestet werden. Der eingehende SAML-Request wurde vom Identity Provider (Netegrity Siteminder) nicht akzeptiert. In der Logdatei affwebservices.log fand sich folgende Fehlermeldung: Mai 18, 2005 1:42:53.235 PM[16291471:I] Here's the information on the request for the Assertion: Mai 18, 2005 1:42:53.235 PM[16291471:I] Requesting Host: itahpi14.muc Mai 18, 2005 1:42:53.235 PM[16291471:I] Requesting Host IP: 10.250.21.78 108 Kapitel 5: Umsetzung und Analyse Mai 18, 2005 1:42:53.235 PM[16291471:I] Request protocol: HTTP/1.1 Mai 18, 2005 1:42:53.250 PM[16291471:E] Affiliate User Name not found. Affiliate user name could not be retrieved from the HTTP request object. Dieser Fehler tritt gewöhnlich dann auf, wenn die REMOTE_USER-Variable nicht korrekt beim Netegrity Siteminder gesetzt wurde. Der SP sendet einen HTTP-Authorization-Header bei dem Versuch, auf den SOAP Endpoint des Identity Providers (Netegrity Siteminder) zuzugreifen. Dieser versucht daraufhin, den REMOTE_USER Header auszulesen, um sicherzustellen, dass genau der SP die generierte SAML-Assertion erhält, für den sie bestimmt ist. Der IdP generiert die Fehlermeldung „Affiliate User Name not found“, wenn der REMOTE_USER-Header nicht ausgelesen werden kann. Auf Vorschlag der Support-Abteilung von Computer Associates wurden folgende Maßnahmen unternommen, um dieses Problem zu beseitigen: Es wurde sichergestellt, dass die Variable RemoteUserVar im entsprechenden Agent Configuration Object des Netegrity Siteminders auf Yes gesetzt war. Zusätzlich wurde überprüft, ob die Account Security Settings des verwendeten Microsoft IIS Webservers entsprechend den Vorgaben der Netegrity Siteminder Konfiguration eingestellt war. Leider konnte keiner der oben genannten Lösungsvorschläge dieses Problem beheben. Dies hatte zur Folge, dass keiner der nachfolgenden Schritte dieses Anwendungsfalls getestet werden konnte. Aus diesem Grund konnte eine Zusammenarbeit der verwendeten Softwareprodukte für diesen Testfall nicht verifiziert werden. Anwendungsfall: Föderierter Attribut-Austausch Da es nicht gelang, SAML-Assertions zwischen den verwendeten Sicherheitslösungen auszutauschen, konnte dieser Anwendungsfall nicht getestet werden. Dass ein föderierter Austausch von Attributen jedoch theoretisch möglich ist, zeigt das Testszenario „Netegrity Siteminder 6.0 SP1 (IdP) – RSA Cleartrust 5.5 & RSA FIM 2.5 (SP)“ (siehe Kapitel 5.2.2). Anwendungsfall : Lokale Autorisierung Aus denselben Gründen wie beim obigen Anwendungsfall konnten auch hier keine Tests durchgeführt werden. Wie die Versuche in Kapitel 5.5 zeigen, ist der IBM Federated Identity Manager jedoch potentiell in der Lage, diesen Testfall vollständig zu unterstützen. Dies bedingt jedoch einen erfolgreichen Austausch von SAML-Assertions. Anwendungsfall : Entfernte (Remote) Autorisierung Unabhängig von dem bisherigen Testverlauf wird eine entfernte Autorisierung in dieser Systemumgebung nicht unterstützt, da sowohl der Netegrity Siteminder als auch der Tivoli Federated Identity Manager keine Möglichkeit bieten, Authorization-Assertions bzw. entsprechende Anfragen auszutauschen. 109 Kapitel 5: Umsetzung und Analyse Anwendungsfall : Föderierter Single Logout Analog zum Testszenario „Netegrity Siteminder 6.0 SP1 (IdP) – RSA Cleartrust 5.5 & RSA FIM 2.5“ (vgl. Kapitel 5.2.2). 5.3.3 Fazit Wie die obige Analyse zeigt, konnte eine Interoperabilität zwischen den Produkten Netegrity Siteminder und IBM Tivoli Access Manager bzw. Tivoli Federated Manager im Rahmen dieser Diplomarbeit nicht bestätigt werden. Keiner der in Kapitel 4 definierten Use-Cases konnte in der Umgebung erfolgreich umgesetzt werden. Dieses Ergebnis soll jedoch keinesfalls implizieren, dass die verwendeten Produkte keinen der Anwendungsfälle in ihrer SAML-Implementierung unterstützen. Die hier durchgeführten Tests sollen lediglich zeigen, dass eine föderierte Zusammenarbeit zwischen dem CA- und dem IBM-Produkt aufgrund eines ungelösten Problems (siehe Kapitel 5.2.2 Anwendungsfall „Föderierte Authentifizierung/Föderiertes Single-Sign-On“) nicht erfolgreich umgesetzt werden konnte. Falls dieses Problem behoben werden kann (z.B. durch die Bereitstellung eines Hotfixes für den Netegrity Siteminder), besteht jedoch die berechtigte Hoffnung, dass eine Interoperabilität zwischen den Produkten bzgl. der Mehrzahl der vorgestellten Use-Cases erreicht werden kann. Trotzdem wird ein erfolgreicher Austausch von SAML-Assertions aller Voraussicht nach nur unter Zuhilfenahme des in Kapitel 5.2.2 entworfenen Netegrity Assertion-Generator-Plugins (vgl. Kapitel 5.2.2) möglich sein. 5.4 Testszenario RSA Cleartrust 5.5 & FIM 2.5 (IdP) – Netegrity Siteminder 6.0 (SP) In diesem Szenario wurde das Produkt RSA Cleartrust 5.5 & FIM 2.5 als Identity Provider eingesetzt (Host: itacpi09.testeurope1.bmwgroup.com). Auf der Seite des Service Providers befand sich eine komplette Netegrity Siteminder 6.0 SP1 Installation (Host: itacpi29.testeurope1.bmwgroup.com). 5.4.1 Konfiguration der Testumgebung Aufgrund der Probleme mit SAML 1.1 in den vorangegangenen Tests (vgl. Kapitel 5.2), wurde auch hier SAML 1.0 als Austauschformat für die Kommunikation zwischen den beiden Parteien festgelegt. Federated Identity Manager 2.5 Siteminder 6.0 SP1 Syntax SAML 1.0 Ja Ja Syntax SAML 1.1 Ja Ja SAML BAP (Browser Artifact Profile) Ja Ja SAML BPP (Browser Post Profile) Ja Ja 110 Kapitel 5: Umsetzung und Analyse SAML SOAP over HTTP Binding Ja Ja SAML Authentication Request Ja Ja SAML Authentication Response Ja Ja SAML Attribute Request Ja Nein SAML Attribute Response Ja Nein SAML Authorization Request Nein Nein SAML Authorization Response Nein Nein Tabelle 16: SAML-Features RSA FIM vs. Netegrity Siteminder Tabelle 17 zeigt die wichtigsten Einstellungen für die föderierte Testumgebung „RSA Cleartrust & FIM (IdP) – Netegrity Siteminder (SP)“. Hostadresse SP itacpi29.testeurope1.bmwgroup.com Hostadresse IdP itacpi09.testeurope1.bmwgroup.com Artifact Receiver Service URL https://itacpi29.testeurope1.bmwgroup.com:443/affwebservices/public/samlcc SOAP Binding Service URL http://itacpi09.testeurope1.bmwgroup.com:7001/samlassertingparty/services/Sam lRequest IdP Portal Website URL http://itacpi09.testeurope1.bmwgroup.com/protected/portal.html SP Demo Website URL http://itacpi29.testeurope1.bmwgroup.com/protected.asp BAP SourceID (Hex) ba4a61beb309a7152f38292d188b855602582295 Issuer _2fedf960dc60d9134f9161d88e0bc03d9a413e77 Subject Name Qualifier www.rsa.com Tabelle 17: Einstellungen RSA FIM & Netegrity Siteminder Der SOAP Binding Service URL des RSA Federated Identity Managers wurde durch den Authentifizierungstyp Basic Authentication geschützt. Ein Schutz des URLs auf Basis von Client-Zertifikaten wäre jedoch auch möglich gewesen. 5.4.2 Test der Anwendungsfälle In dieser Testumgebung wurde der RSA Cleartrust 5.5 in Kombination mit dem RSA Federated Identity Manager 2.5 als Identity Provider und der Netegrity Siteminder 6.0 SP1 als Service Provider eingesetzt. Tabelle 18 zeigt einen Überblick bzgl. der ermittelten Testergebnisse. Use Cases Erfolgreich gestestet Föderierte Authentifizierung/Föderiertes Single Sign-On Nein 111 Kapitel 5: Umsetzung und Analyse Föderierter Attribut-Austausch Nein Lokale Autorisierung Nein Entfernte (Remote) Autorisierung Nein Föderierter Single Logout Nein Tabelle 18: Testergebnisse - RSA FIM (IdP) & Netegrity Siteminder (SP) Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On Ähnlich dem vorangegangen Testszenario (vgl. Kapitel 5.3) konnte auch hier der primäre Anwendungsfall „Föderierte Authentifizierung/Föderiertes Single Sign-On“ nicht erfolgreich getestet werden. Da alle anderen nachfolgenden Use Cases von diesem elementaren Anwendungsfall abhängen, konnten auch diese nicht umgesetzt werden. Die Ursachen für das Scheitern wird im folgenden dargelegt. Dazu werden die Schritte (vgl. Kapitel 4.1), die nötig sind, um den kompletten Testfall erfolgreich umzusetzen, einzeln analysiert: Schritt 1: Aufbau des SAML-Artefakts Dieser Teilschritt konnte erfolgreich getestet werden. Nach dem Aufruf des Inter-Site Transfer URLs wurde das SAML-Artefakt (generiert vom RSA Federated Identity Manager) an den Service Provider übermittelt. Dieses Artefakt entsprach den Anforderungen der SAML-Spezifikation 1.0. Schritt 2: Übertragung des generierten SAML-Artefakts an den Service Provider Die Übertragung des SAML-Artefakts und des TARGET-Parameters an den Artifact Receiver URL des Netegrity Siteminders war ohne Probleme möglich. Des Weiteren konnte die SourceID (enthalten im SAML-Artefakt) dem entsprechenden IdP erfolgreich zugeordnet werden. Schritt 3: Anfordern der SAML-Assertion Das in Schritt 2 übertragene SAML-Artefakt wurde erfolgreich - verpackt in einen SAMLRequest - an den Assertion Retriever/SOAP Binding Service URL des RSA Federated Identity Managers gesendet. Dieser SAML-Request war vollständig konform zur OASIS SAML-Spezifikation 1.0 (vgl. Anhang A.3.3). Alle Anforderungen dieses Teilschrittes wurden somit erfüllt. Schritt 4: Übertragung der SAML-Assertion Der erhaltene SAML-Request wurde von der SAML-Autorität des RSA Federated Identity Managers mit einer SAML-Assertion- bzw. SAML-Response-Nachricht geeignet beantwortet. Diese wurde über den aufgebauten SOAP Back-Channel an den Netegrity Siteminder erfolgreich übermittelt. Die empfangene SAML-Response-Nachricht (vgl. Anhang A.3.3) enthielt dabei alle erforderlichen Elemente und Attribute. 112 Kapitel 5: Umsetzung und Analyse Schritt 5: Verarbeitung der empfangenen SAML-Assertion Bei der Verarbeitung der SAML-Assertion durch den Netegrity Siteminder traten mehrere Probleme auf: 1. Problem: Ähnlich dem Testszenario “Netegrity Siteminder 6.0 (IdP) – RSA Cleartrust 5.5 & FIM 2.5 (SP)” trat auch hier ein Problem mit dem übermittelten Zeitformat auf (vgl. Kapitel 5.2). Folgende Fehlermeldung wurde auf der Seite des Service Providers (Netegrity Siteminder) ausgegeben: März 16, 2005 3:05:48.23 PM[25229676:E] SAML_ParseException occured while trying to parse the SAML-Response received. Exception: java.text.ParseException: Unparseable date: "2005-03- 16T13:57:55Z". März 16, 2005 3:05:48.23 PM[25229676:ASSR_RETRIEVAL_TRACE] The following assertion has been retrieved: null März 16, 2005 3:05:48.23 PM[25229676:E] Error occured while trying to retrieve the assertion from the SAML producer site. März 16, 2005 3:05:48.23 PM[25229676:I] Ending the request processing with the HTTP response code: 500 Lösung: Die Ursache und die Lösung dieses Fehlers werden in Kapitel 5.2.2 ausführlich beschrieben. 2. Problem: Obwohl die übermittelte SAML-Response-Nachricht des RSA-Produkts konform zur SAML-Spezifikation 1.0 war, konnte die zuständige Komponente des Netegrity Siteminders das XML-Dokument nicht erfolgreich parsen. Die Logdatei affwebservices.log des Netegrity Siteminders enthielt dabei folgende Fehlermeldung: März 18, 2005 11:07:52.185 AM[14445175:E] Parsing Error: Line:1 Column:1: The markup in the document preceding the root element must be well-formed. März 18, 2005 11:07:52.185 AM[14445175:ASSR_RETRIEVAL_TRACE] The following assertion has been retrieved: null März 18, 2005 11:07:52.185 AM[14445175:I] Ending the request processing with the HTTP response code: 500 Die SAML-Response-Nachricht begann mit dem syntaktisch korrektem Tag <?xml version="1.0" encoding="UTF-8" ?>. Die obige Fehlermeldung legt die Vermutung nahe, dass die zuständige Komponente des Netegrity Siteminders 6.0 SP1 nicht in der Lage war, dieses Element erfolgreich zu parsen bzw. zu verarbeiten. Bei einem Vergleich der übermittelten SAML-Response Nachricht (ausgestellt vom RSA FIM) mit einer SAML-Response Nachricht (ausgestellt vom Netegrity Siteminder) fällt auf, dass die SAML-Response-Nachricht von Netegrity kein Anfangselement <?xml…?> beinhaltet. Ein Lösungsansatz wäre demnach eine Entfernung dieses Elements auf der Seite des RSA Federated Identity Managers. Ähnlich wie beim Netegrity Siteminder wird auch hier die Möglichkeit angeboten, ein eigenes Java-Plugin zu integrieren. Da mit einem solchen 113 Kapitel 5: Umsetzung und Analyse Plugin jedoch ausschließlich die Elemente bzw. Attribute einer SAML-Assertion, nicht jedoch das Anfangselement <?xml…?> bearbeitet werden konnten, war es unmöglich, diesen Ansatz umzusetzen. Die Durchführung dieses und aller nachfolgenden Teilschritte schlug demnach fehl. Ein erfolgreicher Test des SSO-Prozesses war damit nicht möglich. Anwendungsfall: Föderierter Attribut-Austausch Aufgrund des Scheiterns des vorangegangenen Anwendungsfalls konnte dieser Testfall nicht getestet werden. Für den Fall, dass die Hersteller (allem voran Computer Associates) eine Lösung (z.B. Hotfix) für das obige Problem anbieten, ist mit sehr großer Wahrscheinlichkeit davon auszugehen, dass der föderierte Austausch von Attributen zwischen den Produkten von RSA und CA kein Problem darstellen wird. Anwendungsfall : Lokale Autorisierung Obwohl dieser Anwendungsfall nicht getestet wurde (siehe obige Begründung), ist der Netegrity Siteminder - vorausgesetzt der SSO-Prozess mit dem RSA Produkt funktioniert - in der Lage, eine lokale Autorisierung eines entfernten Benutzers vorzunehmen. Sowohl eine lokale Autorisierung über ein 1:1 Account-Linking als auch eine lokale Autorisierung mittels übertragener Autorisierungsinformationen (innerhalb einem <saml:AttributeStatement>) ist potentiell möglich. Anwendungsfall : Entfernte (Remote) Autorisierung Dieser Testfall wird, unabhängig von den bisherigen Ergebnissen, nicht unterstützt. Die Begründung ist analog dem Testszenario „Netegrity Siteminder 6.0 SP1 (IdP) – RSA Cleartrust 5.5 & FIM 2.5 (SP)“ (vgl. Kapitel 5.2.2). Anwendungsfall : Föderierter Single Logout Analog zum gleichnamigen Anwendungsfall in Kapitel 5.2.2. 5.4.3 Fazit Die vorangegangen Testszenarios, an denen der Netegrity Siteminder als Identity Provider beteiligt war, ließen vermuten, dass dieses Produkt auch in der Funktion eines Service Providers bzgl. der Interoperabilität mit den anderen Produkten nicht gut abschneiden würde. Dieses Testszenario zeigt, dass alle Befürchtungen in diese Richtung berechtigt waren. Obwohl die von der SAML-Autorität des RSA Federated Identity Managers ausgestellten SAML-Nachrichten vollständig konform zur OASIS SAML-Spezifikation 1.0 waren, kam es 114 Kapitel 5: Umsetzung und Analyse zu erheblichen Parsing-Problemen auf der Seite des Netegrity Siteminders. Die Interoperablität zwischen dem RSA Federated Identity Manager 2.5 (IdP) und dem Netegrity Siteminder 6.0 (SP) konnte damit für keinen der Anwendungsfälle bestätigt werden. 5.5 Testszenario RSA Cleartrust 5.5 & FIM 2.5 (IdP)–IBM TAM 5.1 & TFIM 6.0 (SP) Der RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5 fungierte als Identity Provider (Host: itacpi09.testeurope1.bmwgroup.com) und das Produkt IBM Tivoli Access Manager 5.1 und Tivoli Federated Identity Manager 6.0 übernahm die Funktion des Service Providers (Host: itahpi14.testeurope1.bmwgroup.com). 5.5.1 Konfiguration der Testumgebung Der domänenübergreifende Austausch von Identitätsinformationen erfolgte auch in dieser Testumgebung über Assertions der SAML-Version 1.0. Der Standard SAML 1.1 wird von der Beta-Version des Tivoli Federated Identity Managers 6.0 momentan nicht unterstützt. Tabelle 19 vergleicht - analog zu den vorangegangenen Testszenarios - die jeweiligen SAMLFähigkeiten der beiden verwendeten Sicherheitslösungen. RSA FIM 2.5 IBM TFIM 6.0 Syntax SAML 1.0 Ja Ja Syntax SAML 1.1 Ja Nein SAML BAP (Browser Artifact Profile) Ja Ja SAML BPP (Browser Post Profile) Ja Ja SAML SOAP over HTTP Binding Ja Ja SAML Authentication Request Ja Ja SAML Authentication Response Ja Ja SAML Attribute Request Ja Nein SAML Attribute Response Ja Nein SAML Authorization Request Nein Nein SAML Authorization Response Nein Nein Tabelle 19: SAML-Features RSA FIM vs. IBM TFIM Tabelle 20 zeigt Einstellungen der Testumgebung „RSA Cleartrust & RSA FIM – IBM TAM & IBM TFIM“. Hostadresse SP itacpi14.testeurope1.bmwgroup.com Hostadresse IdP itacpi09.testeurope1.bmwgroup.com Artifact Receiver Service URL https:// itahpi14.testeurope1.bmwgroup.com/FIM/sps/samlfed/saml/login 115 Kapitel 5: Umsetzung und Analyse SOAP Binding Service URL http://itacpi09.testeurope1.bmwgroup.com:7001/samlassertingparty/services/Sam lRequest IdP Portal Website URL http://itacpi09.testeurope1.bmwgroup.com/protected/portal.html SP Demo Website URL http://itahpi14.testeurope1.bmwgroup.com/protected.jsp BAP SourceID (Hex) ba4a61beb309a7152f38292d188b855602582295 Issuer _2fedf960dc60d9134f9161d88e0bc03d9a413e77 Subject Name Qualifier www.rsa.com Tabelle 20: Einstellungen RSA FIM & IBM TFIM Die Absicherung des SOAP Binding Services basierte auf der Übermittlung eines ClientZertifikats durch den beteiligten SP. Ein Schutz dieses Dienstes auf Basis von Basic Authentication war in diesem Testszenario nicht möglich. 5.5.2 Test der Anwendungsfälle Der RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5 wurde als Identity Provider und der IBM Tivoli Access Manager 5.1 & IBM Tivoli Federated Identity Manager 6.0 als Service Provider konfiguriert. Tabelle 21 zeigt einen Überblick bzgl. der ermittelten Testergebnisse. Use Cases Erfolgreich getestet Föderierte Authentifizierung/Föderiertes Single Sign-On Ja Föderierter Attribut-Austausch Ja Lokale Autorisierung Ja Entfernte (Remote) Autorisierung Nein Föderierter Single Logout Nein Tabelle 21: Testergebnisse - RSA FIM (IdP) & IBM TFIM (SP) Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On Dieser Anwendungsfall konnte erfolgreich getestet werden. Alle Probleme, die während der Umsetzung dieses Testfalls aufgetreten sind, konnten ohne große Schwierigkeiten behoben werden. Die Bemühungen, die nötig waren, damit dieser Use Case erfolgreich umgesetzt werden konnte, werden im Folgenden detailliert erläutert. Dazu soll die Umsetzung des Testfalls Schritt für Schritt analysiert werden (vgl. Kapitel 4.1): 116 Kapitel 5: Umsetzung und Analyse Schritt 1: Aufbau des SAML-Artefakts Das SAML-Artefakt (generiert vom RSA Federated Identity Manager) genügte – wie auch schon im vorangegangenen Testszenario – allen Anforderungen der SAML-Spezifikation. Der erste Schritt im SSO-Prozess war somit erfolgreich bestanden. Schritt 2: Übertragung des generierten SAML-Artefakts an den Service Provider Das in Schritt 1 generierte SAML-Artefakt wurde erfolgreich – durch einen Aufruf des InterSite Transfer Services - an den SP (IBM TFIM 6.0) übermittelt. Der TARGET-Parameter zeigte auf die gewünschte Ressource (http://itahpi14.testeurope1.bmwgroup.com/protected .jsp) beim Service Provider. Schritt 3: Anfordern der SAML-Assertion Mit Hilfe der entsprechenden SourceID konnte der SP einen SAML-Request an den SOAP Binding Service des Identity Providers schicken. Dieser SAML-Request war konform zum OASIS SAML-Standard 1.0. Innerhalb des Tags <saml:AssertionArtifact> wurde das SAML-Artefakt (vgl. Schritt 2) übertragen. Schritt 4: Übertragung der SAML-Assertion Bevor dieser Teilschritt erfolgreich umgesetzt werden konnte, musste ein Problem behoben werden. Nach dem Empfang des SAML-Requests durch den RSA Federated Identity Manager wurde von diesem folgender Fehler ausgelöst: Error 500 - Internal Server Error The server encountered the following unexpected condition: Error in RSA Federated Identity Manager: ; nested exception is: com.rsa.csf.techservice.saml.opensaml.SAMLException: SAML-Requester error: null (wrapped: Invalid SAML-Request: SAML-Request IssueInstant is too far in the future to be valid) Der SAML-Request konnte vom Identity Provider nicht verarbeitet werden, da der Ausstellungszeitpunkt der Anfrage, im Vergleich zur lokalen Systemzeit des Servers, in der Zukunft lag. Zur Lösung dieses Problems mussten die Systemzeiten der beiden beteiligten Testserver synchronisiert werden. Nach dieser Maßnahme konnten SAML AuthenticationAssertions an den Service Provider erfolgreich übermittelt werden. Schritt 5: Verarbeitung der empfangenen SAML-Assertion Die übertragene SAML-Assertion war konform zur SAML-Spezifikation 1.0 und konnte ohne Probleme vom IBM Tivoli Access Manager bzw. Tivoli Federated Identity Manager geparst und verarbeitet werden. Im ersten Schritt wurde die empfangene SAML-Assertion an die Trust-Service Komponente des TFIM-Produkts übergeben. Dort wurden die Nutzerdaten extrahiert und auf einen lokalen Nutzer abgebildet (1:1 Mapping). Die Umsetzung dieses Teilschrittes war damit erfolgreich. 117 Kapitel 5: Umsetzung und Analyse Schritt 6: Generierung von SSO-Cookies Nach der erfolgreichen Authentifizierung des (entfernten) Benutzers wurden die benötigten SSO-Cookies im Browser des Benutzers abgelegt. Der SSO-Prozess konnte damit für dieses Testszenario erfolgreich abgeschlossen werden. Der Nutzer war – ohne erneute Authentifizierung – berechtigt, auf die Ressource http://itahpi14.testeurope1.bmwgroup.com/ protected.jsp des Service Providers zuzugreifen. Anwendungsfall: Föderierter Attribut-Austausch Die Umsetzung einer impliziten Übertragung von Nutzerattributen (<saml:AttributeStatement> innerhalb einer SAML Attribute-Assertion) konnte erfolgreich getestet werden. Eine explizite Übertragung von Attributen auf Anfrage war indes nicht möglich, da der Tivoli Identity Manager 6.0 keine Attributanfragen in Form eines <saml:AttributeQuery>-Elements unterstützt. Eine implizite Übertragung wurde in der vorliegenden Testumgebung sowohl für den Benutzer mit UserID Admin als auch für den Benutzer mit UserID JDoe getestet. Beide Male wurde das Attribut businesscategory - jeweils mit unterschiedlichen Werten - an den Service Provider übertragen. Die erhaltenen Werte wurden vom Tivoli Federated Identity Manager extrahiert und vom WebSeal Reverse Proxy innerhalb eines HTTP-Headers an die geschützte Webapplikation protected.jsp weitergereicht. Dort konnten die Attributwerte ausgelesen und auf der Webseite angezeigt werden. Anwendungsfall: Lokale Autorisierung Die Umsetzung dieses Testfalls war mit etwas Aufwand möglich. Beide Fälle (vgl. Kapitel 4.3) wurden erfolgreich vom IBM Produkt (IBM TAM 5.1 & IBM TFIM 6.0) unterstützt. Damit eine lokale Autorisierung durchführt werden konnte, mussten Access Manager Authorization-Rules [AMAdmin Kapitel 12] definiert werden. Diese Authorization-Rules basieren – ähnlich wie die SmartRules des RSA Cleartrusts 5.5 – auf Boolescher Logik. Zur Auswertung dieser Regeln wurden bestimmte Access-Decision-Informations (ADI) [AMWebseal] verwendet. Diese Informationen (z.B. Attribute) konnten aus den Profilen der Testnutzer gewonnen werden. Eine lokale Autorisierung, basierend auf 1:1 Account Linking zwischen IdP und SP (vgl. Kapitel 4.3), war dadurch möglich. Wurden jedoch Autorisierungsinformationen verwendet, die in Form von Attributen innerhalb einer SAML-Assertion vom IdP an den SP übertragen wurden, so war der Ablauf etwas komplexer. In der Testumgebung wurde eine entfernte Autorisierung der Testnutzer (UserID Admin bzw. JDoe) auf Basis des Attributs businesscategory durchgeführt. Dazu musste eine Authorization-Rule definiert werden. Diese Regel erlaubte den Zugriff auf die Ressource protected.jsp für den Fall, dass der anfragende Nutzer ein Attribut businesscategory mit dem Wert „Gold“ besaß. Bei anderen Werten wurde der Zugriff hingegen verweigert. 118 Kapitel 5: Umsetzung und Analyse Der Ablauf der lokalen Autorisierung durch den IBM TAM 5.1 in Verbindung mit einem WebSeal Reverse Proxy wird in Abb. 24 gezeigt. Anhand dieses Autorisierungsablaufs wird deutlich, dass sich die Architektur des IBM Tivoli Access Managers 5.1 grundlegend von der Architektur des RSA Cleartrust-Systems (vgl. Kapitel 5.2.2) unterscheidet. SAML-Assertion vom IdP (1) Benutzer WebSeal Reverse Proxy Authorization - Engine Trust Service Übergabe der SAML-Assertion (2) Erstellung eines Access Manager Credentials (3) Übergabe des AM Credentials (4) HTTP-Redirect (5) Aufruf & Übergabe des AM Credentials (6) Auswertung einer Authorization-Rule (7) Übergabe von Access_Allowed bzw. Access_Denied (8) Zugriff auf die Resource erlauben bzw. verweigern (9) Abbildung 24: Lokale Autorisierung durch den IBM TAM 5.1 1. Der WebSeal Reverse Proxy empfing eine SAML-Assertion von einem Benutzer bzw. Identity Provider. Diese SAML-Assertion enthielt eine UserID (<saml:NameIdentifier>) und ein Attribut businesscategory (<saml:AttributeAttributeName="businesscategory">). 2. Diese SAML-Assertion wurde an die Trust Service Komponente des Tivoli Federated Identity Managers übergeben. 3. Der Trust Service erstellte aus den Daten der SAML-Assertion (UserID, Attribute etc.) ein Access Manager Credential (Nutzer-Profil). Das Attribut businesscategory wurde dabei der Attributliste (xattrlist) des Access Manager Credentials hinzugefügt. 4. Das Access Manager Credential wurde an den WebSeal Reverse Proxy übergeben und dort gespeichert. 5. Der Benutzer wurde nach einer erfolgreichen Authentifizierung auf die geschützte Ressource protected.jsp umgeleitet. 6. Der Webseal Reverse Proxy rief die Authorization-Engine auf und übergab dieser das gespeicherte Nutzer-Profil (Access Manager Credential). 7. Die Authorization-Engine extrahierte die benötigten Access-Decision-Informations (hier: Attribut businesscategory) aus dem übergeben Nutzer-Profil, um die vorhandene 119 Kapitel 5: Umsetzung und Analyse Authorization-Rule auszuwerten. 8. Die Authorization-Engine übergab daraufhin Access_Allowed bzw. Access_Denied an den WebSeal Reverse Proxy. 9. Der WebSeal gewährte bzw. verweigerte den Zugriff auf die Webapplikation protected.jsp. Der oben beschriebene Ablauf wurde sowohl für den Benutzer Admin (businesscategory= ''Gold'') als auch für den Benutzer JDoe (businesscategory=''Bronze'') durchgeführt. Wie zu erwarten war, wurde dem Nutzer Admin der Zugriff auf die Ressource protected.jsp gestattet. Dem Nutzer JDoe hingegen wurde der Zugang auf die Ressource aufgrund mangelnder Berechtigung verwehrt. Damit konnte dieser Testfall erfolgreich abgeschlossen werden. Anwendungsfall: Entfernte (Remote) Autorisierung Eine entfernte Autorisierung wurde sowohl vom RSA Federated Identity Manager 2.5 als auch vom IBM Tivoli Federated Identity Manager 6.0 nicht unterstützt (vgl. Kapitel 5.3.2 bzw. 5.4.2). Anwendungsfall: Föderiertes Single Logout Dieser Anwendungsfall wurde in Verbindung mit SAML 1.0 ebenfalls nicht unterstützt. 5.5.3 Fazit In drei der fünf getesteten Anwendungsfälle konnte eine Interoperabilität zwischen dem RSA(IdP) und dem IBM-Produkt (SP) nachgewiesen werden. Alle in diesem Testszenario ausgetauschten SAML-Nachrichten (SAML-Requests bzw. SAML-Responses) waren konform zur SAML-Spezifikation 1.0. Der Aufbau einer föderierten Identitätsumgebung zwischen diesen Produkten war deshalb ohne große Probleme möglich. 5.6 Testszenario IBM TAM 5.1 & TFIM 6.0 (IdP)–RSA Cleartrust 5.5 & FIM 2.5 (SP) In diesem Testszenario wurden die Rollen getauscht. Das Produkt IBM TAM 5.1 & TFIM 6.0 fungierte diesmal als Identity Provider (Host: itahpi14.testeurope1.bmwgroup.com). RSA Cleartrust 5.1. & FIM 2.5 übernahm die Funktion des Service Providers (Host: itacpi09.testeurope1.bmwgroup.com). 5.6.1 Konfiguration der Testumgebung Der Austausch von Identitätsinformationen basierte wie auch im vorangegangenen Testszenario auf SAML 1.0, da die SAML-Autorität des Tivoli Federated Identity Managers 120 Kapitel 5: Umsetzung und Analyse ausschließlich SAML-Assertions dieser Version generieren konnte. Als Profil wurde wieder das Browser/Artifact-Profile verwendet. IBM TFIM 6.0 RSA FIM 2.5 Syntax SAML 1.0 Ja Ja Syntax SAML 1.1 Nein Ja SAML BAP (Browser/Artifact Profile) Ja Ja SAML BPP (Browser/Post Profile) Ja Ja SAML SOAP over HTTP Binding Ja Ja SAML Authentication Request Ja Ja SAML Authentication Response Ja Ja SAML Attribute Request Nein Ja SAML Attribute Response Nein Ja SAML Authorization Request Nein Nein SAML Authorization Response Nein Nein Tabelle 22: SAML-Features IBM TFIM vs. RSA FIM Tabelle 23 zeigt die SAML-Konfiguration der Testumgebung „IBM TAM & IBM TFIM – RSA Cleartrust & RSA FIM“. Hostadresse SP itacpi09.testeurope1.bmwgroup.com Hostadresse IdP itacpi14.testeurope1.bmwgroup.com Artifact Receiver Service URL http://itacpi09.testeurope1.bmwgroup.com:7001/samlrelyingparty/RP SOAP Binding Service URL https:// itahpi14.testeurope1.bmwgroup.com/FIM/sps/samlfed/saml/soap IdP Portal Website URL http://itahpi14.testeurope1.bmwgroup.com/protected/portal.jsp SP Demo Website URL http://itacpi09.testeurope1.bmwgroup.com/protected.php BAP SourceID (Hex) 5ccd6dca73b24bc98e3076224f1c2e0394c1387a Issuer http://itahpi14.testeurope1.bmwgroup.com Subject Name Qualifier www.ibm.com Tabelle 23: Einstellungen IBM TFIM & RSA FIM Der SOAP Binding Service des Tivoli FIMs 6.0 wurde in diesem Testszenario durch die Authentifizierungsart Basic Authentication geschützt. Eine Absicherung über ClientZertifikate wäre jedoch auch möglich gewesen. 121 Kapitel 5: Umsetzung und Analyse 5.6.2 Test der Anwendungsfälle Wie in den vorangegangenen Testszenarios wurde auch hier die Interoperabilität der beteiligten Softwareprodukte anhand von fünf Testfällen überprüft. Eine Übersicht über die erzielten Testergebnisse zeigt Tabelle 24. Use Cases Erfolgreich getestet Föderierte Authentifizierung/Föderiertes Single Sign-On Ja Föderierter Attribut-Austausch Ja Lokale Autorisierung Ja Entfernte (Remote) Autorisierung Nein Föderierter Single Logout Nein Tabelle 24: Testergebnisse - IBM TFIM (IdP) & RSA FIM (SP) Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On Die Interoperablität der Produkte konnte für diesen Testfall erfolgreich getestet werden. Die Teilschritte 1-4 dieses Anwendungsfalls konnten ohne Probleme umgesetzt werden. Nach dem Aufruf des Inter-Site Transfer Service URLs und der anschließenden Übertragung des SAML-Artefakts konnte der RSA FIM erfolgreich einen SAML-Request an den Identity Provider (TFIM 6.0) schicken. Bei der Verarbeitung der daraufhin übermittelten SAMLResponse-Nachricht durch den Service Provider traten jedoch zwei Fehler auf, die behoben werden mussten: 1. Problem: Die SAML-Assertion wurde vom RSA Federated Identity nicht akzeptiert, da das Element <saml: NameIdentifier> kein Attribut mit dem Namen NameQualifier [SAMLCore10] enthielt. Obwohl die Verwendung dieses Attributs gemäß der SAMLSpezifikation optional ist, wurde dieses vom RSA Federated Identity Manager für eine erfolgreiche Authentifizierung eines entfernten Benutzers benötigt. Lösung: Der im TFIM verwendeten XSLT Identity-Mapping-Datei musste ein sog. ''STS Universal User Attribute'' hinzugefügt werden. Die Attributliste der XSLT-Datei wurde dabei um folgenden Eintrag ergänzt: <stsuuser:Attribute name="NameQualifier" type="urn:oasis:names:tc:SAML:1.0:assertion"> <stsuuser:Value>www.ibm.com</stsuuser:Value> </stsuuser:Attribute> Bei der erneuten Ausstellung einer SAML-Assertion durch den TFIM 6.0 wurde dem Element <saml: NameIdentifier> ein Attribut NameQualifier mit dem Wert ''www.ibm.com'' hinzugefügt. 122 Kapitel 5: Umsetzung und Analyse 2. Problem: Die SAML-Assertion konnte weiterhin vom Service Provider nicht erfolgreich geparst werden. Der Grund hierfür war diesmal das fehlende Element <saml: ConfirmationMethod>. Dieses befindet sich gewöhnlich innerhalb des Tags <saml: SubjectConfirmation> [SAMLCore10]. Die übermittelte IBM-Assertion enthielt lediglich folgenden Abschnitt: <saml:SubjectConfirmation> <saml:SubjectConfirmationData> urn:oasis:names:tc:SAML:1.0:cm:artifact-01 </saml:SubjectConfirmationData> </saml:SubjectConfirmation> Dieser Abschnitt war jedoch nicht konform zur SAML-Spezifikation 1.0. Wird ein Element <saml: SubjectConfirmation> in einer Assertion verwendet, so muss dieses mindestens ein <saml: ConfirmationMethod>-Tag enthalten. Ein Vorkommen des Elements <saml:SubjectConfirmationData> ist hingegen optional. Lösung: Die Verantwortlichkeit für diesen Bug lag beim SAML-Assertion-Token Modul des Tivoli Federated Identity Managers. Da keine Möglichkeit bestand, an diesem Modul Veränderungen vorzunehmen, musste dieser Fehler an den zuständigen Support von IBM weitergereicht werden. Dort wurde umgehend ein Hotfix für diesen Bug erstellt. Nach der Installierung dieses Hotfixes verschwand das Problem. Die SAML-Assertions des IBMProdukts waren damit vollständig konform zur SAML-Spezifikation 1.0. Nach Lösung der oben geschilderten Probleme, konnte die SAML-Assertion erfolgreich vom SP verarbeitet werden. Die anschließende Generierung der SSO-Cookies durch den RSA Federated Identity Manager lief fehlerfrei ab. Anwendungsfall: Föderierter Attribut-Austausch Eine implizite Übertragung von Nutzerattributen konnte für beide Testnutzer (Admin bzw. JDoe) erfolgreich umgesetzt werden. Das Attribut businesscategory wurde dabei, wie in der SAML-Spezifikation gefordert, innerhalb des Tags <saml:AttributeStatement> an den RSA Federated Identity Manager übertragen. Dort wurden die Attribute wie gewohnt extrahiert, um diese der gewünschten Applikation (hier: protected.php) über den HTTPHeader mitzuteilen. Eine explizite Anfrage von Attributen in Form eines <saml:AttributeQuery>-Elements scheiterte am IBM TFIM. Momentan werden durch dieses Produkt keine dynamischen Attributanfragen unterstützt. 123 Kapitel 5: Umsetzung und Analyse Anwendungsfall: Lokale Autorisierung Auch dieser Testfall konnte erfolgreich getestet werden. Die Umsetzung erfolgte analog zum gleichnamigen Anwendungsfall in Kapitel 5.2.2. Anwendungsfall: Entfernte (Remote) Autorisierung Entsprechend allen bisherigen Testszenarios konnte die entfernte Autorisierung auch hier nicht getestet werden, da keines der eingesetzten Produkte die Verwendung von Authorization-Assertions unterstützt. Anwendungsfall: Föderiertes Single Logout Analog zum gleichnamigen Anwendungsfall in Kapitel 5.5.2 5.6.3 Fazit Die Testergebnisse zeigen, dass die Produkte von IBM (IdP) bzw. RSA (SP) im Bereich Federated Identity Management weitgehend harmonieren. Eine Zusammenarbeit konnte für drei der fünf Anwendungsfälle erfolgreich getestet werden. Die SAML-Assertions - generiert von der SAML-Autorität des Tivoli Federated Identity Managers 6.0 – waren anfangs nicht vollständig konform zur OASIS SAML-Spezifikation 1.0. Diese Unzulänglichkeit konnte jedoch unverzüglich von IBM durch die Bereitstellung eines Hotfixes behoben werden. Der Aufbau einer funktionierenden föderierten Identitätsumgebung mit dem RSA Federated Identity Manager war damit möglich. Die Ergebnisse in diesem und dem vorangegangenen Testszenario zeigen, dass eine Interoperablität zwischen den beiden Produkten sowohl für die Kombination „ IBM (IdP) – RSA (SP)“ als auch für die Kombination „RSA (IdP) – IBM (SP)“ gegeben ist. 5.7 Testszenario IBM TAM 5.1 & TFIM 6.0 (IdP) – Netegrity Siteminder 6.0 (SP) In diesem Szenario fungierte IBM TAM 5.1 & TFIM 6.0 wieder als Identity Provider (Host: itahpi14.testeurope1.bmwgroup.com). Im Gegensatz zum letzten Kapitel übernahm diesmal der Netegrity Siteminder 6.0 die Funktion des Service Providers (Host: itacpi29.testeurope1.bmwgroup.com). 5.7.1 Konfiguration der Testumgebung Der Austausch von Identitätsinformationen basierte abermals auf SAML 1.0 und dem dazugehörigen Browser/Artifact-Profile. 124 Kapitel 5: Umsetzung und Analyse IBM TFIM 6.0 Siteminder 6.0 SP1 Syntax SAML 1.0 Ja Ja Syntax SAML 1.1 Nein Ja SAML BAP (Browser/Artifact Profile) Ja Ja SAML BPP (Browser/Post Profile) Ja Nein SAML SOAP over HTTP Binding Ja Ja SAML Authentication Request Ja Ja SAML Authentication Response Ja Ja SAML Attribute Request Nein Nein SAML Attribute Response Nein Nein SAML Authorization Request Nein Nein SAML Authorization Response Nein Nein Tabelle 25: SAML-Features IBM TFIM vs. Netegrity Siteminder Tabelle 26 zeigt die Einstellungen, die vorgenommen wurden, um einen funktionierenden Austausch von SAML-Requests bzw. SAML-Responses in der Testumgebung zu gewährleisten. Hostadresse SP itacpi29.testeurope1.bmwgroup.com Hostadresse IdP itacpi14.testeurope1.bmwgroup.com Artifact Receiver Service URL https://itacpi29.testeurope1.bmwgroup.com:443/affwebservices/public/samlcc SOAP Binding Service URL https:// itahpi14.testeurope1.bmwgroup.com/FIM/sps/samlfed/saml/soap IdP Portal Website URL http://itahpi14.testeurope1.bmwgroup.com/protected/portal.jsp SP Demo Website URL http://itacpi29.testeurope1.bmwgroup.com/protected.asp BAP SourceID (Hex) ba4a61beb309a7152f38292d188b855602582295 Issuer http://itahpi14.testeurope1.bmwgroup.com Subject Name Qualifier www.ibm.com Tabelle 26: Einstellungen IBM TFIM & Netegrity Siteminder Zum Schutz des SOAP Binding Service URLs des Identity Providers wurde bei den Tests das Authentifizierungsverfahren Basic Authentication verwendet. 5.7.2 Test der Anwendungsfälle Auch in diesem Testszenario wurden wieder fünf föderierte Anwendungsfälle überprüft, um festzustellen, ob diese umgesetzt werden konnten. Tabelle 27 zeigt die erzielten Testergebnisse. 125 Kapitel 5: Umsetzung und Analyse Use Cases Erfolgreich getestet Föderierte Authentifizierung/Föderiertes Single Sign-On Nein Föderierter Attribut-Austausch Nein Lokale Autorisierung Nein Entfernte (Remote) Autorisierung Nein Föderierter Single Logout Nein Tabelle 27: Testergebnisse - IBM TFIM (IdP) & Netegrity Siteminder(SP) An dieser Stelle ist zu bemerken, dass auf den verwendeten Softwareprodukten bereits alle aktuellen Hotfixes installiert waren. Anwendungsfall: Föderierte Authentifizierung/Föderiertes Single Sign-On Eine Interoperablität der Softwareprodukte bzgl. des gegebenen Testszenarios konnte für diesen Anwendungsfall nicht nachgewiesen werden. Die Schritte 1-4 dieses Testfalls konnten problemlos umgesetzt werden. Schwierigkeiten ergaben sich jedoch bei der Verarbeitung der empfangenen SAML-Response durch den Service Provider. Der Netegrity Siteminder war nicht in der Lage, den in der SAMLAssertion übermittelten Benutzer zu authentifizieren. Dabei ergab sich folgende Fehlermeldung: April 25, 2005 11:56:10.201 AM[7566193:authentication] result code from AgentAPI login call: 2 April 25, 2005 11:56:10.201 AM[7566193:authentication] session id is: April 25, 2005 11:56:10.201 AM[7566193:authentication] session spec is: April 25, 2005 11:56:10.201 AM[7566193:E] SAML-Assertion based user authentication failed. April 25, 2005 11:56:10.201 AM[7566193:authentication] Response Attributes: April 25, 2005 11:56:10.201 AM[7566193:I] Ending the request processing with the HTTP response code: 500 Trotz erheblicher Anstrengungen bzgl. einer geeigneten Anpassung der Identity-Mapping Regeln (XPath-Ausdrücke) innerhalb des Netegrity Siteminders konnte dieses Problem nicht behoben werden. Die Ursache für diesen Fehler liegt bei Applikation „Federation Web-Services“ des Netegrity Siteminders. Diese Applikation ignoriert in einigen Systemumgebungen die Web-Agent Parameter CookieDomain und CookieDomainScope. Aus diesem Grund konnten die nötigen Cookies nicht ordungsgemäß Webbrowser des Testnutzers abgelegt werden. Dieser Umstand verursachte ein Scheitern des Authentifizierungsvorgangs. Eine Anfrage beim zuständigen Support von CA ergab, dass dieser Bug in der neuen Version des Siteminder OptionPacks (Option Pack vQMR 2) behoben wurde. Ob eine Integration dieser neuen Version das Problem in der Testumgebung beseitigt, konnte jedoch im Rahmen dieser Diplomarbeit nicht mehr festgestellt werden, da die Installation dieses neuen OptionPacks eine komplett neue Aufsetzung des Siteminder-Systems erfordert hätte. 126 Kapitel 5: Umsetzung und Analyse Anwendungsfall: Föderierter Attribut-Austausch Aufgrund des Scheiterns des vorangegangen Testfalls konnte der föderierte Austausch von Attributen zwischen dem IBM- und CA-Produkt nicht getestet werden. Anwendungsfall: Lokale Autorisierung Siehe gleichnamiger Anwendungsfall in Kapitel 5.4.2. Anwendungsfall: Entfernte (Remote) Autorisierung Wie alle vorangegangenen Testszenarios zeigen, wird dieser Use Case von keiner SAMLAutorität der drei verwendeten Produkte unterstützt. Eine Umsetzung dieses Anwendungsfalls war damit auch hier unmöglich. Anwendungsfall: Föderiertes Single Logout Siehe gleichnamiger Anwendungsfall in Kapitel 5.2.2. 5.7.3 Fazit Auch in diesem Testszenario schnitt der Netegrity Siteminder 6.0 SP1 schlecht ab. Genau wie bei den Untersuchungen in Kapitel 5.4 konnte keiner der Anwendungsfälle erfolgreich getestet werden. Die Ursache für das Scheitern der Testfälle lag abermals auf der Seite des Netegrity Siteminders. Dies legt den Schluss nahe, dass in einer heterogenen föderierten Identitätsumgebung von einem Einsatz des Netegrity Siteminders 6.0 SP1 in der Funktion des Service Providers abgesehen werden sollte. Ob die aktuellste Version des CA-Produkts (Netegrity Siteminder 6.0 SP2 + OptionPack QMR2), welche vor kurzem veröffentlicht wurde, bessere Ergebnisse liefert, müsste mit der Durchführung einer neuen Testreihe untersucht werden. 5.8 OpenSAML-Autorität der BMW Group Bei der BMW Forschung und Technik wurde auf Basis der frei verfügbaren OpenSAMLBibliotheken [OpenSAML] des Internet2-Konsortiums eine eigene SAML-Autorität implementiert. Diese kann Assertions und Artefakte auf Wunsch generieren und verwalten. Zur Speicherung der Nutzerdaten bzw. SAML-Assertions wird eine MySQL-Datenbank verwendet. In der Abbildung 21 wird das Klassendiagramm dieser SAML-Autorität dargestellt. Die Hauptkomponente ist die Klasse SAMLAuthorityService. Dieser Klasse sind die Hilfsklassen AssertionFactory (Klasse zum Aufbau einer SAML-Assertion) und 127 Kapitel 5: Umsetzung und Analyse IdTokenFactory (Klasse zur Verschlüsselung von Artefakten) zugeordnet. Auf die genaue Funktionsweise dieser Klassen soll an dieser Stelle nicht näher eingegangen werden. Im Rahmen dieser Diplomarbeit war es nun interessant, die Interoperablität zwischen den kommerziellen IAM-Produkten und dieser SAML-Autorität zu evaluieren. Leider konnten diesbezüglich nur sehr eingeschränkte Tests durchgeführt werden, da die SAML-Autorität der BMW Group als Kommunikationsschnittstelle SOAP RPC verwendet. Aus diesem Grund war die SAML-Autorität nicht kompatibel zu den SAML-Implementierungen der kommerziellen IAM-Produkte, die für den Nachrichtenaustausch SOAP DOCUMENT verwenden. Abbildung 25: Klassendiagramm OpenSAML-Autorität (BMW Forschung &Technik) Da voraussichtlich noch in diesem Jahr die SAML-Autorität der BMW Group auf SOAP DOCUMENT umgestellt wird, wurden im Rahmen dieser Diplomarbeit dennoch erste Interoperabilitätstest durchgeführt, die feststellen sollten, ob der Aufbau von Föderationen mit dem Netegrity Siteminder 6.0, dem RSA FIM 2.5 und dem IBM TFIM 6.0 potentiell möglich ist. Dazu wurde getestet, ob die ausgestellten SAML-Assertions der jeweiligen kommerziellen Produkte von der OpenSAML-Autorität geparst und verarbeitet werden konnten. Die erfolgten Tests waren für alle drei IAM-Produkte erfolgreich, d.h., die SAML-Assertions aller drei Produkte konnten ohne Probleme von der OpenSAML-Autorität geparst werden. Zudem war die SAML-Autorität in der Lage, alle Nutzerdaten, welche in den Assertions enthalten waren, zu extrahieren. Eine Interoperablität zu den SAML-Assertions des Netegrity Siteminders 6.0 war jedoch nur möglich, nachdem das Assertion-Generator Java-Plugin verwendet wurde (vgl. Anhang A.1). 128 Kapitel 5: Umsetzung und Analyse Um eine tatsächliche Anbindung der SAML-Autorität an die kommerziellen Sicherheitslösungen zu ermöglichen, muss neben der Umstellung auf SOAP DOCUMENT und der Bereitstellung eines Artifact Receiver Services bzw. SOAP Binding Services, die Klasse SAMLAuthorityService um eine Reihe von Methoden erweitert werden. Die zwei wichtigsten sind: • • Methode, die nach dem Aufruf des Artifact Receiver Service URLs das übergebene SAML-Artefakt in eine SAML-Request-Nachricht verpackt und diese über einen SOAP-Channel an den Föderationspartner verschickt. Diese Methode wird benötigt, wenn die BMW SAML-Autorität in einer heterogenen Systemumgebung als Service Provider auftreten soll. Methode, die nach dem Aufruf des SOAP Binding Service URLs das SAML-Artefakt aus einer übermittelten SAML-Request-Nachricht auspackt und mittels diesem nach einer passenden SAML-Assertion in der angebundenen SQL-Datenbank sucht. Ist eine solche Assertion vorhanden, muss diese in Form einer SAML-Response-Nachricht über einen aufgebauten SOAP Back-Channel an den Föderationspartner geschickt werden. Diese Methode wird benötigt, wenn die BMW SAML-Autorität in einer heterogenen Systemumgebung als Identity Provider auftreten soll. Neben dem Hinzufügen neuer Methoden ist es zudem erforderlich, die angebundene SQLDatenbank um eine Datenstruktur zu erweitern, die es ermöglicht, wichtige Informationen (z.B. SOAP Binding Service URL, Artifact Receiver Service URL, IssuerID, SourceID etc.) bzgl. eines vertrauenswürdigen Föderationspartners zu speichern. Nach der erfolgreichen Umsetzung der oben genannten Maßnahmen steht dem Aufbau einer föderierten SSO-Umgebung mit dem Netegrity Siteminder, dem RSA FIM und dem IBM TFIM nichts mehr im Wege. 129 Kapitel 6: Zusammenfassung und Ausblick 6. Zusammenfassung und Ausblick Im Rahmen dieser Diplomarbeit wurde die Interoperabilität dreier unterschiedlicher Identityund Access-Management-Softwareprodukte im Bereich Federated Identity Management ausführlich analysiert und evaluiert. Dies waren der Netegrity Siteminder 6.0 SP1, der RSA Cleartrust 5.5 & RSA Federated Identity Manager 2.5 und der IBM Tivoli Access Manager 5.1 & IBM Tivoli Federated Identity Manager 6.0 (Beta-Version). Mit Hilfe dieser Produkte ist es möglich, Vertrauensbeziehungen (Föderationen) zu anderen (entfernten) Domänen aufzubauen. Dadurch können sich Benutzer - nach einer einmaligen Authentifizierung in ihrer Heimdomäne – übergangslos, d.h. ohne eine erneute Authentifizierung zwischen den jeweiligen Domänen bewegen (Federated Single Sign-On). Dazu müssen Sicherheitsinformationen (z.B. Authentifizierungsdaten eines Benutzers) ausgetauscht werden. Als Austauschformat für diese Informationen wurde der Standard SAML (Security Assertion Markup Language) 1.0/1.1 verwendet. Momentan existieren mehrere unterschiedliche Föderationstandards, die den sicheren Austausch von Identitätsinformationen über Domänengrenzen hinweg ermöglichen. Die wichtigsten sind SAML, WS-Federation und Liberty ID-FF. Im Rahmen dieser Diplomarbeit wurden diese teilweise recht unterschiedlichen Spezifikationen vorgestellt und auf ihre Fähigkeiten und Unterschiede hin untersucht. Die historische Entwicklung bei anderen großen Protokollen wie z.B. HTTP oder TCP zeigt jedoch, dass sich auf Dauer keine zwei oder mehr konkurrierenden Standards in der Praxis halten können. Aktuell sieht es so aus, als könne SAML in Verbindung mit den Protokollen der Liberty Alliance im Standard-Wettstreit die Oberhand gewinnen [FedFuture]. Dies zeigt auch die Veröffentlichung des SAML 2.0 Standards im März dieses Jahres. SAML 2.0 wurde in Zusammenarbeit mit dem OASIS Konsortium, der Liberty Alliance und der Shibboleth-Gruppe entworfen mit dem Ziel, die verschiedenen existierenden Standards zu einem einzigen zu vereinigen. Nach der Meinung vieler Experten ist SAML 2.0 ein maßgeblicher Schritt in Richtung einer vollständigen Konvergenz der verschiedenen Federated Identity Standards. Deshalb haben bereits nahezu alle namhaften Hersteller von Sicherheitsprodukten angekündigt, noch innerhalb dieses Jahres SAML 2.0 in ihre Produkte zu implementieren. Ob SAML 2.0 jedoch die hohen Erwartungen, die in diesen Standard gelegt werden, erfüllen kann, muss die Zukunft zeigen. Dazu muss sich der neue Standard zuallererst in der Praxis bewähren. Das Hauptaugenmerk in dieser Diplomarbeit lag deshalb auf den Vorgängerversionen von SAML 2.0 (SAML 1.0/1.1). Diese(r) Standard(s) bildete(n) die Grundlage für die durchgeführte Produktevaluierung. Dazu wurde im Rahmen dieser Diplomarbeit die Interoperabilität dreier unterschiedlicher Identity/Access-Management-Lösungen im Bereich Federated Identity ausführlich analysiert und evaluiert. Die Ergebnisse dieser Diplomarbeit zeigen, dass in ca. 50 % der aufgestellten Testszenarios ein föderierter Austausch von Identitätsinformationen erfolgreich möglich war. Die Hauptursache für das Scheitern einiger Testfälle war stets auf eine mangelhafte Konformität der ausgestellten SAML-Assertions bezüglich der OASIS SAML 1.0/1.1 130 Kapitel 6: Zusammenfassung und Ausblick Spezifikation(en) zurückzuführen. Hier schnitt vor allem der Netegrity Siteminder 6.0 SP1 schlecht ab. Die Assertions dieses Produkts entsprachen in manchen Teilen nicht den Anforderungen der SAML-Spezifikation. Deshalb musste speziell für dieses Produkt ein Assertion-Generator Java-Plugin geschrieben und integriert werden. Dieses Plugin war in der Lage, die ausgehenden Netegrity Assertions entsprechend den Regeln der SAML Spezifikation 1.0 abzuändern. Dadurch war es dem CA Produkt erfolgreich möglich, gegenüber dem RSA Cleartrust- & FIM-System, welches als Service Provider fungierte, als Identity Provider aufzutreten. In der Funktion des Service Providers konnte der Netegrity Siteminder 6.0 SP1 in keinem der untersuchten Szenarios erfolgreich getestet werden. In der Praxis sollte deshalb von einem Einsatz des Netegrity Siteminders 6.0 SP1 in der Funktion des SPs abgesehen werden. Vollständig ohne Probleme konnte der Netegrity Siteminder ausschließlich in Verbindung mit dem hauseigenen Produkt SAML Affiliate Agent verwendet werden. Eine mögliche Verbesserung bzgl. der Interoperablität mit den Produkten anderer Hersteller bietet eventuell die neue Version des Netegrity Siteminders (Netegrity Siteminder SP2 + OptionPack QMR2). Laut den Aussagen von Computer Associates wurde die SAML-Autorität in dieser Version in einigen entscheidenden Punkten überarbeitet. Dies umfasst insbesondere die Beseitigung der vorhandenen proprietären Tags innerhalb der generierten SAML-Assertions. In der Diplomarbeit wurde dieses Problem durch den Einsatz eines Java-Plugins gelöst. Eine Möglichkeit, die Interoperabilitätsprobleme des CA Produkts komplett zu beheben, wäre der Einsatz des RSA Federated Identity Managers 2.5 in Verbindung mit dem Netegrity Siteminder. Da RSA FIM 2.5 als standalone Komponente konzipiert wurde, welche unabhängig von der verwendeten Identity/Access Management Lösung agieren kann, besteht die Möglichkeit, diese auch in Kombination mit dem Netegrity Siteminder zu verwenden. Der Netegrity Siteminder würde dann ausschließlich Authentifizierungsbzw. Autorisierungsfunktionen übernehmen. Der Austausch von SAML-Nachrichten wäre dann Aufgabe des RSA FIMs. Bessere Ergebnisse als das Netegrity Produkt (Hersteller Computer Associates) lieferte sowohl die Softwarelösung von RSA als auch die Softwarelösung von IBM. Beide Produkte erstellten weitgehend konforme SAML-Assertions, wobei zu beachten ist, dass die BetaVersion des IBM Federated Identity Managers 6.0 ausschließlich den Austausch von SAML 1.0-Nachrichten unterstützte. Der RSA Federated Identity Manager 2.5 bot mit einem kleinen Vorsprung vor dem IBM Federated Identity Manager die beste SAML-Autorität. Die ausgestellten SAML-Request/Response-Nachrichten dieser Autorität waren stets konform zu den SAML 1.0/1.1Spezifikationen. Deshalb bereitete das RSA Produkt während der Interoperablitätsanalyse nur wenige Probleme. Nahezu alle Testszenarios, an denen dieses Produkt beteiligt war (außer dem Testfall RSA (IdP) – Netegrity (SP)), konnten erfolgreich umgesetzt werden. Ein Grund für dieses hervorragende Abschneiden ist sicherlich auch der Umstand, dass die RSA SAMLAutorität auf den öffentlich zugänglichen APIs von OpenSAML basiert. 131 Kapitel 6: Zusammenfassung und Ausblick Der IBM Tivoli Access Manager 5.1 & Tivoli Federated Identity Manager 6.0 war das komplexeste Produkt in der Testumgebung. Der Aufbau der Architektur war im Vergleich zu den anderen getesteten Produkten aufwändiger und zeitintensiver. Teile der Konfiguration konnten trotz der Bereitstellung einer grafischen Benutzerschnittstelle (IBM ISC) nur über Konsolenbefehle durchgeführt werden. Hierbei muss jedoch berücksichtigt werden, dass der Federated Identity Manager 6.0 zur Zeit der Tests ausschließlich in einer Beta-Version vorlag. Eine offizielle Veröffentlichung dieses Produkts wurde für das 2.Quartal 2005 angekündigt. Die SAML-Assertions der IBM SAML-Autorität waren nach der Installation eines bereitgestellten Hotfixes vollständig konform zum SAML Standard 1.0. Neben SAML unterstützt das IBM Produkt zudem die Föderationstandards Liberty ID-FF 1.1 und WSFederation. Der Tivoli Federated Identity Manager 6.0 ist damit eine der wenigen aktuellen SAML-Implementierungen, welche den Standard WS-Federation unterstützt. Zur Absicherung des domänenübergreifenden Informationsaustausches ermöglicht der Federation Manager zudem den Einsatz von WS-Security. Abbildung 26 zeigt eine Übersicht der Interoperablitätsergebnisse, die im Rahmen dieser Diplomarbeit ermittelt wurden Entwurf und Integration eines Java-Plugins Netegrity SiteMinder 6.0 + Hotfixes Identity Provider Identity Provider Identity Provider Identity Provider Identity Provider RSA ClearTrust 5.5 + Federated Identity Mgr. 2.5 IBM TAM 5.1 & Federated Identity Mgr. 6.0 + Hotfix Identity Provider Legende: Interoperabilitätsanalyse in mindestens einem Anwendungsfall erfolgreich Interoperabilitätsanalyse in keinem Anwendungsfall erfolgreich Interoperabilität nicht definitiv feststellbar Abbildung 26: Ergebnisse der Interoperablitätsanalyse 132 Kapitel 6: Zusammenfassung und Ausblick Abschließend muss jedoch bemerkt merken, dass keines der vorgestellten Produkte die SAML Spezifikation(en) 1.0 bzw. 1.1 vollständig implementiert. Obwohl im SAML Standard spezifiziert, unterstützt - mit Ausnahme des RSA Federated Identity Managers - keines der anderen Produkte explizite bzw. dynamische Attributanfragen (basierend auf SAML Attribute-Request bzw. SAML Attribute-Responses). Ein Austausch von Attributen ist beim Netegrity Siteminder 6.0 SP1 und beim IBM Tivoli Federated Identity Manager 6.0 deshalb nur statisch innerhalb von SAML Attribute-Assertions möglich. Eine entfernte Autorisierung, beruhend auf SAML Authorization-Assertions, wird sogar von keinem der drei Produkte unterstützt. Gerade dieser Use Case ist jedoch in der Praxis sehr relevant (z.B. das Abfragen der Kreditwürdigkeit eines Benutzers). Es wäre deshalb wünschenswert, wenn die Hersteller bei den zukünftigen Versionen ihrer Föderationsprodukte diesen Anwendungsfall berücksichtigen würden. 133 Anhang A. Anhang A.1 Quellcode Assertion Generator Plugin (Netegrity Siteminder 6.0 SP1) Der folgende Java-Quellcode zeigt das Assertion-Generator-Plugin, das im Rahmen dieser Diplomarbeit programmiert werden musste, um die Netegrity SAML 1.0-Assertions konform zu den Anforderung der OASIS SAML 1.0-Spezifikation abzuändern (vgl. Kapitel 5.2.2). package com.netegrity.assertiongenerator; import com.netegrity.policyserver.smapi.*; import java.io.*; import java.util.*; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Node; import org.w3c.dom.Element; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Attr; import org.w3c.dom.traversal.NodeIterator; import org.xml.sax.InputSource; import org.apache.xpath.XPathAPI; import org.apache.xerces.dom.*; import org.apache.xerces.parsers.*; import org.apache.xml.serialize.XMLSerializer; import org.apache.xml.serialize.OutputFormat; /** * MyAssertion * * This Assertion Generator Plugin modifies assertion : * - Remove Namespace "xmlns:SM" attribute from header * - Change wrong URI "urn:oasis:names:tc:SAML:1.0:assertion" to SAML 1.0 * conform URI "urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" * - Change attributes from "<SM:NVpair>" to "<saml:Attribute>" * - Change value of Attribute "AuthenticationMethod" within Element * <AuthenticationStatement> from "unspecified" to "password" * - Add <SubjectConfirmation>-Tag if not available * - Change position of Element <AttributeStatement> **/ public class MyAssertion implements AssertionGeneratorPlugin { [...] public int customizeAssertion(APIContext apiContext, UserContext userContext,String pluginParam, String inputAssertion, 134 Anhang final StringBuffer outputAssertion) throws Exception { if (inputAssertion == null || inputAssertion.equals("")) { // Indicates non-zero for an error. return -1; } apiContext.trace("Sample Assertion Plugin", "Entering customizeAssertion"); // Initialize a new handler for each call. AssertionDocumentHandler handler = initDocumentHandler(apiContext, userContext); // Parse the assertion Document assertionDoc = handler.parseAssertion(inputAssertion); if (assertionDoc == null) { apiContext.trace("Sample Assertion Plugin", "Failed to parse the assertion"); return 1; } apiContext.trace("Sample Assertion Plugin", "Input assertion parsed"); // Remove "SM" namespace from root node if (!handler.RemoveSMNamespace(assertionDoc)) { apiContext.trace("Sample Assertion Plugin", "Failed to remove 'xmlns:SM'"); return 2; } apiContext.trace("Sample Assertion Plugin", "'xmlns:SM' removed"); //Change URI "urn:oasis:names:tc:SAML:1.0:assertion" to //"urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" if (!handler.ChangeFormatInNameIdentifier(assertionDoc)) { apiContext.trace("Sample Assertion Plugin", "Change of Format URI Failed"); return 3; } apiContext.trace("My Assertion Plugin", "Changed Format URI within <NameIdentifier>"); // Change attributes from namespace "SM" to namespace "saml" if (!handler.ChangeAttributes(assertionDoc)) { apiContext.trace("Sample Assertion Plugin", "Failed to change attributes"); return 4; 135 Anhang } apiContext.trace("Sample Assertion Plugin", "SAML attributes changed"); // Changing value of Attribute "AuthenticationMethod" within //Element <AuthenticationStatement> ("unspecified" ->"password") if (!handler.changeAuthenticationMethod(assertionDoc)) { apiContext.trace("Sample Assertion Plugin", "Failed to change Element <AuthenticationStatement>"); return 7; } apiContext.trace("Sample Assertion Plugin", "Element <AuthenticationStatement> changed"); /** Add <SubjectConfirmation> Tag if not already existent */ if (!handler.addSubjectConfirmation(assertionDoc)) { apiContext.trace("Sample Assertion Plugin", "Failed to add Element <SubjectConfirmation>"); return 8; } apiContext.trace("Sample Assertion Plugin", "Element <SubjectConfirmation> added"); /** Change position of Element <AttributeStatement>, so that Tag <AuthenticationStatement> is placed before <AttributeStatement> otherwise RSA FIM 2.5 can not parse Assertion) */ if (!handler.RemoveAttributeStatement2(assertionDoc)) { apiContext.trace("Sample Assertion Plugin", "Failed to change position of Element <Attributestatement>"); return 5; } apiContext.trace("Sample Assertion Plugin", "Position of <AttributeStatements> changed"); // Save SAML-Assertion String strOut = handler.saveAssertion(assertionDoc); if (0 == strOut.length()) { apiContext.trace("Sample Assertion Plugin", "Failed to create an output assertion"); return 6; } apiContext.trace("Sample Assertion Plugin", "Assertion saved to a string"); outputAssertion.append(strOut); apiContext.trace("Sample Assertion Plugin", "Done customizeAssertion"); 136 Anhang // return "success" return 0; } [...] /** * Each plugin will only have one instance running per SiteMinder * Policy Server. * This class provides a handler for each plugin call so that the * plugin can be stateless and re-enteriable. */ class AssertionDocumentHandler { [...] /** * Parse the input assertion into a XML DOM document. */ protected Document parseAssertion(String sAssertion) throws Exception { DOMParser domParser = new DOMParser(); InputSource inSource = new InputSource(new ByteArrayInputStream(sAssertion.getBytes())); // Parse the Assertion XML message body domParser.parse(inSource); return domParser.getDocument(); } /** Change Format of NameIdentifier from "urn:oasis:names:tc:SAML:1.0:assertion" to "urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" */ protected boolean ChangeFormatInNameIdentifier(Document assertionDoc) { //Get document root Element Element xRoot = assertionDoc.getDocumentElement(); // Get all Elements "NameIdentifier" within the Assertion NodeList listNameIdentifier = xRoot.getElementsByTagName("saml:NameIdentifier"); if(listNameIdentifier.getLength()==0) { apiContext.trace("My Assertion Plugin", " Couldn’t find NameIdentifier Tag "); } for (int i = 0; i < listNameIdentifier.getLength(); ++i) { 137 Anhang Element nameId = (Element)listNameIdentifier.item(i); nameId.setAttribute("Format","urn:oasis:names:tc:SAML:1.0:a ssertion#X509SubjectName"); } return true; } /** Remove Elements <AttributeStatement> from the beginning of the Assertion and append it to the end of the Assertion */ protected boolean RemoveAttributeStatement2(Document assertionDoc) { //Get document root Element Element xRoot = assertionDoc.getDocumentElement(); //Get node "saml:Assertion" Node nodeSamlAssertion = assertionDoc.getFirstChild(); // Get all Elements "AttributeStatement" within the Assertion NodeList listAttributeStatements = xRoot.getElementsByTagName("saml:AttributeStatement"); if(listAttributeStatements.getLength()==0) { apiContext.trace("My Assertion Plugin", "Couldn’t find AtrributeStatement Tag"); } for (int i = 0; i < listAttributeStatements.getLength(); ++i) { Node attributeStatement = listAttributeStatements.item(i); Node temp = nodeSamlAssertion.removeChild(attributeStatement); Node temp2 =nodeSamlAssertion.appendChild(attributeStatement); } return true; } /**Change Attribute AuthenticationMethod within Element AuthenticationStatement(from "unspecified" to "password") */ protected boolean changeAuthenticationMethod(Document assertionDoc) { //Get document root Element Element xRoot = assertionDoc.getDocumentElement(); // Get all Element "AuthenticationStatement" within Assertion NodeList listAuthenticationStatement = xRoot.getElementsByTagName("saml:AuthenticationStatement"); if(listAuthenticationStatement.getLength()==0) { 138 Anhang apiContext.trace("My Assertion Plugin", "Couldn’t find AuthenticationStatement Tag"); } for (int i = 0; i < listAuthenticationStatement.getLength(); ++i) { Element authSt = (Element)listAuthenticationStatement.item(i); authSt.setAttribute("AuthenticationMethod","urn:oasis:na es:tc:SAML:1.0:am:password"); } return true; } /** Add Element <SubjectConfirmation> to Assertion if not already existent*/ protected boolean addSubjectConfirmation(Document assertionDoc) { //Get document root Element Element xRoot = assertionDoc.getDocumentElement(); //Create new <SubjectConfirmation> Element Element subconf = assertionDoc.createElement("saml:SubjectConfirmation"); //Create new <ConfirmationMethod> Element Element confmeth = assertionDoc.createElement("saml:ConfirmationMethod"); //Create new Text Node and add to <ConfirmationMethod> confmeth.appendChild(assertionDoc.createTextNode("urn:oasis:nam es:tc:SAML:1.0:cm:artifact-01")); //Add <ConfirmationMethod> to <SubjectConfirmation> Element subconf.appendChild(confmeth); // Get all Elements "AttributeStatement" within the Assertion NodeList listSubjects = xRoot.getElementsByTagName("saml:Subject"); if(listSubjects.getLength()==0) { apiContext.trace("My Assertion Plugin", "Couldn’t find Subject Tag"); } for (int i = 0; i < listSubjects.getLength(); ++i) { Node subject = listSubjects.item(i); subject.appendChild(subconf); } return true; } /** Remove "SM" namespace from root node*/ protected boolean RemoveSMNamespace(Document assertionDoc) { 139 Anhang // Get root node "saml:Assertion" Node nodeSamlAssertion = assertionDoc.getFirstChild(); // Get Attributes of Node NamedNodeMap nnm = nodeSamlAssertion.getAttributes(); // Remove "Format" attribute within NameIdentifier Element nnm.removeNamedItem("xmlns:SM"); return true; } [...] /** * Generic method to create Saml Attribute. */ protected Node createSamlAttr(Document assertionDoc, String sAttrName, String sAttrNameSpace, String sValue) { Element elemValue = assertionDoc.createElement("saml:AttributeValue"); elemValue.appendChild(assertionDoc.createTextNode(sValue)); Element elemRoot = assertionDoc.createElement("saml:Attribute"); elemRoot.appendChild(elemValue); elemRoot.setAttribute("AttributeName", sAttrName); elemRoot.setAttribute("AttributeNamespace", sAttrNameSpace); return elemRoot; } [...] /**Output the modified assertion document in a String.*/ protected String saveAssertion(Document assertionDoc) throws Exception { OutputFormat outputFormat = new OutputFormat(assertionDoc); outputFormat.setPreserveSpace(true); outputFormat.setOmitXMLDeclaration(true); StringWriter writerOut = new StringWriter(); XMLSerializer xmlSerializer = new XMLSerializer(writerOut, outputFormat); xmlSerializer.serialize(assertionDoc); writerOut.flush(); return writerOut.toString(); } } } 140 Anhang A.2 Beispiele zum Liberty ID-FF 1.2 Protokoll Das folgende XML-Dokument zeigt ein Beispiel für einen Liberty ID-FF 1.2 AuthenticationRequest (lib:authnRequest). <lib:AuthnRequest RequestID="RPCUk2ll+GVz+t1lLURp51oFvJXk" MajorVersion="1" MinorVersion="2" consent="urn:liberty:consent:obtained" IssueInstant="2001-12-17T21:42:4Z" xmlns:lib="urn:liberty:iff:200308"> <ds:Signature> ... </ds:Signature> <lib:ProviderID>http://ServiceProvider.com</lib:ProviderID> <lib:NameIDPolicy>federate</lib:NameIDPolicy> <lib:ForceAuthn>false</lib:ForceAuthn> <lib:IsPassive>false</lib:IsPassive> <lib:ProtocolProfile>http://projectliberty.org/profiles/brws-post</lib:ProtocolProfile> <lib:RequestAuthnContext> <lib:AuthnContexClassRef> http://projectliberty.org/schemas/authctx/classes/Password-ProtectedTransport </lib:AuthnContextClassRef> <lib:AuthnContextComparison>exact</lib:AuthnContextComparison> </lib:RequestAuthnContext> <lib:RelayState>R0lGODlhcgGSALMAAAQCAEMmCZtuMFQxDS8b</lib:RelayState> <lib:Scoping> <lib:ProxyCount>1</lib:ProxyCount> </lib:Scoping> </lib :AuthnRequest> Das folgende XML-Dokument zeigt ein mögliches Beispiel für eine Liberty ID-FF 1.2 Authentication-Response (lib:authnResponse). <lib:AuthnResponse ResponseID="hhuuja1bc744hGJn5Q9A5yvEIgS" InResponseTo="Zon3WjJ2KL7j+bJu7MuIr4Ptgo5" MajorVersion="1" MinorVersion="2" consent="urn:liberty:consent:obtained" IssueInstant="2002-10-31T21:55:41Z "> <samlp:Status><samlp:StatusCodeValue="samlp:Success" /></samlp:Status> <lib:Assertion MajorVersion="1" MinorVersion="2" AssertionID="e06e5a28-bc80-4ba6-9ecb712949db686e" Issuer="http://IdentityProvider.com" IssueInstant="2001- 12-17T09:30:47Z" InResponseTo="4e7c3772-4fa4- 4a0f-99e8-7d719ff6067c"> <saml:Conditions NotBefore="2001-12-17T09: 30:47Z" NotOnOrAfter="2001-1217T09:35:47Z"> <saml :AudienceRestrictionCondition > <saml:Audience>http://ServiceProvider.com</saml:Audience> </saml:AudienceRestrictionCondition> </saml:Conditions> <lib:AuthenticationStatement AuthenticationInstant="2001-12-17T09:30:47Z" SessionIndex="3 " ReauthenticateOnOrAfter="200 1-12-17T11:30:47Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"> <lib:Subject> <saml:NameIdentifier NameQualifier="http://ServiceProvider.com" Format="urn:liberty:iff:nameid:federated"> 342ad3d8-93ee-690 4c68-be35-cc9e7db39e2b 141 Anhang </saml:NameIdentifier> <saml:SubjectConfirmation> <saml:ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:bearer </saml:ConfirmationMethod> </saml:SubjectConfirmation> <IDPProvidedNameIdentifier NameQualifier="http://ServiceProvider.com" Format="urn:liberty:iff:nameid:federated"> 342ad3d8-93ee- 698 4c68-be35-cc9e7db39e2b </IDPProvidedNameIdentifier> </lib:Subject> </lib:AuthenticationStatement> <ds:Signature>...</ds:Signature> </lib:Assertion> <lib:ProviderID>http://IdentityProvider.com</lib:ProviderID> <lib:RelayState>R0lGODlhcgGSALMAAAQCAEMmCZtuMFQxDS8b</lib:RelayState> </lib:AuthnResponse> A.3 SAML-Requests & SAML-Responses Die folgenden SAML-Nachrichten wurden in der Umsetzungs- & Testphase (vgl. Kapitel 5) von den verschiedenen Sicherheitslösungen (Netegrity Siteminder 6.0 SP1, RSA Federated Identity Manager 2.5, IBM Tivoli Federated Identity Manager 6.0) ausgestellt. A.3.1 Testszenario Netegrity Siteminder 6.0 – SAML Affiliate Agent 6.x QMR2 SAML-Request (SAML Affiliate Agent 6.x): <samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" MajorVersion="1" MinorVersion="0" RequestID="112.112.1.12.1028670652906" IssueInstant="2002-08-06T21:50:52.906Z"> <samlp:AssertionArtifact> AAG4GEUmEKDqQxv/ad00au7/gxKLakNjY1IwSW1FT3VVMVhvSjhEd0hBd2xZSTRRTT 06YTI0NWMwZmQyYzJlNTU2Mw== </samlp:AssertionArtifact> </samlp:Request> SAML-Response (Netegrity Siteminder 6.0 ohne Plugin): <samlp:Response InResponseTo="SM10.250.21.53.1109951920942" IssueInstant="2005-0304T15:58:57.238Z" MajorVersion="1" MinorVersion="0" ResponseID="10.250.23.22.1109951937238" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"> <samlp:Status xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"> <samlp:StatusCode Value="samlp:Success"/> </samlp:Status> <saml:Assertion AssertionID="SM10.250.23.22.1109951920503" IssueInstant="2005-0304T15:58:40.503Z" Issuer="http://www.netegrity.com/SiteMinder" MajorVersion="1" 142 Anhang MinorVersion="0" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"> <saml:Conditions NotBefore="2005-03-04T15:58:10.487Z" NotOnOrAfter="2005-0304T16:25:50.487Z"></saml:Conditions> <saml:AttributeStatement> <saml:Subject> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.0:assertion" NameQualifier="www.netegrity.com"> uid=admin,ou=Administrators,o=NetscapeRoot </saml:NameIdentifier> </saml:Subject> <saml:Attribute AttributeName="SMContent" AttributeNamespace="http://www.netegrity.com/SiteMinder"> <saml:AttributeValue> <SM:SMContent xmlns:SM="http://www.netegrity.com/SiteMinder"> <SM:SMsession> <SM:SessionID> R0RXZawjNPY6O7ovk6bSQLvLRVk= </SM:SessionID> <SM:startTime>1109951920</SM:startTime> <SM:idleTimeout>3600</SM:idleTimeout> <SM:maxTimeout>7200</SM:maxTimeout> </SM:SMsession> <SM:SMprofile> <SM:NVpair>cookie:userid=admin</SM:NVpair> <SM:NVpair>cookie:businesscategory=Gold</SM:NVpair> </SM:SMprofile> </SM:SMContent> </saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> <saml:AuthenticationStatement AuthenticationInstant="2005-03-04T15:58:40.000Z" AuthenticationMethod="Unspecified"> <saml:Subject> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.0:assertion" NameQualifier="www.netegrity.com"> uid=admin,ou=Administrators,o=NetscapeRoot </saml:NameIdentifier> </saml:Subject> </saml:AuthenticationStatement> </saml:Assertion> </samlp:Response> A.3.2 Testszenario Netegrity Siteminder 6.0 – RSA Cleartrust & RSA FIM 2.5 SAML-Request (RSA FIM 2.5): <samlp:Request IssueInstant="2005-05-27T10:42:44Z" MajorVersion="1" MinorVersion="0" RequestID="_1487908810a884fe8cd5958e15a4b84b356ba2b5"xmlns:ds="http://www.w3.org/2000/09/xmldsig #" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"> 143 Anhang <samlp:AssertionArtifact> AAG4GEUmEKDqQxv/ad00au7/gxKLasBSMedIN/4qTuRVUEwcIZLLF+yK </samlp:AssertionArtifact> </samlp:Request> SAML-Response (Netegrity Siteminder 6.0 mit Plugin): <samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" InResponseTo="_07aea8f44cba5acdbee807aaef24b4edab6b5aa8" IssueInstant="2005-05-27T11:14:21Z" MajorVersion="1" MinorVersion="0" Recipient="" ResponseID="10.250.23.22.1117192461657"> <samlp:Status> <samlp:StatusCode Value="samlp:Success"></samlp:StatusCode> </samlp:Status> <saml:Assertion AssertionID="SM10.250.23.22.1117192456313" IssueInstant="2005-0527T11:14:36Z" Issuer="http://www.netegrity.com/SiteMinder" MajorVersion="1" MinorVersion="0"> <saml:Conditions NotBefore="2005-05-27T11:13:46Z" NotOnOrAfter="2005-0527T11:15:46Z"></saml:Conditions> <AuthenticationStatement AuthenticationInstant="2005-05-27T11:14:11Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"> <Subject xmlns="urn:oasis:names:tc:SAML:1.0:assertion"> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" NameQualifier="http://www.netegrity.com/SiteMinder"> uid=admin,ou=Administrators,o=NetscapeRoot </saml:NameIdentifier> <SubjectConfirmation> <ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:artifact-01 </ConfirmationMethod> </SubjectConfirmation> </Subject> </AuthenticationStatement> <saml:AttributeStatement> <saml:Subject> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" NameQualifier="http://www.netegrity.com/SiteMinder"> uid=admin,ou=Administrator,o=NetscapeRoot </saml:NameIdentifier> </saml:Subject> <saml:Attribute AttributeName="businesscategory" AttributeNamespace="header"> <saml:AttributeValue>gold</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> </samlp:Response> 144 Anhang A.3.3 Testszenario RSA Cleartrust & RSA FIM 2.5 – Netegrity Siteminder 6.0 SAML-Request (Netegrity Siteminder 6.0): <samlp:Request IssueInstant="2005-03-16T13:57:49Z" MajorVersion="1" MinorVersion="0" RequestID="10.250.23.22.1117197899957" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"> <samlp:AssertionArtifact> AAG6SmG+swmnFS84KS0Yi4VWAlgilU3mZn61Qxv9sPQ+Ixp0Ce96pwUM </samlp:AssertionArtifact> </samlp:Request> SAML-Response (RSA FIM 2.5): <samlp:Response InResponseTo="10.250.23.22.1117201803404" IssueInstant="2005-03-16T13:57:55Z" MajorVersion="1" MinorVersion="0" Recipient="http://itacpi29.testeurope1.bmwgroup.com" ResponseID="_ebdc30fbe383a07780afd796a6fcea784716cefc" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"> <samlp:Status><samlp:StatusCode Value="samlp:Success"/></samlp:Status> <saml:Assertion AssertionID="_f06224aa7db4d9124c4e173657b367814ea4e8b4" IssueInstant="200505-27T13:50:09Z" Issuer="_2fedf960dc60d9134f9161d88e0bc03d9a413e77" MajorVersion="1" MinorVersion="0"> <saml:Conditions NotBefore="2005-05-27T13:45:03Z" NotOnOrAfter="2005-05-27T14:00:03Z"/> <saml:AuthenticationStatement AuthenticationInstant="2005-05-27T13:50:00Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"> <saml:Subject> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" NameQualifier="www.rsa.com"> uid=admin </saml:NameIdentifier> <saml:SubjectConfirmation> <saml:ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:artifact-01 </saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> </saml:AuthenticationStatement> </saml:Assertion> </samlp:Response> A.3.4 Testszenario IBM TAM 5.1 & TFIM 6.0 – RSA Cleartrust 5.5 & FIM 2.5 SAML-Request (RSA FIM 2.5): <samlp:Request IssueInstant="2005-05-27T12:50:44Z" MajorVersion="1" MinorVersion="0" RequestID="_1458697809874tfe8tz7858e15a4b19dt6578uk64"xmlns:ds="http://www.w3.org/2000/09/xmldsig 145 Anhang #" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"> <samlp:AssertionArtifact> AAG4GEULOKDuIz/ls01au7/rtDLlkLKUedIN/7pTuRVUEwvBgTERF+Lo </samlp:AssertionArtifact> </samlp:Request> </soapenv:Body> </soapenv:Envelope> SAML-Response (IBM TFIM 6.0): <samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant="2005-05-27T12:49:58Z" MajorVersion="1" MinorVersion="0" ResponseID="FIMRSP_1df1456c-0104-f6fd-4248-802c7617b9b2"> <samlp:Status> <samlp:StatusCode Value="samlp:Success"/> </samlp:Status> <saml:Assertion AssertionID="Assertion-uuid1df143c6-0104-fa1b-6c52-802c7617b9b2" IssueInstant="200505-27T12:49:57Z" Issuer="http://itahpi14.testeurope1.bmwgroup.com" MajorVersion="1" MinorVersion="0" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"> <saml:Conditions NotBefore="2005-05-27T12:36:57Z" NotOnOrAfter="2005-05-27T12:52:57Z"> <saml:AudienceRestrictionCondition> <saml:Audience> http://itacpi09.testeurope1.bmwgroup.com:7001/samlrelyingparty/RP </saml:Audience> </saml:AudienceRestrictionCondition> </saml:Conditions> <saml:AuthenticationStatement AuthenticationInstant="2005-05-27T12:47:27Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"> <saml:Subject> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" NameQualifier="www.ibm.com"> uid=admin </saml:NameIdentifier> <saml:SubjectConfirmation> <saml:ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:artifact-01 </saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> </saml:AuthenticationStatement> <saml:AttributeStatement> <saml:Subject> <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName" NameQualifier="www.ibm.com"> uid=admin </saml:NameIdentifier> <saml:SubjectConfirmation> <saml:ConfirmationMethod> 146 Anhang urn:oasis:names:tc:SAML:1.0:cm:artifact-01 </saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> <saml:Attribute AttributeName="businesscategory" AttributeNamespace="header"> <saml:AttributeValue>bronze</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> </samlp:Response> A.3.5 Testszenario IBM TAM 5.1 & TFIM 6.0 – Netegrity Siteminder 6.0 SAML-Request (Netegrity Siteminder 6.0): <samlp:Request IssueInstant="2005-05-27T12:05:20.176Z" MajorVersion="1" MinorVersion="0" RequestID="10.250.23.22.1117195520176" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"> <samlp:AssertionArtifact> AAFczW3Kc7JLyY4wdiJPHC4DlME4el53ZQGocarcYLxqhLNEwSrLzJ3Y </samlp:AssertionArtifact> </samlp:Request> SAML-Response (IBM TFIM 6.0): <samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant="2005-05-27T12:05:39Z" MajorVersion="1" MinorVersion="0" ResponseID="FIMRSP_3ol4489c-6798-f3e4-4248-345f2617d8f9i"> <samlp:Status> <samlp:StatusCode Value="samlp:Success"/> </samlp:Status> <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" MajorVersion="1" MinorVersion="0" AssertionID="Assertion-uuid1e0b18df-0104-f9b3-a807-802c7617b9b2" Issuer="http://itahpi14.testeurope1.bmwgroup.com" IssueInstant="2005-05-27T12:05:40.000Z"> <saml:Conditions NotBefore="2005-05-27T12:04:40.000Z" NotOnOrAfter="2005-0527T12:10:40.000Z"> <saml:AudienceRestrictionCondition> <saml:Audience> http://itacpi29.testeurope1.bmwgroup.com/affwebservices/public/samlcc </saml:Audience> </saml:AudienceRestrictionCondition> </saml:Conditions> <saml:AuthenticationStatement AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password" AuthenticationInstant="2005-05-27T12:05:40.000Z" > <saml:Subject> <saml:NameIdentifier NameQualifier="www.ibm.com" Format="urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName"> uid=admin </saml:NameIdentifier> 147 Anhang <saml:SubjectConfirmation> <saml:ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:artifact-01 </saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> </saml:AuthenticationStatement> <saml:AttributeStatement> <saml:Subject> <saml:NameIdentifier NameQualifier="www.ibm.com" Format="urn:oasis:names:tc:SAML:1.0:assertion#X509SubjectName"> uid=admin </saml:NameIdentifier> <saml:SubjectConfirmation> <saml:ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:artifact-01 </saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> <saml:Attribute AttributeName="businesscategory" AttributeNamespace="header"> <saml:AttributeValue>bronze</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> 148 Abkürzungsverzeichnis Abkürzungsverzeichnis ACL AP ARS BAP BPP CORBA DN FF FIM GSKit HTML HTTP HTTPS IAM ID IdP IETF ISC ISX IP IT J2EE JNDI JRE JSP LDAP MS MSO OASIS ODBC PDP PEP PGP PUID RBAC RDN RMI RP SAML SIS SMTP SOA SOAP SP SPS SQL SSI SSL Access Control List Asserting Party Artifact Receiver Service Browser/Artifact-Profile Browser/Post-Profile Common Object Request Broker Architecture Distinguished Name Federation Framework Federated Identity Management/Federated Identity Manager Global Security Kit Hypertext Markup Language Hypertext Transfer Protocol HyperText Transfer Protocol Secure Identity und Access Management Identity/Identifier Identity Provider Internet Engineering Task Force Integrated Solutions Console Inter-Site Transfer Service Internet Protocol Informationstechnik Java 2 Enterprise Edition Java Naming and Directory Interface Java-Runtime-Environment Java Server Page Lightweight Directory Access Protocol Microsoft Multiple Sign-On Organization for the Advancement of Structured Information Standards Open Database Connectivity Policy-Decision-Point Policy-Enforcement-Point Pretty Good Privacy Passport User ID Role-Based Access Control Relative Distinguished Name Remote Method Invocation Relying Party Security Assertion Markup Language Services Interfaces Specifications Simple Mail Transfer Protocol Service Oriented Architecture Simple Object Access Protocol Service Provider SSO Protocol Service Structured Query Language Single Sign-In Secure-Sockets-Layer 149 Abkürzungsverzeichnis SSO TAM TFIM TC TCP TLS UDDI URI URL UTC W3C WPM WS WSDL WSF XML XrML XSD XSL Single Sign-On Tivoli Access Manager Tivoli Federated Manager Technical Committee Transmission Control Protocol Transport Layer Security Universal Description, Discovery and Integration Uniform Resource Identifier Uniform Resource Locator Universial Time Coordinated World Wide Web Consortium Web Portal Manager Web-Services Web-Services Definition Language Web-Service Framework Extensible Markup Language Extensible Rights Markup Language XML Schema Definition Extensible Stylesheet Language 150 Literaturverzeichnis Literaturverzeichnis [AMAdmin] IBM Tivoli Access Manager for e-business (Version 5.1): “Base Installation Guide”, 2003, http://publib.boulder.ibm.com/tividd/td/ITAME/SC32-136200/en_US/PDF/am51_install.pdf [AMWebseal] IBM Tivoli Access Manager for e-business (Version 5.1): “WebSEAL Administrator Guide”, 2003, http://publib.boulder.ibm.com/infocenter/ tiv2help/topic/com.ibm.itame2.doc_5.1/am51_webseal_guide.pdf [AuthWeb] Blum, T. : “Untersuchung von Authentifizierungsverfahren für verteilte Web-Systeme zur Integration und sicheren Nutzung angebotener Dienste”, Fernuniversität Hagen, 2003, http://www.fernunihagen.de/etit/Forschung/ ForBer2-2003_blum.pdf [BurtonFIM] Blum, D., Lewis, J.: “Toward Federated Identity Management: The Journey Continues”, Burton Group Research Report, 2003 [CA] Computer Associates, http://www.ca.com/ [CORBA] Object Management Group: “Catalog of CORBA/IIOP Specifications”, 2005 http://www.omg.org/technology/documents/corba_spec_catalog.htm [DefAuth] Galileo Computing: “Glossar – Authentifizierung”, 2005, http://www.galileo computing.de/glossar/gp/anzeige9037?GalileoSession=18247303A10Rk8MP 0.o [DefAuz] ComputerBase-Lexikon: “Autorisierung”, 2005, http://www.computerbase. de/lexikon/Autorisierung [DefID] Universität Magdeburg, Fakultät Informatik: “Definition Identität”, 2004, http://www.cs.uni-magdeburg.de/~nenglisc/definitionidentitaet.html [DefIF] Lexias Inc. : “Glossary of Terms http://www.lexias.com/2.0/glossary4.html [DOM] W3C Document Object Model (DOM), 2005, http://www.w3.org/DOM/ [FedFuture] Neuenschwander, M., Blum, D. : “Federating a Distributed World: Asserting Next-Generation Identity Standards”, Version 1.0, Burton Group Research Report, 2005 Siew, T. P. : “OASIS: Functional Elements Specification”, Working Draft 02, 2004, http://xml.coverpages.org/FWSI-FEGuidelinesV03-10253.pdf [FedSSO] [FedTrend] [FIM] (4) – Identification”, 2005, Neuenschwander, M., Blum, D. et al. : “VantagePoint 2005-2006 Enterprise Trends in Identity and Privacy”, Version 2.0, Burton Group Research Overview, 2005 Metzger, S. : “Föderiertes Identity Management bei der BMW Group”, Technische Universität München, 2004 151 Literaturverzeichnis [FIMReq] VeriSign Whitepaper: ”Trusted Federated Identity Solution Architecture – Business Requirements”, 2004, http://www.verisign.com/static/016556.pdf [IBM] IBM, http://www.ibm.com/ [IBMFIM] Harry, J., Salmon, A. : “IBM Tivoli Federated Identity Manager 6.0 ESP Cookbook – Federated Single Sign-On (FSSO)”, 2005 [IBMPreq] Harry, J., Salmon, A. : “IBM Tivoli Federated Identity Manager 6.0 Early Support Program – Prerequisite Installation Guide for Windows 2003 Server”, 2005 [IBMRed] Buecker, A., Filip, W. et al. : “IBM Redbook – Federated Identity Management with IBM Tivoli Security Solutions”, 2004 [IETF] Internet Engineering Task Force, http://www.ietf.org/ [INQ] Farrell, N. :” Microsoft gives up Passport world domination wheeze”, The Inquirer, 2004, http://www.theinquirer.net/?article=19227 [ITSec] Ostler, U. : “Federated Identity Management erteilt digitale Passierscheine”, 2004, http://www.silicon.de/cpo/hgr-itsecurity/detail.php?nr=17781 [Kerb] MIT Kerberos, http://web.mit.edu/kerberos/www/ [LibAll] Liberty Alliance, http://www.projectliberty.org/ [LibArch] Wason, T. : “Liberty ID-FF Architecture Overview (Version 1.2)”, 2003, http://www.projectliberty.org/specs/liberty-idff-arch-overview-v1.2.pdf [LibBind] Cantor, S., Kemp, J. et al. : “Liberty ID-FF Bindings and Profiles Specification”, Liberty Alliance Standard, Version 1.2, 2004 [LibID] Liberty Alliance ID-FF 1.2 Specifications, http://www.projectliberty.org/ resources/specifications.php#box1 [LibSIS] Liberty Alliance ID-SIS 1.0 Specifications, http://www.projectliberty.org/ resources/specifications.php#box3 [LibWSF] Liberty Alliance ID-WSF 2.0 Specifications, http://www.projectliberty.org/ resources/specifications.php#box2 [LibWSFOv] Tourzan, J., Yuzo, K.: “Liberty ID-WSF Web-Services Framework Overview”, Version 1.0, 2004, http://www.projectliberty.org/specs/draftliberty-idwsf-overview-1.0-errata-v1.0.pdf [MIME] Internet Mail Consortium, http://www.imc.org/smime-pgpmime.html [MS] Microsoft Corporation, http://www.microsoft.com/ [MSInf] Nitschke, R., Weiß, J. : “Identifikation als Dienstleistung – Der Wert des registrierten Kunden”, 2002, http://www.novosec.com/documents/ eCommerce_IdentifikationAlsDienstleistung.pdf 152 Literaturverzeichnis [MSTech] Microsoft Technet: “Leitfaden Identitäts- und Zugriffsverwaltung: Grundlegende Konzepte – Kapitel 2: Terminologie und Initiativen”, 2004, http://www.microsoft.com/germany/technet/datenbank/articles/900321.mspx [NeteAff] Computer Associates: “Netegrity Siteminder - SAML Affiliate Agent Guide v6.0”, 2004 [NeteFed] Computer Associates: “Netegrity Siteminder - Federation Security Services Guide v6.0”, 2004 [NETPass] Microsoft .NET Passport, http://www.passport.com/ [NeteWhite] Computer Associates: “Netegrity Technical White Paper - Netegrity Siteminder 6.0”, 2004 [OASIS] OASIS Group, http://www.oasis-open.org/ [OASISTC] OASIS Security Services (SAML) TC, http://www.oasis-open.org/ committees/tc_home.php?wg_abbrev=security [OpenSAML] OpenSAML 1.0.1, http://www.opensaml.org [OpenSSO] Open Group, Security Forum: “Single http://www.opengroup.org/security/l2-sso.htm Sign-On”, 2001, [PassTrouble] Slemko, M.: “Microsoft Passport to http://alive.znep.com/~marcs/passport/index.html Trouble”, 2001, [PingID] Norlin, E., Durand, A. : “PingID Whitepaper - Federated Identity Management”, Seite 7, 2002, http://pingid.net/downloads/Whitepaper_ Identity_Federation.pdf [PGP] PGPi Project, http://www.pgpi.org/ [RelaxSchema] Vlist, E. : “Relax NG – A Simpler Schema Language for XML“, Seiten 425427, O'Reilly Verlag, Köln, 2003 [RMI] Sun Microsystems: “Java Remote Method Invocation (Java RMI)”, http://java.sun.com/products/jdk/rmi/ [RSA] RSA Security, http://www.rsasecurity.com/ [RSAAdmin] RSA Security: “RSA Cleartrust 5.5 – Administrator’s Guide”, 2003 [RSAFIM] RSA Security: “RSA Federated Identity Manager 2.5 : Planning and Installation Guide”, 2004 [RSAGuide] RSA Security: “RSA Cleartrust 5.5 Planning Guide”, 2003 [RSAInstall] RSA Security: “RSA Cleartrust 5.5 – Servers Installation and Configuration Guide”, 2003 [RSAPress] RSA Security Press Release: “RSA Security stellt neues Produkt vor: RSA Federated Identity Manager”, 2004, http://www.rsasecurity.com/press_ release.asp?doc_id=4235&id=2678 153 Literaturverzeichnis [RSATech] RSA Security: “RSA Federated Identity Manager – A Technical Overview”, 2005, http://www.rsasecurity.com/products/FIM/pdf/FIMTO_TB_0405.pdf [SAML10] OASIS SAML 1.0 Specifications, http://www.oasis-open.org/committees/ download.php/2290/oasis-sstc-saml-1.0.zip [SAML11] OASIS SAML 1.1 Specifications, http://www.oasis-open.org/committees/ download.php/3400/oasis-sstc-saml-1.1-pdf-xsd.zip [SAML20] OASIS SAML 2.0 Specifications, http://docs.oasis-open.org/security/saml/ v2.0/saml-2.0-os.zip [SAMLArch] Manish, V. : “XML Security: Ensure portable trust with SAML - The objectives, architecture, and basic concepts of Security Assertion Markup Language”, 2004, http://www-128.ibm.com/developerworks/xml/library/xseclay4/ [SAMLBind] Maler, E., Prateek, M. et al. : “Bindings and Profiles for the OASIS Security Assertion Markup Language (SAML)”, OASIS Standard, Version 1.1, 2003 [SAMLConf] Maler, E., Prateek, M. et al. : “Conformance Program Specification Considerations for the OASIS Security Assertion Markup Language (SAML)”, OASIS Standard, Version 1.1, 2003 [SAMLCore10] Hallam-Baker, P., Maler, E. et al.: “Assertions and Protocol for the OASIS Security Assertion Markup Language (SAML)”, OASIS Standard, Version 1.0, 2002 [SAMLDef] OASIS Security Assertion Markup Language (SAML), http://xml.coverpages.org/saml.html [SAMLGlos] Maler, E., Philpott, R. et al. : “Glossary for the OASIS Security Assertion Markup Language (SAML)”, OASIS Standard, Version 1.1, 2003. [SAMLOv20] OASIS SAML 2.0 Executive Overview, 2005, http://www.oasis-open.org/ committees/download.php/11785/sstc-saml-exec-overview-2.0-draft-06.pdf [SAMLProt] Maler, E., Mishra, P. et al. : “Assertions and Protocol for the OASIS Security Assertion Markup Language (SAML)”, OASIS Standard, Version 1.1, 2003 [SAMLProt2] Maler, E., Philpott, R. et al. : “Assertions and Protocol for the OASIS Security Assertion Markup Language (SAML)”, OASIS Standard, Version 2.0, 2005 [SAMLSec] Maler, E., Philpott, R. et al. : “Security and Privacy Considerations for the OASIS Security Assertion Markup Language (SAML)”, OASIS Standard, Version 1.1, 2003 [Shibb] Internet2 Shibboleth Projekt, http://shibboleth.internet2.edu/ [SOA] Barry & Associates, Inc. : “Service-oriented architecture (SOA) definition”, 2004, http://www.service-architecture.com/web-services/articles/service oriented_architecture_soa_definition.html 154 Literaturverzeichnis [SOAP12] Gudgin, M., Hadley, M. et al. : “SOAP Version 1.2 Part 1: Messaging Framework”, W3C Recommendation, 2003, http://www.w3.org/TR/soap12part1/ [SOAPAdj] Gudgin, M., Hadley, M. et al. : “SOAP Version 1.2 Part 2: Adjuncts”, W3C Recommendation, 2003, http://www.w3.org/TR/2003/REC-soap12-part220030624/ [SOAPSec] Nadalin, A., Kaler, C. et al.: “Web-Services Security – SOAP Message Security 1.0 (WS-Security 2004)“, OASIS Standard, Version 1.0, 2004, http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0.pdf [SSL3] Netscape: “SSL 3.0 Specification”, 1996, http://wp.netscape.com/eng/ssl3/ [SSOTele] Weyl, B. : "Single Sign-On and Web-Services Security for an Open Telematics Market", Technische Universität München, 2003 [SUN] Sun Microsystems, http://www.sun.com/ [TAMRed] Buecker, A., Friell, C. et al. : “IBM Redbook – Enterprise Business Portals with IBM Tivoli Access Manager”, 2002 [TecChannel] Schroth, B. : “OASIS: SAML 1.1 freigegeben“, TecChannel, 2003, http://www.tecchannel.de/news/internet/13073/ [TowFIM] Durand A. : “Towards Federated Identity”, Ping Identity Corporation, 2002, http://discuss.andredurand.com/stories/storyReader$320 [UDDI2] Bellwood, T. : “UDDI Version 2.04 API Specification”, OASIS Standard, Version 2.04, 2002, http://uddi.org/pubs/ProgrammersAPI-V2.04-Published20020719.htm [ValIM] PricewaterhouseCoopers, META Group White Paper: “The Value of Identity Management - How securing identity management provides value to the enterprise”, 2002, http://www.pwc.com/images/gx/eng/about/svcs/grms/ valueofimwhitepaper.pdf [W3C] World Wide Web Consortium, http://www.w3.org [W3CSchema] Biron, P., Malhotra, A. : “XML Schema Part 2: Datatypes Second Edition”, W3C Recommendation, 2004, http://www.w3.org/TR/xmlschema-2/ [WSBasics] Wolter, R. : “XML Web Service Basics”, Microsoft Corporation, 2001, http://msdn.microsoft.com/library/default.asp?url=/library/enus/Dnwebsrv/ht ml/webservbasics.asp [WSDL11] Christensen, E., Curbera, F. et al. : “Web Services Description Language (WSDL) 1.1”, W3C Note, Version 1.1, 2001, http://www.w3.org/TR/wsdl [WS-Fed] Bajaj, S., Della-Libera, G. et al. : “Web Services Federation Language (WSFederation)”, 2003, http://www128.ibm.com/developerworks/webservices/ library/ws-fed/ 155 Literaturverzeichnis [WS-FedAct] Bajaj, S., Della-Libera, G. et al. : “WS-Federation: Active Requestor Profile”, 2003, http://www.106.ibm.com/developerworks/webservices/ library/ws-fedact/ [WS-FedPass] Bajaj, S., Dixon, B. : “WS-Federation: Passive Requestor Profile”, 2003, http://www-106.ibm.com/developerworks/webservices/library/ws-fedpass/ [WS-Road] Della-Libera, G., Kaler, C., Nadalin, A. et al .: “Security in a Web-Services World: A Proposed Architecture and Roadmap - A Joint White Paper from IBM Corporation and Microsoft Corporation”, Version 1.0, 2002 [WS-Sec] Nadalin, A., Kaler, C. et al. : “Web Services Security - SOAP Message Security (WS-Security 2004)”, OASIS Standard, 2004, http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf [WSSGrund] Seely, S. : “Grundlegendes zu WS-Security”, Microsoft Corporation, 2004, http://www.microsoft.com/germany/msdn/library/security/GrundlegendesZu WSSecurity.mspx [WSSTC] OASIS Web-Services Security (WSS) TC, http://www.oasis-open.org/ committees/wss [X509] Public-Key Infrastructure (X.509), http://www.ietf.org/html.charters/pkixcharter.html [XMLDec] Hughes, M., Imamura T. et al. : “Decryption Transform for XML Signature”, W3C Recommendation, 2002, http://www.w3.org/TR/xmlenc-decrypt [XMLEnc] Imamura, T., Dillaway, B. et al. : “XML Encryption Syntax and Processing”, W3C Recommendation, 2002, www.w3.org/TR/xmlenc-core/ [XMLName] Bray, T., Hollander, D. et al. : “Namespaces in XML”, W3C Recommendation, 1999, http://www.w3.org/TR/1999/REC-xml-names-1999 0114/ [XMLSig] Bartel, M., Boyer, J. et al. : “XML-Signature Syntax and Processing”, W3C Recommendation, 2002, http://www.w3.org/TR/xmldsig-core/ [ZDNet] Lemos, R., Müller, D. : “Ebay sagt nein zu Passport”, ZDNet News, 2004, http://www.zdnet.de/news/tkomm/0,39023151,39129069,00.htm 156