问题标签 [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 投票
1 回答
1114 浏览

spring - 尝试使用 Java 配置将 Struts2 和 Spring Security SAML 与应用程序集成

我正在尝试在我的应用程序中使用 Spring Security SAML Extension。我无法确定正确的配置。在我的应用程序中,我使用的是 Spring Java 配置。这是我的代码:

网页.xml:

这是我的配置类:

当我运行应用程序时,我收到以下错误:

严重:上下文初始化失败 java.lang.IncompatibleClassChangeError:在 java.security.SecureClassLoader.defineClass(SecureClassLoader) 的 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 的 java.lang.ClassLoader.defineClass1(Native Method) 实现类.java:142) 在 weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:412) 在 weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:366) 在 weblogic.utils.classloaders.GenericClassLoader.findClass( GenericClassLoader.java:318) 在 weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:80) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 java.lang.ClassLoader.loadClass(ClassLoader.java :358) 在 weblogic.utils.classloaders。GenericClassLoader.loadClass(GenericClassLoader.java:186) 在 weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:50) 在 org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42) 在 org.springframework .context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:696) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java :461) 在 org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) 在 org.springframework.web.context.ContextLoader。initWebApplicationContext(ContextLoader.java:306) 在 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 在 weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:678) 在 weblogic.security .acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 在 weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 在 weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) 在weblogic.servlet.internal.EventsManager.executeContextListener(EventsManager.java:243) 在 weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:200) 在 weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:185)在 weblogic.servlet.internal。WebAppServletContext.preloadResources(WebAppServletContext.java:1838) 在 weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2876) 在 weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661) 在 weblogic.servlet.internal .WebAppModule.start(WebAppModule.java:823) 在 weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360) 在 weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356) 在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) 在 weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138) 在 weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211) 在 weblogic.application.utils.StateMachineDriver .nextState(StateMachineDriver.java:42) 在 weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:73) 在 weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24) 在 weblogic。 application.internal.BaseDeployment$2.next(BaseDeployment.java:729) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) 在 weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258) 在weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:48) 在 weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80) 在 weblogic.deploy.internal.targetserver.BasicDeployment.activate 的 weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165) (BasicDeployment.java:226) 在 weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:418) 在 weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51) 在 weblogic.management .deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200) 在 weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30) 在 weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.爪哇:240) 在 weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169) 在 weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123) 在 weblogic.management.deploy.internal.DeploymentServerService .resume(DeploymentServerService.java:210) 在 weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:118) 在 weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:78) 在 sun.reflect.GeneratedMethodAccessor7。在 org.glassfish.hk2.utilities.reflection.ReflectionHelper 的 java.lang.reflect.Method.invoke(Method.java:606) 的 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 调用(未知来源)。在组织调用(ReflectionHelper.java:1017)。jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:388) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:430) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor. java:456) 在 org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) 在 org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) 在 org.jvnet.hk2 .internal.Utilities.createService(Utilities.java:2488) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:606 ) 在 org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:231) 在 org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:77) 在 org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:254) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:413) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor. java:456) 在 org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:225) 在 org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:82) 在 org.jvnet.hk2 .internal.Utilities.createService(Utilities.java:2488) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87 ) 在 org.glassfish.hk2.runlevel.internal 的 org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1162)。CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1147) 在 weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548) 在 weblogic.work.ExecuteThread.execute(ExecuteThread.java:311) 在 weblogic.work.ExecuteThread .run(ExecuteThread.java:263)

更多堆栈跟踪:

org.springframework.web.context.ContextLoader - 上下文初始化失败 java.lang.IncompatibleClassChangeError: 在 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 在 java.lang.ClassLoader.defineClass1(Native Method) 在 java 实现类.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:412) 在 weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:366) 被截断。查看日志文件以获取完整的堆栈跟踪

用户定义的监听器 org.springframework.web.context.ContextLoaderListener 失败:java.lang.IncompatibleClassChangeError:实现类。java.lang.IncompatibleClassChangeError:在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 的 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 的 java.lang.ClassLoader.defineClass1(Native Method) 实现类在 weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:412) 在 weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:366) 被截断。查看日志文件以获取完整的堆栈跟踪

无法在 web.xml 中加载用户定义的过滤器:org.springframework.web.filter.DelegatingFilterProxy。java.lang.IncompatibleClassChangeError:在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 的 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 的 java.lang.ClassLoader.defineClass1(Native Method) 实现类在 weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:412) 在 weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:366) 被截断。查看日志文件以获取完整的堆栈跟踪

我究竟做错了什么?如果我在 contextConfigLocation 中添加,我会收到一个错误,表明 DelegatingFilterProxy 无法初始化。任何帮助将不胜感激。

谢谢!

0 投票
3 回答
28627 浏览

adfs2.0 - 将 ADFS 与 Spring SAML 扩展集成时的问题

