【问题标题】:SAML For Java Application Running on Tomcat适用于在 Tomcat 上运行的 Java 应用程序的 SAML
【发布时间】:2016-10-14 09:31:23
【问题描述】:

我有一个在 tomcat 服务器上运行的 Java 应用程序。我将用户信息存储在 mysql 表中并使用 Java Rest 服务进行身份验证。 现在,当我登陆 customer.myapp.com 时,我想检查浏览器中是否有 customer.com的活动会话>,如果是这样,请在内部使用该会话登录我的应用程序。如果没有会话,则将用户重定向到 customer.com 登录门户并在登录后登陆 customer.myapp.com 主页。

如何使用 SAML 来实现这一点。我已经完成了理论部分并对 SP(在本例中为 customer.myapp.com)和 IdP(我假设它将是客户的登录门户客户)有所了解.com)。我什至下载了 OpenSAML jar。我不知道如何进行配置。就我而言,我无权访问 IDP。

public class EMSAMLObjectBuilder {
// Get the builder factory
XMLObjectBuilderFactory builderFactory = Configuration.getBuilderFactory();

// Get the assertion builder based on the assertion element name
@SuppressWarnings("unchecked")
SAMLObjectBuilder<Assertion> builder = (SAMLObjectBuilder<Assertion>) builderFactory.getBuilder(Assertion.DEFAULT_ELEMENT_NAME);

// Create the assertion
Assertion assertion = builder.buildObject();

}

这是我能找到的唯一一段代码。有什么帮助吗?

【问题讨论】:

    标签: java tomcat single-sign-on saml-2.0 opensaml


    【解决方案1】:

    听起来像是 SAML Web 浏览器配置文件的标准用例。我建议继续阅读它。网上有很多资料。

    基本上流程是这样的。

    1. SP 和 IDP 交换 metadataXML。这可以通过任何方式完成,例如电子邮件或通过在网络服务器上发布 xml。这仅在 SP 和 IDP 之间进行一次。
    2. 当 SP 想要对用户进行身份验证时,它会将其发送给 IDP,例如使用重定向和 SAML 身份验证请求。
    3. IDP 对用户进行身份验证。
    4. IDP 将用户连同 SAML 身份验证响应一起发送回 SP

    SAML 是一种非常灵活的协议,因此上述流程可能会有所不同。如何进行通信通常在元数据中更详细地指定。

    这可以通过多种方式实现,OpenSAML 就是其中之一。 OpenSAML official website 提供了一些有用的示例。

    我写了一个blog on OpenSAML,其中包含很多关于该主题的有用帖子。我还写了一本书,A Guide to OpenSAML,详细介绍了 SAML Web 浏览器配置文件服务提供者的实现。

    巧合的是,书中的示例应用程序是在嵌入式 tomcat 上运行的。

    【讨论】:

    • 我读过你的博客,我想我读过很多不同的东西,现在完全糊涂了。你能告诉我应该从哪里开始吗?目前我有一个基于 java 的 tomcat 应用程序在我的 localhost 上运行,它应该是我的服务提供者。目前我没有 Idp ,但我正在考虑使用在不同机器的 tomcat 上运行的相同应用程序并使用不同的数据库。在我的服务提供商登录页面中,我将使用一些元数据重定向到 Idp 登录(如果我是对的)。如何获取该元数据以及如何让我的 Idp 处理请求
    • 我阅读了链接,但它说明了它是如何工作的,并没有说明我如何在我现有的应用程序上实现它。这是一个紧急需求,有人可以帮忙吗?
    • 我已经更新了答案。至于执行。这两个帖子说明了步骤 2 和 4 的实施。blog.samlsecurity.com/2011/01/redirect-with-authnrequest.htmlblog.samlsecurity.com/2011/02/…。第二个是关于使用 Artifact 发送 SAML 响应。在这个过程中,IDP 发送一个指向 SAML 响应的指针。然后 SP 在 SOAP WS 调用上解决它。
    • 感谢您的回复 :),但您提供的博客链接似乎已损坏
    • 哦?我试过了,现在看起来很好。关注他们时你会得到什么页面?
    【解决方案2】:

    我的感觉是,你永远不应该直接使用 OpenSAML 之类的库,这些库非常低级且难以掌握。 如果您想使用 SAML 登录过程来保护您的 Web 应用程序,那么您当然应该为此使用安全库。 免责声明:我是 pac4j 的创建者,因此我可以推荐使用其中一种 pac4j 实现:http://www.pac4j.org/implementations.html 用于 SAML:http://www.pac4j.org/docs/clients/saml.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      相关资源
      最近更新 更多