我正在尝试为桌面应用程序实现SSO,我目前正在研究什么是最好的工具。我遇到了SAML,但根据我的理解,SAML实际上是为Web应用程序准备的。有没有办法将 SAML 协议用于桌面应用程序?
示例用例:用户登录到计算机,当他或她单击应用程序图标时,他们会自动登录。
您的示例用例是 IWA - 集成窗口身份验证 - 这是一个浏览器函数而不是协议函数。它通常只发生在加入域的电脑上。
SAML 依赖于重定向,因此如果您想通过 SAML 执行此操作,则需要添加某种浏览器弹出窗口。
您可以使用OpenID Connect - 更轻量级 - 基于REST构建 - 或WS-Fed活动配置文件,即WCF而不是http浏览器功能。
在去SAML 2.0
之前,OpenID Connect
,你可能想问问你为什么需要Single Sign On
。
我们有单点登录的原因是我们想分离出Identity Provider
(或OpenID Provider
)和Service Provider
(Relaying Party
)。此外,它可以在两者之间多路复用,这就是身份联合的发生方式。
因此,会话设置是通过服务器到服务器通信进行的。但是当涉及到Single Logout
时,它确实涉及front-channel
(UI-to-server
)通信或back-channel
(server-to-server
)通信。
现在进入您的问题:
- 我认为你可以用
SAML 2.0
来交换身份,但这样做太重量级了。SAML 2.0
已在行业中广泛使用,这就是为什么许多人仍在使用它的原因。 - 较新的SSO技术是
OpenID Connect
,它是OAuth 2.0
之上的身份层,你可能想看看它。OpenID Connect FAQ - 但最终,您的 UI(Web 或移动或桌面)只是通过后端服务调用检查会话或身份存储。后端如何对用户进行身份验证完全取决于实现。不要将
client
与server
混为一谈。