CardSpace 3.5 funktioniert auch ohne SSL Zertifikat!

Sunday, October 07, 2007 12:04:09 AM (W. Europe Daylight Time, UTC+02:00)

Ein Feature dass ich mir schon lange vom CardSpace Team gewünscht habe - CardSpace ohne SSL Zertifikate. Mit .NET 3.5 und Windows Vista SP1 wird es möglich sein, CardSpace auch auf Seiten ohne SSL Zertifikate zu nutzen. Damit wird CardSpace auch für die breite Masse von privaten Webseiten und Blogs nutzbar werden, und nicht nur für kommerzielle Seiten, für die die Kosten eines SSL Zertifikats unbedeutend sind.

Diese und weitere Neuerungen von CardSpace 3.5 wurden über das neue Blog des CardSpace Teams angekündigt.

Ich habe mir daraufhin direkt mal eine Beta des SP1 für Vista installiert und CardSpace Unterstützung in das Login zum Admin-Bereich der .NET Camp Web Seite eingebaut. Ich habe dabei wie bereits auch für mein Blog wieder die TokenProcessor.cs aus den CardSpace-Samples auf http://cardspace.netfx3.com verwendet. Dabei war eine kleine Anpassung erforderlich. Bei SSL-basiertem CardSpace wird das an die Web Seite übermittelte Token verschlüsselt, und muss somit von der TokenProcessor-Klasse wieder entschlüsselt werden. Die TokenProcessor-Klasse sucht deshalb nach Informationen über den verwendeten Verschlüsselungsalgorithmuss, und wirft eine Exception, wenn diese nicht vorhanden sind:

// Find the EncryptionMethod element, grab the Algorithm
if (!reader.ReadToDescendant(XmlEncryptionStrings.EncryptionMethod, XmlEncryptionStrings.Namespace))
    throw new ArgumentException("Cannot find token EncryptedMethod.");

An dieser Stelle kann man einfach die Entschlüsselung überspringen, und das (ja bereits unverschlüsselte) Token wieder zurück geben:

if (!reader.ReadToDescendant(XmlEncryptionStrings.EncryptionMethod, XmlEncryptionStrings.Namespace))
{
    return UnicodeEncoding.Default.GetBytes(xmlToken);
}

Da das SAML Token nicht verschlüsselt übertragen wird könnte ein Angreifer das Token aufzeichnen und erneut an die Seite senden. Inwiefern die SAMLSecurityTokenAuthenticator-Klasse, die von der TokenProcessor-Klasse zur Überprüfung des Tokens verwendet wird, so etwas überprüft, habe ich mir noch nicht angesehen. Vibro geht in seinem Blog kurz darauf ein - wenn die Gültigkeitsdauer des Tokens nicht zu lang gewählt wird scheint dies wohl kein großes Problem zu sein. Jedenfalls ist CardSpace auch ohne SSL noch deutlich sicherer als unverschlüsselt Übertragene Passwörter.

In der .NET Camp Web Seite funktioniert das CardSpace Login schon sehr gut, und ich muss mir ein Kennwort weniger merken :)

Technorati tags: , ,
Kick it on dotnet-kicks.de

LiveID jetzt mit CardSpace Unterstützung!

Saturday, August 25, 2007 9:19:40 AM (W. Europe Daylight Time, UTC+02:00)

Windows LiveID unterstützt jetzt auch Windows CardSpace. Statt mit einem Passwort ist es nun möglich, eine CardSpace InfoCard für die Anmeldung bei Windows LiveID zu verwenden. Endlich!

Wie das genau funktioniert beschreibt Angus Logan in seinem Blog. Außerdem gibt es dazu einen Screencast auf Visitmix. Im LiveID Blog steht zwar noch nichts, aber auch dort sollte es bald weitere Informationen zu LiveID und CardSpace geben.

LiveID selbst wird im Moment für fast 1 Milliarde(!) Anmeldungen pro Tag verwendet, außerdem ist es möglich, LiveID auch in eigenen Web Seiten zu verwenden. Es gibt dazu auch Beispiele für PHP, Java und andere Sprachen.

Kick it on dotnet-kicks.de

Microsoft stellt offizielles CardSpace Logo vor

