我正在考虑如何将一个相当复杂的应用程序与多个客户端(一些基于Web的,一些桌面 - 所有这些通过.net远程处理与应用程序服务器通信)一起使用,并将其迁移到使用身份验证代码流的OIDC身份验证。
其中一个挑战是桌面客户端,以及如何弹出浏览器窗口以方便登录过程,以及检索身份验证代码(然后可以将其从桌面客户端传递到服务器并进行验证/交换使用反向通道的ID令牌 - 假设我可以安全地执行该操作。)
https://connect2id.com/learn/openid-connect州:
嵌入式Web视图不受信任,因为没有什么可以阻止应用程序窥探用户密码。用户身份验证必须始终在与应用程序(例如浏览器)分开的可信上下文中进行。
(这是关于移动应用程序,但我认为同样适用于任何本机应用程序。)
允许使用Windows桌面客户端(单独的服务器应用程序)的auth代码流的推荐方法是启动浏览器弹出窗口吗?如果是这样,建议的方法是什么 - 将Windows服务器嵌入到Windows桌面应用程序中,并让OpenID提供程序使用redirect_uri
localhost(即将浏览器重定向回嵌入的服务器)在原生Windows应用程序?)
我在GitHub上的当前Identity Server 4 repos集合中看不到任何与我正在尝试的内容特别相似的示例/示例,但也许我遗漏了一些东西。
答案 0 :(得分:2)
https://github.com/IdentityModel/IdentityModel.OidcClient2上的库(由Identity Server名声Dominick Baier维护)似乎是最明显的解决方案。它确实可以通过重定向回localhost来工作 - 例如https://github.com/IdentityModel/IdentityModel.OidcClient.Samples处的winforms样本将被使用
redirect_uri=http://localhost/winforms.client&response_mode=form_post