java - 如何实现 SAML SSO

标签 java security single-sign-on saml

SAML SSO 通常是如何实现的?

我已阅读 this (n.b. obsolete) 关于在 Google Apps 中使用 SAML,以及 SAML 上的维基百科条目.

维基百科条目讨论了使用包含 SAMLRequest 和 SAMLResponse 详细信息的表单进行响应。这是否意味着用户必须亲自提交表单才能继续单点登录?

谷歌条目谈到使用重定向,这对我来说似乎更不靠谱。但是,它也谈到了使用表单作为用户必须提交的响应(尽管它确实谈到了使用 JavaScript 自动提交表单)。

这是执行此操作的标准方式吗?使用重定向和 JavaScript 提交表单?

有没有人知道关于如何在 Windows 域和 J2EE Web 应用程序之间实现 SSO 的任何其他好的资源。 Web 应用程序位于单独的网络/域上。我的客户想使用 CA Siteminder (使用 SAML)。

最佳答案

其工作方式是,在对用户进行身份验证后,SAML 身份提供者 (IdP) 向浏览器呈现包含 SAML 响应的表单 - 表单的“操作”(即目标)是服务提供者 (SP)。在 HTML 中,有一个提交表单的 JavaScript onLoad 事件,因此最终效果是用户被自动从 IdP 带到 SP,SAML 响应在手。

用户必须点击任何内容来提交表单的唯一情况是他们禁用了 JavaScript。在这种情况下,SAML 实现通常会在 <noscript> 中提供带有按钮的消息,以供按下。标记。

更多详情见this article I wrote a few years ago - 但请注意,'Lightbulb' 现在早已过时 - 对于 PHP SAML,请参阅 simpleSAMLphp .

很遗憾您的客户想要使用 CA SiteMinder - 开源 OpenAM (以前称为 OpenSSO)很容易做到这一点。

关于java - 如何实现 SAML SSO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/806131/

相关文章:

java - 为什么在Java中不能用String存储密码,而在C语言中可以用String存储密码?

nginx - Nginx 开源是否支持 OpenID 和 JWT

single-sign-on - 如何在身份提供者 (IdP) 发起的 SAML sso 中维护状态参数?

java - 有没有一种优雅的方法可以将 map 流减少到一张 map

java - 在 JPQL 中为过滤器添加两个字符串变量?

wordpress - 带有 headless (headless) WordPress 的 Next.js 获取帖子需要授权(JWT)吗?

c# - 配置与静态属性、安全问题

php - Laravel 中的 Symfony fos_user 捆绑编码密码 - Symfony 到 Laravel 的迁移

java - Seam:使用外部 SSO 应用程序登录

java - 如何使用 split() 读取文件字符串的第一个字符?