Monday, June 25, 2007 7:20:59 PM (W. Europe Daylight Time, UTC+02:00)

 Microsoft hat das offizielle Logo für Windows CardSpace vorgestellt. Das CardSpace Logo soll auf Webseiten eingesetzt werden, die eine Anmeldung mit CardSpace unterstützen. Anhand des Logos können Besucher der Seite sofort erkennen, dass eine Anmeldung mit CardSpace möglich ist.

Und so sieht es aus:

infocard_365x256

 

Die Anmeldeseite für mein Blog habe ich schon angepasst :).

 

Download: CardSpace Logo & Logo Guidelines

Kick it on dotnet-kicks.de

CardSpace Vorurteile

Wednesday, April 11, 2007 3:20:59 PM (W. Europe Daylight Time, UTC+02:00)

Wenn ich mit anderen Entwicklern über CardSpace spreche höre ich leider immer wieder die gleichen Vorurteile über CardSpace. Das kommt wohl daher, dass viele die CardSpace nicht kennen erstmal von Passport ausgehen und vermuten, dass CardSpace wohl so ähnlich sein muss. Dabei haben aber beide Technologien nichts miteinander zu tun, mal abgesehen davon, dass beide von Microsoft sind.

Einige dieser Vorurteile sind:

"Meine Daten werden bei Microsoft gespeichert"
Falsch! Bei CardSpace gibt es keine zentralen Server, die alle Daten des Anwenders speichern. Daten werden entweder lokal auf dem Rechner des Anwenders gespeichert (bei sogenannten selbstausgestellten Karten) oder auf dem Server eines Identitätsanbieters (bei verwalteten Karten). Im Prinzip kann jeder der das möchte ein Identitätsanbieter für CardSpace werden. Mögliche Identitätsanbieter könnten z.B. Banken, Universitäten, Vereine oder vielleicht sogar Behörden sein. Das hängt ganz davon ab, was man mit CardSpace mache möchte.

"CardSpace funktioniert doch nur mit dem Internet Explorer und Windows"
Falsch! CardSpace basiert auf offenen und freien Standards. Jeder der möchte, kann diese Standards selbst implementieren. So gibt es z.B. schon CardSpace Identity-Selektoren ("CardSpace UIs") für Firefox und Safari. Die Standards, auf denen CardSpace basiert sind z.B.: WS-Trust, WS-Security und SAML, um nur einige zu nennen.

"CardSpace funktioniert doch sicher nur mit ASP.NET Web Servern"
Falsch! CardSpace lässt sich problemlos mit beliebigen Web Servern und Webtechnologien nutzen, da es auf freien und offenen Standards basiert. Kim Cameron, einer der Architekten von CardSpace, hat z.B. CardSpace in sein Wordpress (PHP) Blog integriert.

"CardSpace in meine Webseite einbauen ist zu kompliziert"
Falsch! Je nachdem mit welcher Plattform man arbeitet gibt es bereits viele fertige Bibliotheken und Beispiele, die man nutzen kann, um CardSpace in eigene Webseiten zu integrieren. Am einfachsten geht das natürlich mit ASP .NET, dafür gibt es einfach schon die meisten Beispiele. Es gibt aber auch schon CardSpace Bibliotheken für PHP [1], [2] und Java. Mit solchen fertigen Beispielen und Bibliotheken lässt sich CardSpace mit wenigen Zeilen Code in eigene Webseiten integrieren. Auf Plattformen wo es solche Bibliotheken noch nicht gibt ist das natürlich wirklich aufwändiger. In dem Fall hängt es davon ab, wie gut die jeweilige Plattform die von CardSpace verwendeten Technologien unterstützt, insbesondere XML Encryption, XML Signaturen und SAML Tokens. Diese Arbeit muss aber für jede Plattform nur einmal von irgendjemandem gemacht werden. Früher oder später wird es für alle wichtigen Plattformen CardSpace Bibliotheken geben.

