Aus den meisten Lektüren, die ich mit OpenID gemacht habe, scheint ein Browser erforderlich zu sein. Ich schreibe eine WCF-App und wollte OpenID als Authentifizierungsmethode verwenden, aber meine App ist keine Webanwendung. Ist es möglich, WCF und OpenID zusammen zu verwenden, ohne einen Webbrowser zu benötigen?
Während OpenID in seiner Spezifikation unabhängig von Cookies und dergleichen punkten kann, weil die Spezifikation nicht wirklich vorschreibt, wie diese Dinge verwendet werden, habe ich in Wirklichkeit nie eine gute OpenID-Lösung für irgendetwas außer dem Anmelden auf einer Website gesehen ist wirklich der primäre Anwendungsfall.
Es gibt jedoch einen guten Weg, WCF und OpenID zu verwenden. Fügen Sie OAuth zu der Mischung hinzu. Die DotNetOpenAuth -Bibliothek enthält ein Beispiel, das zeigt, wie ein WCF-Client autorisiert werden kann, einen WCF-Dienst über OAuth auf der Serviceseite aufzurufen Der Benutzer verwendet OpenID, um sich als Teil des Autorisierungsprozesses anzumelden.
Also im Grunde, wenn Sie WCF-App "einloggen" müssen, um den WCF-Dienst als Teil eines einmaligen Setups aufzurufen:
Dies funktioniert, weil hinter den Kulissen, wenn der Benutzer über den Webbrowser "Ja" zu dem Dienst sagt, der WCF-Anwendung eine spezielle maschinenfreundliche Berechtigung zugewiesen wird, die er in ähnlicher Weise bei jedem WCF-Dienstanruf verwendet ein Benutzername / Passwort wäre.
Überprüfen Sie die DotNetOpenAuth-Bibliothek. Es hat die Probe und alles, was Sie brauchen, damit das funktioniert.
Aus dem Lesen der Spezifikation von OpenID Authentication 2.0 habe ich eine Antwort gefunden:
Während nichts im Protokoll JavaScript oder moderne Browser erfordert , spielt das Authentifizierungsschema gut mit "AJAX" -Stylings ab. Dies bedeutet, dass ein Endbenutzer seine Identität einer vertrauenden Partei nachweisen kann, ohne die aktuelle Webseite verlassen zu müssen.
Die OpenID-Authentifizierung verwendet nur Standard-HTTP (S) -Anfragen und -Antworten, so dass keine besonderen Fähigkeiten des User-Agent oder anderer Client-Software erforderlich sind . OpenID ist nicht an die Verwendung von Cookies oder einen anderen spezifischen Mechanismus der Relying Party- oder OpenID Provider-Sitzungsverwaltung gebunden. Erweiterungen für Benutzeragenten können die Interaktion mit dem Endbenutzer vereinfachen, sind jedoch für die Verwendung des Protokolls nicht erforderlich.
Jetzt muss ich nur noch einen cleveren Weg finden, um es mit einer WCF-basierten, vertrauenden Seite zum Laufen zu bringen ...
Nehmen Sie einen OpenIdMembershipProvider (möglicherweise existieren andere). Konfigurieren Sie anschließend die Nachrichtensicherheit in WCF mit der Authentifizierung des Benutzernamens. Anschließend können Sie den ASPNET-Mitgliedschaftsanbieter zum Authentifizieren Ihres Benutzers verwenden. Ich glaube nicht, dass Sie eine einfachere Lösung finden können;)