Java 将Netty应用程序转换为SAML2.0服务提供商端点的选项

Java 将Netty应用程序转换为SAML2.0服务提供商端点的选项,java,single-sign-on,netty,saml-2.0,opensaml,Java,Single Sign On,Netty,Saml 2.0,Opensaml,我有一个使用Netty4.x框架的应用程序,它的功能类似于某种服务器。身份验证必须是联合的,所以现在我需要将其转换为SAML2.0服务提供者 我做了一些研究,我担心的是,为了使用现有的SAML2.0解决方案,即OpenAM、PingFederate,服务提供商必须是运行在某种web容器中的web应用程序,这在我的项目中并非如此。这是真的吗 我对单一登录和联合世界非常陌生,我非常感谢您提供的任何信息和提示。SAML通常使用浏览器在两个站点之间保持一个公共“会话” 具体做法如下: 一个网站A.or

我有一个使用Netty4.x框架的应用程序,它的功能类似于某种服务器。身份验证必须是联合的,所以现在我需要将其转换为SAML2.0服务提供者

我做了一些研究,我担心的是,为了使用现有的SAML2.0解决方案,即OpenAM、PingFederate,服务提供商必须是运行在某种web容器中的web应用程序,这在我的项目中并非如此。这是真的吗


我对单一登录和联合世界非常陌生,我非常感谢您提供的任何信息和提示。

SAML通常使用浏览器在两个站点之间保持一个公共“会话”

具体做法如下:

  • 一个网站A.org在浏览器中启动会话A
  • 它看到没有SAML身份验证,并将其发布到SAML身份提供程序。通过浏览器自动提交表单(JavaScript)
  • 身份提供程序发现没有SSO会话,则执行登录表单
  • 在登录表单之后,它将使用SSO会话ID(也就是说)发回站点A.org
  • 如果站点B.net上的同一浏览器现在启动了新会话B,它将再次发布到SAML标识提供程序,该提供程序现在有一个要返回的现有SSO会话ID
发布到SAML标识提供程序的表单会自动发回,返回的身份验证也是一个自动发布的表单。一种跨站点脚本

SAMLServlet筛选器可以接受此结果,并将UserPrincePal放入应用程序请求中

配置并不太困难。您的“服务器”需要您自己的唯一密钥对

总而言之,这相当耗时。它也帮助建立了自己的身份提供者。ApacheShiro是JavaEE服务器世界之外的一个安全解决方案,在我处理SAML时,它没有SAML解决方案


如果您运行了一个演示IdP和SP,那么简化所有操作应该不会太困难。也许可以使用FireFox和TamperData插件来检查通信。

谢谢您的精彩解释,Joop。我的问题:1。我假设这个“SAMLServlet过滤器”在SP端工作,但我的Netty应用程序不能是一个servlet,因此似乎我必须有一个单独的模块用于此目的。你知道通常的做法是什么吗?2.我确实可以访问IdP,我试图解决的问题是如何让我的应用程序作为SP运行。如果你确实想自己做,拥有一个工作的IdP/SP1/SP2会有所帮助。数据交换可能很简单,将其作为模板复制并使用ApacheHttpClient发布填充文本应该很简单。(这仍然需要培养毅力。)