Web 应用程序(通过浏览器使用)的单点登录 (SSO) 已详细记录并建立。为富客户端建立 SSO 比较困难,通常建议基于 Kerberos 票证,特别是使用 Windows 登录到域中的 ActiveDirectory。
但是,我正在为以下问题寻找更通用的解决方案:我需要建立“真实”SSO(所有应用程序的一个身份,即不仅仅是跨应用程序的密码同步),在客户端(非托管计算机,包括非 Windows),“终端客户端”是 Java 应用程序和 GTK+ 应用程序。两者都使用基于 HTTP 的协议(例如,基于 HTTPS 的 WebServices)与其服务器对应方通信。客户端和服务器不一定位于同一个 LAN/Intranet,但客户端可以从 Extranet 访问服务器。所有应用程序的服务器端位于同一个网络区域,SSO 组件可以通过 LDAP 访问身份提供者。
我的问题基本上是“我该怎么做”?进一步来说,
a) 对于安全、受保护的客户端“sso 会话存储”是否存在商定的机制,就像浏览器访问应用程序的 SSO cookie 一样?可能是模拟 Kerberos (TGT?) 甚至直接重用它,即使在客户端没有执行 ActiveDirectory 身份验证?
b) 是否有任何协议/API/框架用于富客户端和 SSO 的其他参与者之间的通信(就像 cookie 一样)?
c) 是否有任何 API/框架可用于通过网络推送类似 kerberos 的 TGT 和会话票证?
d) 是否有演示如何执行富客户端 SSO 的示例实现/教程?
我知道有“填写”代理学习将凭据输入到客户端的应用程序对话中。如果可能的话,我宁愿不使用这样的“帮手”。
另外,如果可能的话,我想尽可能使用 CAS、Shibboleth 和其他开源组件。
感谢您的意见、建议和回答!
米库