2016-08-01 400 views
2

我正在爲IdentityServer3的POC工作。IdentityServer3替代Web瀏覽器導航事件

我有一個示例應用WebHost(最小)版本運行正常。

對於客戶端示例應用程序,我使用wpf客戶端(與pkce混合使用)。

我需要混合的例子,因爲虛擬主機已被修改爲使用自定義ExternalRegistrationUserService。

但是,他們爲混合客戶端提供的所有示例都使用webserver導航事件,該事件使用不推薦用於控制檯應用程序/ Windows服務的線程模型。

問題的關鍵是,有沒有控制檯友好相當於導航,這不是綁定到一個用戶界面控制?

httpwebrequest幾乎做我想做的事情,但是identityserver3似乎想要在需要攔截的鏈中發送多個響應,並且我所做的任何httpclient或httpwebrequest調用似乎都只想返回第一個響應。

+0

改進的可讀性 –

回答

1

我剛剛寫了一個非常相似的POC使用來自recent blog postDominick Baier的信息。

本質上,這種方法有本地客戶端應用程序使用新的IdentityModel.OidcClient庫和本地HTTP偵聽器的組合來接收重定向。

我對Dominick的示例之一做出了貢獻,該示例顯示瞭如何使用OidcClient與HTTP偵聽器在控制檯應用程序中啓用混合流。你可以找到代碼here

我認爲這個樣本會做你以後的樣子,但它在外部彈出打開系統的網頁瀏覽器。但是,如果您想在本地客戶端中執行所有操作,OidcClient也支持用戶提供的WebView。

+1

不錯的工作! –

+0

現在看它 – Matt

+0

您的解決方案是非常有前途的。它確實執行,它確實消除了對webbrowser控件的需求,但它也在一個完整的瀏覽器實例上啓動了一個process.start,對於計劃的批處理應用程序或服務來說也是類似的問題。你使用的httplistener我認爲解決了我被卡住的問題,如果process.start可以被一個http客戶端調用所取代,那麼它將在我認爲的ui線程之外工作。我會盡力鼓搗它,並回到我找到的東西。 – Matt