Java桌面应用程序的ADFS / SAML身份验证

时间:2016-02-05 16:25:56

标签: java authentication single-sign-on saml adfs

我有一个Java桌面应用程序。我找到了很多关于网络应用程序的SSO身份验证的在线资源。对于旧式学校桌面应用,我需要同样的东西。基本上,我需要应用程序打开浏览器窗口,让用户对ADFS进行身份验证,然后再获取令牌。

如何使用ADFS / SAML添加SSO身份验证?

2 个答案:

答案 0 :(得分:2)

我找到了答案。

  1. 首先,桌面应用程序需要显示浏览器窗口。使用JavaFX WebView可以轻松实现这一点。我已经使用JavaFX WebView成功测试了Google和ADFS登录。注意:如果您使用ADFS,则必须设置ADFS以使用基于表单的身份验证。
  2. 需要构建帮助程序Web服务。 Web服务将提供由任何联合身份验证机制(SAML2,OAuth等)保护的方法。我无法用Java做到这一点。有一些像JOSSO这样的解决方案,但它们非常繁琐或严重缺乏。但是,C#对联合身份验证具有出色的支持,这使其成为此任务的绝佳选择。
  3. 当用户需要进行身份验证时,桌面应用会显示自动调用上述方法的浏览器窗口。联合身份验证握手后,浏览器将能够访问该方法。此方法告诉桌面应用程序是否允许主叫用户访问。
  4. 最后一步是关闭浏览器窗口并登录用户。
  5. 注意:这不是一件容易的事。将所有东西放在一起需要大约一周的时间。

答案 1 :(得分:-1)

桌面应用。没有浏览器。

WS-Fed和SAML是围绕浏览器重定向构建的。

为什么需要SAML?那么OpenID Connect / OAuth呢?

如果这是一个选项,请查看ADAL Java示例 - Azure Active Directory Authentication Libraries。 ADFS中的OAuth支持有限。 V3.0

您的另一种选择是使用活动配置文件(Web服务)而不是被动(浏览器)。

但那个WS-Trust不是SAML。