我正在努力将 Spring SAML Extension 集成到我们的应用程序中,并将 SSO 与我们客户的 ADFS2.0 之一作为 IDP 我们从我们的应用程序生成服务提供商元数据并将 ADFS 元数据导入我们的应用程序。当我选择客户 idp并单击开始单点登录并提供正确的客户端凭据,我们将看到 SAML 响应,如下所示:

萨姆尔响应。

但我也看到由于服务提供商无法验证消息而引发以下异常。

异常消息:

任何人都可以指出我是否在这里遗漏了任何东西。

更新:

在看到为这个问题提供的答案后,我看到了 ADFS 的以下错误。

但是在看到这个之后,我们确实将依赖信任方的签名算法更改为 rsa-sha256 但仍然显示相同的消息。

我们需要 rsa-sha256 的正版证书吗?自签名证书会正常工作吗?

0 投票
1 回答
915 浏览

spring-security - Spring saml,第二个本地 SP - 实体别名和上下文提供者

我有两个负载均衡器的系统,为单独的网络公开应用程序。

在应用程序中,spring-saml 扩展用于通过 IdP 进行身份验证(从两个网络都可见)。对于第一个位置,所有工作都按预期工作 - 默认 SP 与 entityId=exampleSP1。

当我配置第二个 SP 元数据(具有不同 entityId=exampleSP2 的本地)并使用 /saml/login/alias/exampleSP2 调用它时,应用程序收到来自 IdP 的成功响应,但在 SAMLCredential 验证期间抛出异常:“SAML 消息预期目标端点与收件人不匹配端点"

当使用第二个 SP 目标端点与 contextProviderLB 中配置的不同时,会发生异常。

定义分离 contextProviderLB 的方法是否取决于使用哪个 SP(或初始 URL)?

0 投票
7 回答
33594 浏览

spring - 受信任的证书条目不受密码保护的 Spring SAML

我通过复制我计划连接的 IDP 的 509 条目生成了 testIdp.cer 文件。然后我通过执行以下命令创建了 JKS 文件

执行时,它要求输入我已提供密码的密码。对于“信任此证书?[否]:”这个问题,我给出了“y”作为输入。消息显示为“证书已添加到密钥库”。

然后我在securityContext.xml中配置了以下细节

但是当我运行应用程序时,在服务器启动和加载应用程序主页时出现以下两个异常。任何人都可以让我知道我是否缺少其他任何东西。

启动服务器时发生此异常

当我运行我的应用程序的主页时发生此异常

0 投票
1 回答
1367 浏览

spring-saml - Spring Security SAML 和 ECP

我有使用 Spring Security SAML 扩展(1.0 版)的 java web 应用程序,充当 SP。此 SP 使用预配置的元数据,它适用于基于浏览器的客户端。我现在正在尝试添加 ECP 支持,并且已将以下内容添加到元数据 bean 中的 SP 扩展元数据 bean:

我使用以下作为标头参数发出 GET 请求:

我的网络应用程序抛出了这个异常:

HTTP 状态 500 - org.opensaml.saml2.metadata.provider.MetadataProviderException:服务提供者没有可用于所选配置文件 org.opensaml.saml2.metadata.impl.SPSSODescriptorImpl@7fe2dde8 的断言消费者服务

...根本原因...

org.opensaml.saml2.metadata.provider.MetadataProviderException:服务提供者没有可用于所选配置文件的断言消费者服务 org.opensaml.saml2.metadata.impl.SPSSODescriptorImpl@7fe2dde8 org.springframework.security.saml.websso.WebSSOProfileImpl.getAssertionConsumerService (WebSSOProfileImpl.java:205) org.springframework.security.saml.websso.WebSSOProfileECPImpl.sendAuthenticationRequest(WebSSOProfileECPImpl.java:55) org.springframework.security.saml.SAMLEntryPoint.initializeECP(SAMLEntryPoint.java:185).....

所以看起来它正在尝试启动 ECP 流程,但我不明白为什么会出现这个异常。我遵循了 Spring SAML 文档,它在 ECP 部分中没有提到任何关于此的内容。

0 投票
1 回答
4183 浏览

spring - Spring SAML:解密加密密钥时出错,没有安装的提供程序支持此密钥

我参考了 Spring SAML 手册来创建私钥和导入公共证书。但我仍然面临加密/解密问题。

我已经使用手册中提到的以下命令创建了一个 JKS 文件,如下所示

用于导入 IDP 的公共证书的命令

用于私钥的命令

私钥和密钥库的密码都定义为“changeit”

我已将 securityContext 配置如下

我可以看到可以选择 IDP 的 idpDiscovery 页面。我也可以查看 IDP 的登录页面。但是当我提供用户凭据时,我得到了以下异常。

