2016-08-01 74 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