问题标签 [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.
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 无法初始化。任何帮助将不胜感激。
谢谢!
adfs2.0 - 将 ADFS 与 Spring SAML 扩展集成时的问题
我正在努力将 Spring SAML Extension 集成到我们的应用程序中,并将 SSO 与我们客户的 ADFS2.0 之一作为 IDP 我们从我们的应用程序生成服务提供商元数据并将 ADFS 元数据导入我们的应用程序。当我选择客户 idp并单击开始单点登录并提供正确的客户端凭据,我们将看到 SAML 响应,如下所示:
萨姆尔响应。
但我也看到由于服务提供商无法验证消息而引发以下异常。
异常消息:
任何人都可以指出我是否在这里遗漏了任何东西。
更新:
在看到为这个问题提供的答案后,我看到了 ADFS 的以下错误。
但是在看到这个之后,我们确实将依赖信任方的签名算法更改为 rsa-sha256 但仍然显示相同的消息。
我们需要 rsa-sha256 的正版证书吗?自签名证书会正常工作吗?
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)?
spring - 受信任的证书条目不受密码保护的 Spring SAML
我通过复制我计划连接的 IDP 的 509 条目生成了 testIdp.cer 文件。然后我通过执行以下命令创建了 JKS 文件
执行时,它要求输入我已提供密码的密码。对于“信任此证书?[否]:”这个问题,我给出了“y”作为输入。消息显示为“证书已添加到密钥库”。
然后我在securityContext.xml中配置了以下细节
但是当我运行应用程序时,在服务器启动和加载应用程序主页时出现以下两个异常。任何人都可以让我知道我是否缺少其他任何东西。
启动服务器时发生此异常
当我运行我的应用程序的主页时发生此异常
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 部分中没有提到任何关于此的内容。
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。
谁能帮我解决这个问题??
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 定义如下:
请帮助解决这个问题。谢谢。
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 加密断言
任何人都可以研究我面临的这个问题并提供解决方案吗?
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 文件。
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.
你能指导我如何纠正这个问题吗?我有最新的后备箱。