0

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

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

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

4

1 回答 1

0

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

这是按如下方式完成的:

  • 一个站点 A.org 在浏览器中启动会话 A。
  • 它发现没有 SAML 身份验证,并发布到 SAML 身份提供者。通过具有自动表单提交 (JavaScript) 功能的浏览器,
  • 身份提供者看到没有 SSO 会话,做一个登录表单
  • 登录表单后,它会使用 SSO 会话 ID(可以这么说)发回站点 A.org。
  • 如果现在站点 B.net 上的同一浏览器启动新会话 B,它会再次发布到 SAML 身份提供者,该身份提供者现在具有要返回的现有 SSO 会话 ID。

发布到 SAML 身份提供者的表单会自动回传,返回的身份验证也是自动发布的表单。一种跨站点脚本。

SAML servlet 过滤器可以接受此结果并将 UserPrinciepal 放入应用程序请求中。

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

总而言之,这是相当耗时的。它也有助于建立自己的身份提供者。Apache Shiro 是 Java EE 服务器领域之外的安全解决方案,在我从事 SAML 工作时没有 SAML 解决方案。

如果您有一个演示 IdP 和 SP 正在运行,那么缩短所有内容应该不会太难。也许使用带有 TamperData 插件的 FireFox 来检查通信。

于 2014-06-23T23:49:02.423 回答