"CardSpace ist nicht kostenlos"
Falsch! Zumindest CardSpace selbst basiert auf offenen und frei verfügbaren Standards und kann somit ohne Lizenzgebühren verwendet werden. Allerdings benötigt CardSpace eine verschlüsselte Verbindung über HTTPS und somit SSL Zertifikate. Die sind aber gar nicht so teuer wie man zunächst denkt (was man z.B. daran sieht, dass ich mir eins für mein Blog leisten konnte ;) ). SSL Zertifikate gibt es ab ca. $15 pro Jahr. Für den Einsatz in kommerziellen Projekten also quasi "Peanuts", für den privaten Einsatz aber sicher nicht ganz unproblematisch. Eine mögliche Alternative für den privaten Einsatz sind kostenlose Zertifikate von startssl.com. Diese Zertifikate funktionieren mit CardSpace jedoch nur bei Anwendern, die das CA Root Zertifikat von startssl auf ihrem Rechner installiert haben.

"CardSpace ist nicht interoperabel zu anderen Identitätstechnologien (OpenID, ...)"
Falsch! CardSpace ist sogar so extra konzipiert, dass es wunderbar mit anderen Technologien zusammenarbeiten kann. Die CardSpace-Spezifikation schreibt z.B. nicht vor, welches Sicherheitstokenformat für die Authentifizierung mit CardSpace verwendet werden soll. Selbstausgestellte Karten arbeiten mit SAML Tokens, die auch in anderen ID-Technologien wie z.B. Shibboleth oder Liberty Alliance und natürlich SAML selbst verwendet werden. Bei verwalteten Karten kann ein beliebiges Securitytokenformat verwendet werden. Solange der Identitätsanbieter und die Relying Party (= z.B. die Webseite, gegenüber der man sich authentifiziert) beide eine gemeinsame "Sprache" sprechen und das Token verstehen ist das Format vollkommen egal.

Auch mit OpenID kann man CardSpace wunderbar verwenden. Im xmldap CardSpace Identity Selector kann man z.B. eine OpenID als "verwalte Karte" nutzen. Eine weitere sinnvolle Anwendungsmöglichkeit ist der Einsatz von CardSpace als Authentifizierungsmöglichkeit gegenüber einem OpenID-Identitätsanbieter. OpenID selbst ist anfällig gegenüber Phishing. Diese Schwäche lässt sich vermeiden, wenn man beide Technologien kombiniert. Ich bin gerade dabei, diese Idee von Kim umzusetzen und einen OpenID-Server zu schreiben, der CardSpace als Authentifizierung nutzen kann - mehr dazu später in einem eigenen Eintrag.

"Durch CardSpace kann ein Profil über die Seiten die ich besuche erstellt werden"
Falsch! Bei CardSpace authentifiziert man sich nicht mit nur einer Identität, sondern man besitzt beliebig viele Karten und somit auch Identitäten. Selbst wenn die gleiche Karte auf mehreren Seiten eingesetzt wird, enthält die Karte für jede Seite eine eigene PPID (private personal identifier). Wenn ich z.B. eine Karte auf Seite A und Seite B verwende, so hat Seite A keine Möglichkeit, die Daten aus der Karte zu verwenden, um sich unter meinem Namen auf Seite B anzumelden.

Ein Identitätsanbieter sieht (in der Standardeinstellung) auch nicht, auf welchen Seiten ich mich mit der Identität dieses Anbieters authentifiziere. Er kann also kein Profil über mich erstellen. Für Anwendungsfälle, in denen diese Information dennoch notwendig ist, ist das möglich, dann wird der Benutzer bei der Verwendung der Karte darauf hingewiesen, dass der Identitätsanbieter diese Information erhält.

"Wenn mein Computer gestohlen/gehackt wird hat der Dieb/Hacker zugriff auf alle meine Identitäten"
Falsch! Um auf die Karten eines Benutzeraccounts zugreifen zu können müsste jemand, der den Computer gestohlen hat, zumindest das Benutzerkennwort kennen. Karten können außerdem zusätzlich mit einer eigenen PIN pro Karte versehen werden, in dem Fall kommt also auch ein angemeldeter Nutzer ohne die PIN nicht an die Karten. Die Karten werden besonders geschützt auf dem Rechner gespeichert und sind doppelt verschlüsselt (mit einem Schlüssel des jeweiligen Benutzers und mit dem des Systems). Selbst ein Administrator hat so ohne das Kennwort des Nutzers keinen Zugriff auf die Karten. Selbst  wenn er das Nutzerkonto ändert hat er keinen Zugriff, der Schlüssel wäre in dem Fall zerstört (wie z.B. auch bei Verschlüsselung im Dateisystem). Verwaltete Karten können zusätzlich geschützt werden, z.B. über SmartCards oder ein zusätzliches Passwort. Die Daten von verwalteten Karten sind ja außerdem sowieso beim Identitätsanbieter gespeichert, der sie ausgestellt hat.

