9 Stimmen

Ist es möglich, OpenID mit WCF und ohne Browser zu verwenden?

Nach den meisten Informationen, die ich über OpenID gelesen habe, scheint ein Browser erforderlich zu sein. Ich schreibe eine WCF-Anwendung und möchte OpenID als Authentifizierungsmethode verwenden, aber meine Anwendung ist keine Webanwendung. Ist es möglich, WCF und OpenID zusammen zu verwenden, ohne einen Webbrowser zu benötigen?

10voto

Andrew Arnott Punkte 77359

Während OpenID in seiner Spezifikation mit der Unabhängigkeit von Cookies und dergleichen prahlen kann, weil die Spezifikation nicht wirklich vorschreibt, wie diese Dinge verwendet werden, habe ich in der Realität noch nie eine gute OpenID-Lösung für irgendetwas anderes als das Einloggen in eine Website gesehen, was wirklich ihr primärer Anwendungsfall ist.

Es gibt jedoch eine gute Möglichkeit, WCF und OpenID trotzdem 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 aufzurufen, wobei der Benutzer auf der Dienstseite OpenID verwendet, um sich als Teil des Autorisierungsprozesses anzumelden.

Wenn sich Ihre WCF-Anwendung also "anmelden" muss, um den WCF-Dienst aufzurufen, ist dies Teil einer einmaligen Einrichtung:

  1. Die Anwendung öffnet einen Browser, in dem der Benutzer die WCF-Service-Website (den OAuth Service Provider) sieht.
  2. Der Benutzer meldet sich mit seiner OpenID an (der Benutzer kann aber auch bereits angemeldet sein, in diesem Fall kann er diesen Schritt überspringen)
  3. Der OAuth SP fragt den Nutzer: "Möchten Sie dieser [wcf app] den Zugriff auf diese Website gestatten?"
  4. Der Nutzer bejaht dies und schließt den Browser.
  5. Die WCF-App hat nun dank des OAuth-Protokolls Zugriff auf den WCF-Dienst.

Dies funktioniert, weil hinter den Kulissen, wenn der Benutzer über den Webbrowser "Ja" zum Dienst sagt, der WCF-Anwendung ein spezieller maschinenfreundlicher Berechtigungsnachweis zugewiesen wird, den sie bei jedem WCF-Dienstaufruf verwendet, ähnlich wie ein Benutzername/Passwort.

Sehen Sie sich die DotNetOpenAuth-Bibliothek an. Sie enthält das Beispiel und alles, was Sie benötigen, um dies zu bewerkstelligen.

1voto

Chris Gillum Punkte 13761

Aus der Lektüre der OpenID-Authentifizierung 2.0-Spezifikation Ich scheine eine Antwort gefunden zu haben:

Das Protokoll erfordert weder JavaScript noch moderne Browser. Das Authentifizierungsschema lässt sich gut mit "AJAX"-ähnlichen Einrichtungen kombinieren. Dies bedeutet, dass ein Endnutzer seine Identität gegenüber einer Relying Party nachweisen kann, ohne seine aktuelle Webseite verlassen zu müssen.

Die OpenID-Authentifizierung verwendet nur Standard-HTTP(S)-Anfragen und -Antworten, so dass es erfordert keine besonderen Fähigkeiten des User-Agents oder anderer Client-Software . OpenID ist nicht an die Verwendung von Cookies oder einen anderen spezifischen Mechanismus der Sitzungsverwaltung von Relying Party oder OpenID Provider gebunden. Erweiterungen für User-Agents können die Interaktion mit dem Endbenutzer vereinfachen, sind aber nicht erforderlich, um das Protokoll zu verwenden.

Jetzt muss ich nur noch einen cleveren Weg finden, damit es mit einem WCF-basierten Partner funktioniert...

1voto

Nicolas Dorier Punkte 7327

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X