当 saml2:EncryptedAssertion 与 SAML 响应中的 saml2p:Status 一起发送时,会发生此异常。(类:spring-saml jar的WebSSOProfileConsumerImpl)

谁能让我知道我哪里出错了??

替代命令使用私钥生成而不是上面提到的

如果我使用此命令并更新 JKS 文件,则会收到另一个异常,称为InvalidKeyException: Key is too long for unwrapping

谁能帮我解决这个问题??

0 投票
2 回答
4358 浏览

spring-security - org.opensaml.saml2.metadata.provider.FilterException:元数据条目的签名信任建立失败

在 securityContext.xml 中配置 IDP 后尝试运行服务器时出现以下异常。

原因:org.opensaml.saml2.metadata.provider.FilterException:元数据条目的签名信任建立失败

我看到http://forum.spring.io/forum/spring-projects/security/saml/108450-getting-error-signature-trust-establishment-failed-for-metadata-entry链接中有一个解决方法,它说,通过在包含您的 IDP 元数据的 ExtendedMetadataDelegate bean 上将属性 metadataTrustCheck 设置为 false。

但我不想更新 saml2 核心 api,而是可以在 securityContext.xml 中设置 metadataTrustCheck。如果是这样,如何设置它。我尝试如下。但仍然得到同样的错误。

我的 MetadataManager 定义如下:

请帮助解决这个问题。谢谢。

0 投票
2 回答
3987 浏览

spring-mvc - Spring saml:密钥太长,无法展开:invalidkeyexception

我的机器上只安装了一个 JDK,并且代码指向同一个 JDK。我在两个文件夹(C:\Program Files\Java\jdk1.6.0_25\jre\lib\security 和 C:\Program Files\Java\jre6\lib\security)中都安装了无限强度加密库。

即使添加了上面提到的无限强度库,我仍然会遇到同样的异常。这是其他票链接的延续

例外:

SAML 加密断言

任何人都可以研究我面临的这个问题并提供解决方案吗?

0 投票
1 回答
2891 浏览

maven - 存储库中的 spring-security-saml 缺少 jar

根据http://projects.spring.io/spring-security-saml/上的说明,我的 pom.xml 中有以下内容:

当我执行 mvn clean install -U 时,我收到以下错误:

[错误] 无法在项目 myproj 上执行目标:无法解析项目 com.acme.myproj:myproj:war:1.0.0-SNAPSHOT 的依赖项:找不到工件组织。springframework.security.extensions:spring-security-saml:jar:1.0.0.RC2 in spring -milestones ( http://repo.spring.io/milestone ) -> [帮助 1]

回购位于http://repo.spring.io/milestone/org/springframework/security/extensions/spring-security-saml/1.0.0.RC2/,但没有 .jar 文件。

0 投票
1 回答
1718 浏览

spring-security - 创建名为 'org.springframework.security.saml.trust.h ttpclient.TLSProtocolSocketFactory 的 bean 时出错

我正在尝试配置应仅支持 https 的应用程序,并且在 securityContext.xml 文件中添加了以下配置:

运行服务器时出现以下异常:

原因:org.springframework.beans.factory.BeanCreationException:在 ServletContext 资源 [/WEB-INF/securityContext.xml] 中定义名称为“org.apache.commons.httpclient.protocol.Protocol#59a20678”的 bean 创建错误 [/WEB-INF/securityContext.xml]:不能在设置构造函数参数时创建 [org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory] ​​类型的内部 bean 'org.springframework.security.s aml.trust.httpclient.TLSProtocolSocketFactory#5658808';嵌套异常是 org.springframework.beans.factory.BeanCreationException: Error Creating bean with name 'org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory#5658808' 在 ServletContext 资源 [/WEB-INF/secur ityContext.xml ]: bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean 类 [org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory]:未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException: org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory.() at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:281) at org.springframework .beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:12 0) 在 org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630) 在 org.springframework.beans.factory.support。 org.springframework.beans.factory 的 ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)。h ttpclient.TLSProtocolSocketFactory#5658808' 在 ServletContext 资源 [/WEB-INF/securityContext.xml] 中定义:bean 的实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean 类 [org.springframework.security.sa ml.trust.httpclient.TLSProtocolSocketFactory]:未找到默认构造函数;嵌套异常是 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.j ava:997) 的 java.lang.NoSuchMethodException: org.spring framework.security.saml.trust.httpclient.TLSProtocolSocketFactory.() .springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactor y.java:943) 在 org.springframework.beans.factory.support。AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java :485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:4 56) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java :270) ... 32 更多原因:org.springframework.beans.BeanInstantiationException:无法实例化 bean 类 [org.springframework.security.saml.trust.h ttpclient.TLSProtocolSocketFactory]:未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException: org.springframework。security.saml.trust.httpclient.TLSProtocolSocketFactory.() at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.

你能指导我如何纠正这个问题吗?我有最新的后备箱。