Mit OpenID mit WCF und ohne Browser, ist es möglich?

8

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?

    
Chris Gillum 09.05.2009, 15:52
quelle

3 Antworten

10

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:

  1. Die App ruft einen Browser auf, in dem der Benutzer die WCF-Servicewebsite (den OAuth-Serviceanbieter)
  2. sieht
  3. Der Benutzer meldet sich mit seiner OpenID an (obwohl der Benutzer möglicherweise bereits angemeldet ist und in diesem Fall diesen Schritt überspringen kann)
  4. Der OAuth SP fragt den Benutzer "Möchten Sie diese [wcf app] für den Zugriff auf diese Website autorisieren?"
  5. Der Benutzer sagt ja und schließt den Browser.
  6. Die WCF-Anwendung hat jetzt dank des OAuth-Protokolls Zugriff auf den WCF-Dienst.

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.

    
Andrew Arnott 09.05.2009, 19:56
quelle
1

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 ...

    
Chris Gillum 09.05.2009 16:07
quelle

Tags und Links