【问题标题】:OpenID Connect - Using IdentityServer for SSO between WinForms and Web ApplicationOpenID Connect - 在 WinForms 和 Web 应用程序之间使用 IdentityServer 进行 SSO
【发布时间】:2015-05-08 08:46:27
【问题描述】:

我设置了 Thinktecture IdentityServer,我有两个受信任的客户端应用程序,一个 WinForms 应用程序和一个 Web 应用程序,我想在它们之间实现 SSO。

用户将首先打开桌面应用程序,该应用程序具有一个通过身份服务器进行身份验证的登录页面。

桌面应用程序将包含一些生成的 Web 链接,单击这些链接会打开一个新的浏览器窗口,指向需要身份验证的 Web 应用程序的安全区域,但是,单击这些链接后,我不希望用户必须再次登录因为他们已经通过桌面应用程序进行了一次身份验证。

我正在努力看看哪些流程可以实现这一点。

OpenID connect 或 Thinktecture IdentityServer 提供了哪些机制(如果有)可以促进这一过程?

【问题讨论】:

  • 您找到解决方案了吗?
  • 不是我们完全满意的。 OAuth 流程均未涵盖此场景,因此最终我们创建了一个自定义解决方案,其中 Windows 应用程序请求一个 TTL 为 10 秒的一次性 GUID 令牌。然后可以将该令牌在查询字符串中传递给浏览器应用程序,并在验证令牌后对用户进行身份验证。由于我们的软件只安装在内部封闭网络上,我们认为这是一个可以接受的解决方案。

标签: c# oauth-2.0 openid thinktecture-ident-server openid-connect


【解决方案1】:

没有任何开箱即用的机制,因为 SSO 是通过在用户代理 (UA) 中设置 cookie 来实现的。因此,如果用户在您的 winforms 应用程序的 web 视图中进行身份验证,然后它会像这样启动浏览器

System.Diagnostics.Process.Start("http://www.website.com");

为了打开网络应用程序,它显然不会工作,因为它不是同一个 UA。

不过,如果您使用相同的 webview 打开您的 web 应用程序,您可以实现这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-29
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2018-03-16
    • 2015-06-13
    相关资源
    最近更新 更多