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 :)