SAML响应的签名验证失败

时间:2016-08-01 17:37:59

标签: java wso2is adfs2.0

我已使用Identity Server配置ADFS。我有来自ADFS的签名证书,该证书已导入Identity Server。我也适当地改变了IdpAlias的财产。但是,在使用travelocity.com应用程序时,我遇到了以下错误。

严重:发生了错误 org.wso2.carbon.identity.sso.agent.exception.SSOAgentException:SAML响应的签名验证失败     at org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.validateSignature(SAML2SSOManager.java:483)     在org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.processSSOResponse(SAML2SSOManager.java:227)     在org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.processResponse(SAML2SSOManager.java:145)     at org.wso2.carbon.identity.sso.agent.SSOAgentFilter.doFilter(SSOAgentFilter.java:89)     在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)     在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)     在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)     在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)     在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)     在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)     在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)     在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)     在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)     at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:670)     在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1520)     在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1476)     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)     at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)     在java.lang.Thread.run(未知来源)

2016年8月1日上午11:34:39 org.apache.catalina.core.StandardWrapperValve调用 严重:具有路径[/travelocity.com]的上下文中的servlet [jsp]的Servlet.service()因根本原因引发异常[SAML响应的签名验证失败] org.wso2.carbon.identity.sso.agent.exception.SSOAgentException:SAML响应的签名验证失败     at org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.validateSignature(SAML2SSOManager.java:483)     在org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.processSSOResponse(SAML2SSOManager.java:227)     在org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.processResponse(SAML2SSOManager.java:145)     at org.wso2.carbon.identity.sso.agent.SSOAgentFilter.doFilter(SSOAgentFilter.java:89)     在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)     在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)     在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)     在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)     在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)     在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)     在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)     在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)     在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)     at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:670)     在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1520)     在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1476)     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)     at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)     在java.lang.Thread.run(未知来源)

1 个答案:

答案 0 :(得分:0)

原因是,ADFS将响应发送到Identity Server,并在其中使用私钥对响应进行签名。然后,Identity Server将验证您在IDP配置中输入的公共证书的响应。

然后会发生什么,Identity Server创建自己的SAML respnose并发送到travelocity应用程序。在服务提供商配置中,如果已启用响应签名,Identity Server将从其私钥中签署SAML响应。

对于travelocity,您必须导出Identity Server的公共证书并将其导入travelocity应用程序的密钥库(wso2carbon.jks)文件。然后在travelocity.properties文件中,您必须更改IDPCertAlias属性,并提供Identity Server公共证书的别名。

然后它应该工作。

基本上,travelocity对ADFS一无所知。只有Identity Server知道它。 travelocity只知道Identity Server。