2016-08-01 21 views
2

Ich arbeite an einem POC für IdentityServer3.IdentityServer3 Alternative zu Webbrowser Navigationsereignis

Ich habe eine Version der Beispiel-App WebHost (minimal) läuft in Ordnung.

Für die Client-Beispiel-App verwende ich den Wpf-Client (Hybrid mit PKCE).

Ich brauche das Hybridbeispiel, weil der Webhost geändert wurde, um einen benutzerdefinierten ExternalRegistrationUserService zu verwenden.

Alle Beispiele für die Hybrid-Clients verwenden jedoch das Webserver-Navigationsereignis, das ein Threading-Modell verwendet, das für Konsolen-Apps/Windows-Dienste nicht empfohlen wird.

Die Punchline-Frage ist, gibt es eine Konsole freundlich gleichbedeutend mit der Navigation, die nicht an ein UI-Steuerelement gebunden ist?

httpwebrequest macht fast das, was ich will, aber identityserver3 scheint mehrere Antworten in einer Kette zu senden, die ich abfangen muss, und jeder httpclient oder httpwebrequest Aufruf, den ich mache, scheint nur die erste Antwort zurückgeben zu wollen.

+0

verbesserte Lesbarkeit –

Antwort

1

Ich schrieb gerade eine sehr ähnliche POC mit Informationen aus einer recent blog post von Dominick Baier.

Im Wesentlichen verfügt dieser Ansatz über die native Client-Anwendung, die eine Kombination aus der neuen IdentityModel.OidcClient-Bibliothek und einem lokalen HTTP-Listener zum Empfangen von Weiterleitungen verwendet.

Ich habe zu einem von Dominicks Beispielen beigetragen, die zeigen, wie der OidcClient mit dem HTTP-Listener verwendet werden kann, um den hybriden Fluss in einer Konsolenanwendung zu aktivieren. Sie finden den Code here.

Ich denke, dieses Beispiel wird tun, was Sie suchen, aber es öffnet sich extern den System-Webbrowser. Der OidcClient unterstützt jedoch auch ein vom Benutzer bereitgestelltes WebView, wenn Sie alles innerhalb des nativen Clients ausführen möchten.

+1

nice work! ..... –

+0

Blick jetzt – Matt

+0

Ihre Lösung ist sehr vielversprechend. Es führt zwar aus und es beseitigt die Notwendigkeit für das Webbrowser-Steuerelement, aber es führt auch eine process.start auf einer Vollblown-Browser-Instanz, die ähnlich problematisch für eine geplante Batch-App oder Dienst ist. Der httplistener, den Sie benutzt haben, löst das Problem, an dem ich festhielt, wenn der Prozess.start durch einen HTTP-Client-Aufruf ersetzt werden kann, dann wird es außerhalb eines ui-Threads funktionieren, denke ich. Ich werde versuchen, damit zu basteln und mit dem zurück zu kommen, was ich finde. – Matt