问题标签 [spring-saml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8341 浏览

spring - 使用 Spring SAML 处理 SAML 响应

我使用Spring SAML开发了一个服务提供者。我已经配置了几个IdP,每个都有不同的属性命名约定。

  1. 我可以在成功的AuthN过程之后(在Tomcatlogs/catalina.out文件上)记录整个SAML 响应吗?
  2. 是否有一些本机功能来定义某个 IdPEntityID和映射返回的属性之间的关联userID
  3. 我也在阅读OID 格式:如何正确解码这种数据?

更新:

关于第一个问题,根据文档,我设置了调试日志和身份验证日志,如下所示:

然后,通过定义 alog4j.properties如下:

并通过正确配置 Mavenpom.xml

尽管如此,完整的 SAML 响应并没有出现(我期待的是 XML 消息)。输出如下:

请注意,最后两行是我手动定义的。

0 投票
1 回答
4295 浏览

java - 使用 Spring SAML 从 https 加载元数据

我想通过使用https协议从网络导入一些元数据:

通过阅读文档,我发现了这一步:

默认情况下,使用基于 HTTP 的提供程序通过 HTTPS 加载元数据会执行 JDK 中配置的信任验证。如果您想在 keyStore 中使用证书,请添加以下 bean 来更改 HTTP 客户端使用的 socketFactory:

在 Java Config 中转换,变为:

但是org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory找不到类结果。我正在使用Spring SAML的版本1.0.0-RC2

难道我做错了什么?

如何修复此错误并根据需要加载元数据?


更新

通过使用 SNAPSHOT 存储库,我可以使用 TLSProtocolSocketFactory 类。我已将 SSOCircle 的证书导入到我的密钥库中,但尽管如此,应用程序仍返回如下错误:


更新 2

我已经根据您的建议修复了我的代码。我已将所有证书导入密钥库,但在启动时应用程序返回此错误:

请注意,使用的证书由 GoDaddy 验证。

0 投票
3 回答
2286 浏览

java - Weblogic 12c 上的 Spring SAML

我目前正在开发一个使用 Spring SAML ( http://projects.spring.io/spring-security-saml/ ) 项目作为我们身份验证的一部分的应用程序。我知道它仍在 RC 中,但我们正在开发的应用程序也是如此。当部署到 Tomcat7 时,我们已经集成了库并且功能齐全,但在部署到 Weblogic 12c (12.0.1.2) 时遇到了问题。在没有抛出任何错误的 Weblogic 上,断言值将被解密为空无错误。

问题似乎出在 Xerces 库中。据我所知,Spring SAML(由于 OpenSAML)需要 2.10.0,但 Weblogic 提供了 2.8.0 的 Xerces 库。我试图通过在项目 WEB-INF/lib 文件夹。这修复了 Spring SAML 的解密问题,但破坏了 Weblogics 解析 JSP 页面的能力。我在下面包含了未升级和升级的 Xerces 异常的部分堆栈跟踪。如果有人知道如何正确解决此问题,以便 Spring SAML 可以在不破坏默认功能的情况下运行 Weblogic,我将不胜感激。

这是更新 Xerces 之前的堆栈跟踪

这是将 Xerces 更新到 2.10.0 后的堆栈跟踪。

0 投票
3 回答
2983 浏览

spring-security - 打开和关闭 Spring Security SAML 的方法

除了其他身份验证机制之外,我的应用程序中还有一个非常标准的 spring security saml 实现。开箱即用的 SAML 不会被配置,但可以通过表单进行配置,因此默认情况下应该禁用 SAML。我希望能够轻松地打开/关闭 SAML,但不确定最好的方法是什么。

似乎一种方法是做一个自定义FilterChainProxy,如果我检查是否启用了saml,如果启用则忽略samlFilter链(如何从Spring Security中的默认过滤器堆栈中删除一个过滤器?),并为元数据生成器过滤器。

任何建议都会很棒。

这是我的配置:

元数据生成器过滤器:

萨姆过滤器:

编辑:这是我的实现,它有点骇人听闻并且依赖于不推荐使用的方法,但它可以工作

下面的代码片段禁用 MetadataGeneratorFilter:

还有自动装配的 samlFilter / FilterChainMap。如果启用了 saml,我会保留这个链,如果它被禁用,我会在我的服务中将链设置为启用/禁用 saml 的空映射。

初始化后,我得到 filterchainmap 值:

在下面的方法中,我将过滤器链映射设置为 spring xml 中提供的原始映射(如果启用)或空映射(如果禁用)。

0 投票
1 回答
719 浏览

spring - SAML 端点与使用 roor 目录不匹配

为了设置我的服务提供者的 SAML 上下文,我使用如下配置:

它返回此错误(不需要“斜线”):

我该如何解决?

0 投票
1 回答
3861 浏览

spring - Tomcat 上的 Spring Security SAML 元数据 URL

我正在开发一个基于 java 的 Web 应用程序,在 Tomcat 服务器上使用 Spring Security SAML 实现 SSO。此应用程序将扮演服务提供者角色 (SP)。检索此 SP 元数据的默认 Spring URL 是:

这工作得很好,按预期返回元数据 XML 文件。但是,当我将DefaultServlet servlet-mappings 添加到 web.xml 时遇到了问题。甚至只是一些基本的东西:

如果 web.xml 中存在一个或多个默认 servlet 映射,则上述 URL 将返回 404。任何人都知道可能导致此问题的原因并有可能的解决方案吗?

更新:我已将上面的确切 servlet 映射放在 Spring Security SAML 示例应用程序中,它还阻止元数据 URL 工作。如果我将其注释掉或删除它,它会按预期工作。下面是 web.xml:

0 投票
3 回答
16692 浏览

java - SAML 元数据条目的签名信任建立失败

为了从远程源获取元数据,我定义了一个ExtendedMetadataDelegatebean,如下所示:

为了保证签名信任的建立,我在 JDK keystore 和 application keystore 中都添加了相关的密钥(第二步可能还不够);尽管如此,运行 webapp 还是会发生错误。

错误通过设置消失:

...但我想检查使用过的元数据。

有没有办法解决这个错误?


更新:

我尝试ExtendedMetadata如下设置,但错误仍然存​​在。

0 投票
1 回答
1532 浏览

java - 将控制器添加到 spring saml 示例时收到 404 错误

我的目标是在页面上有一个链接,将用户返回到原始站点。我从 spring saml 示例http://projects.spring.io/spring-security-saml/开始,并正在添加一个新功能索引页。

我的 saml-servlet.xml 和 securityContext.xml 都有

我在 com.home.saml.sp 包中的 returnController.java

我的 index.jsp 添加

0 投票
2 回答
4035 浏览

java - Spring 框架 4.0 和 Spring security 3.2.4 上的 Spring Security SAML 扩展

我想为基于 spring 的应用程序使用注释配置。SSO 还需要 SAML2.0 消化和生成。

注解配置仅受 Spring 4.0 和 Spring security 3.2.4 支持

Spring security SAML 1.0 的集成是否可行?

更新:Vladimír Schäfer 提供的示例项目确实很有帮助。

但是在sso登录之后,页面已经被重定向到服务提供商应用程序上的认证失败URL。

SAML 响应如下:

我怀疑这是由于 SP 的时区与 IDP 不同,我该如何跳过这个?

0 投票
0 回答
721 浏览

authentication - Spring-SAML 身份验证失败:HttpSession 返回了 SPRING_SECURITY_CONTEXT 的空对象

我正在使用 spring-saml2-sample 应用程序连接到 Shibboleth IDP。我终于设法使用 http post 向 IDP 发送正确的 saml 请求,但登录后我在 SP 端返回以下内容:

org.springframework.security.web.context.HttpSessionSecurityContextRepository - HttpSession 返回空对象 SPRING_SECURITY_CONTEXT

有一篇类似的帖子通过迁移到 Spring Security 版本 3.1.2 解决了问题,但这是 saml2-sample 应用程序附带的版本。我错过了什么吗?我在 saml2-sample 应用程序中没有太大变化,web.xml 是一样的,库是一样的。

任何帮助将不胜感激。