Das CardSpace User Interface wird in einem eigenen, abgeschotteten Desktop angezeigt. Andere Prozesse haben auf diesen Desktop keinen Zugriff. Ein Trojaner hätte also keine Möglichkeit, CardSpace fernzusteuern und den Benutzer irgendwo anzumelden oder seine Daten aus der CardSpace Benutzeroberfläche zu stehlen.

 

Ich hoffe ich konnte mit diesem Artikel einige Vorurteile beseitigen. Wer neugierig geworden ist und jetzt mehr über CardSapce erfahren möchte sollte auf der CardSpace Seite und in Kims IdentityBlog beginnen.

Kick it on dotnet-kicks.de

Mein i-name ist =Mathias

Tuesday, April 10, 2007 3:44:22 AM (W. Europe Daylight Time, UTC+02:00)

Ich beschäftige mich seit einigen Wochen mit dem Thema "Identity 2.0". Angefangen hat alles vor einigen Monaten mit Windows CardSpace. Ich fand CardSpace sehr interessant und beschloss, mich ausführlicher damit zu beschäftigen (wie man ja inzwischen z.B. an dem CardSpace Login meines Blogs sehen kann :) ).

Dabei bin ich aber auch immer wieder auf andere "Identity 2.0"-Technologien gestossen. Eine davon sind i-names.  Ein i-name ist eine spezielle Adresse, die z.B. auf eine Person (i-names die mit = beginnen) oder eine Organisation (i-names die mit @ beginnen) verweist. Sie basieren auf XRI, einem OASIS Standard.

Vergleichbar mit Domainnamen gibt es eine Zentrale Registrierungsstelle für i-names, und i-names können über verschiedene Anbieter registriert werden. Das kostet im Moment je nach Anbieter ca. $20.

Ich habe mir den i-name =Mathias registriert. Wenn mich jemand über diesen i-name kontaktieren möchte, dann geht das über die Url http://xri.net/=Mathias oder mit entsprechendem Browserplugin direkt durch Eingabe von =Mathias in der Adresszeile des Browsers. Dort wird dann die "Contact Service" Seite meines i-name Anbieters angezeigt.

Wenn mich jemand darüber kontaktieren möchte, muss er zunächst seinen i-name oder seine E-Mail Adresse eingeben. Bei Eingabe einer E-Mail Adresse erhält man zunächst eine E-Mail mit einem Link, mit dem man bestätigt, dass man wirklich unter dieser E-Mail Adresse erreichbar ist.

Wenn man diesem Link folgt (oder sich mit einem eigenen i-name authentifiziert hat), so kommt man auf eine Seite mit einem Kontaktformular. Über dieses Formular kann man mir nun eine Nachricht zukommen lassen.

Anschließend erhalte ich eine E-Mail von meinem i-name-Anbieter, die mich über die neue Nachricht informiert.

Ich kann nun die Nachricht beantworten (auch "anonym", also ohne meine richtige E-Mail Adresse zu veröffentlichen).

Mit i-names geht wohl auch noch einiges mehr, aber was und wie genau muss ich erst noch herausfinden :). Beispielsweise gibt es spezielle Tags wie z.B. (+blog), die ich über meine i-name Verwalten kann. Die Adresse =Mathias(+blog) ist in diesem Beispiel eine Weiterleitung auf http://www.outofcoffeeexception.de.

Das Thema i-names ist anscheinend noch so neu, dass es in der deutschen Wikipedia noch keinen Eintrag dazu gibt. Auf den ersten Blick jedenfalls eine spannende Sache, mal sehen wie ich meinen i-name noch nutzen kann. Ich würde auch gerne noch andere Meinungen zu i-names hören. Nutzt ihr es schon? Habt ihr überhaupt schon davon gehört?

Technorati tags: ,
Kick it on dotnet-kicks.de
Page 1 of 1 in the Identity20 category