Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java桌面应用程序的ADFS/SAML身份验证_Java_Authentication_Single Sign On_Saml_Adfs - Fatal编程技术网

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

Java桌面应用程序的ADFS/SAML身份验证,java,authentication,single-sign-on,saml,adfs,Java,Authentication,Single Sign On,Saml,Adfs,我有一个Java桌面应用程序。我发现了很多关于web应用SSO身份验证的在线资源。我需要一个旧的学校桌面应用程序相同的东西。基本上,我需要该应用程序打开一个浏览器窗口,让用户根据ADF进行身份验证,然后取回一个令牌 如何使用ADFS/SAML添加SSO身份验证 桌面应用程序。没有浏览器 WS-Fed和SAML是围绕浏览器重定向构建的 你为什么需要SAML?那么OpenID Connect/OAuth呢 如果这是一个选项,请查看ADALJava示例-。ADFS中对OAuth的支持有限。V3.0 另

我有一个Java桌面应用程序。我发现了很多关于web应用SSO身份验证的在线资源。我需要一个旧的学校桌面应用程序相同的东西。基本上,我需要该应用程序打开一个浏览器窗口,让用户根据ADF进行身份验证,然后取回一个令牌


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

桌面应用程序。没有浏览器

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

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

如果这是一个选项,请查看ADALJava示例-。ADFS中对OAuth的支持有限。V3.0

另一种选择是使用主动配置文件(web服务)而不是被动配置文件(浏览器)

但这是WS-Trust而不是SAML。

我找到了答案

  • 首先,桌面应用程序需要显示一个浏览器窗口。这可以使用JavaFXWebView轻松实现。我已经使用JavaFXWebView成功测试了Google和ADFS登录。注意:如果使用ADF,则必须将ADF设置为使用基于表单的身份验证
  • 需要构建一个助手Web服务。webservice将提供一种由任何联合身份验证机制(SAML2、OAuth等)保护的方法。我还不能用Java来做这件事。有一些像JOSSO这样的解决方案,但它们非常麻烦或严重缺乏。然而,C#对联邦身份验证有着出色的支持,这使得它成为执行此任务的最佳选择
  • 当用户需要验证时,桌面应用程序会显示浏览器窗口,自动调用上述方法。在联合身份验证握手之后,浏览器将能够访问该方法。此方法告诉桌面应用程序是否允许调用用户访问
  • 最后一步是关闭浏览器窗口并登录用户

  • 注:这不是一项容易的任务。将所有内容整合起来大约需要一周的时间。

    没有什么可以阻止桌面应用程序使用浏览器。我需要SAML2,因为这是一个要求。请记住,嵌入式浏览器被认为不是执行SAML2/OpenIDConnect身份验证的安全方式。父应用程序通常仍然可以读取浏览器和cookie的内容。这意味着父应用程序可以截取用户的凭据-它应该永远无法看到这些凭据。因此,iOS和Andriod为本机应用程序提供了启动独立浏览器的机制,然后使用应用程序开发人员向操作系统注册的系统注册uri方案重定向回应用程序。我不相信Java有能力为自己注册uri方案。