【发布时间】:2020-01-21 18:45:00
【问题描述】:
我有一个工作的 c#/dotnet Windows 桌面应用程序,它通过在我的 Web 应用程序中访问各种 Web 服务来完成它的工作。当桌面应用程序启动时,它会提示用户输入用户名/密码,然后点击我的登录 Web 服务,该服务返回一个会话令牌。
我有一个拥有许多用户的大型组织客户。该客户希望直接从其域控制器为我的组合桌面/Web 应用程序提供身份验证/授权。他们想要单点登录,所以我的桌面应用不会提示他们的用户输入用户名和密码。
我的桌面应用程序如何从 Windows(可能来自用户的安全主体对象)检索可用的身份验证/授权令牌?我的 Web 应用程序如何验证该令牌,以便它可以信任桌面应用程序并向其发送会话令牌?
(我的 Web 应用程序在我的环境中运行,而不是在客户的域中。)
对于纯网络应用客户,我使用 SAML2 和 Active Directory/联合服务成功地做到了这一点。 SAML2 舞蹈让我的用户浏览器向客户的 AD/FS 服务器发布请求,然后将签名的响应发布回我的 Web 应用程序。
但我不知道如何从桌面应用程序中干净利落地做到这一点。有什么智慧吗?
【问题讨论】:
-
“对于纯网络应用客户,我成功地做到了这一点” - 确实没有什么不同。在“纯网络应用程序”中,浏览器发送当前登录用户的凭据。在您的情况下,您的桌面应用程序需要发送当前登录用户的凭据。无论哪种方式,Web 服务端的设置都是完全相同的。
-
在 Web 服务端为真。但是桌面应用程序方面呢?这就是我不明白的地方。
-
桌面应用是用什么语言编写的?
-
它在 C#/dotnet WPF 中。
标签: authentication active-directory ldap single-sign-on desktop-application