簡體   English   中英

SAML響應的簽名驗證失敗

[英]Signature validation failed for SAML Response

我已經使用Identity Server配置了ADFS。 我有一個從ADFS簽名的證書,該證書已導入Identity Server。 我還適當地更改了IdpAlias屬性。 但是,在使用travelocity.com應用程序時出現以下錯誤。

嚴重:發生錯誤org.wso2.carbon.identity.sso.agent.exception.SSOAgentException:在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),位於org.wso2.carbon.identity.sso.agent.SSOAgentFilter.doFilter(SSOAgentFilter.java:89),位於org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240),位於org.apache。 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)上的catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 106)at org.a上的org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 位於org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)的pache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141),位於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 org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:670)上的.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java) 1520)在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1476)在java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)在java.util.concurrent.ThreadPoolExecutor $ Worker org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)上的.run(未知源) 在java.lang.Thread.run(未知來源)

2016年8月1日上午11:34:39 org.apache.catalina.core.StandardWrapperValve在路徑[/travelocity.com]的上下文中為Servlet [jsp]調用SEVERE:Servlet.service()引發異常[SAML的簽名驗證失敗[響應],其根本原因為org.wso2.carbon.identity.sso.agent.exception.SSOAgentException:簽名驗證失敗,導致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),位於org.apache.catalina.org.org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240),位於org.wso2.carbon.identity.sso.agent.SSOAgentFilter.doFilter(SSOAgentFilter.java:89) org.apache.catalina.core.StandardWrapperValve.invoke(Stan)上的.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)處的dardWrapperValve.java:212)org.apache.catalina的org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)的dardWrapperValve.java:212) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)上的.core.StandardHostValve.invoke(StandardHostValve.java:141)在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) )的org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)的org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)處的org.apache.coyote.http11.AbstractHttp11Processor。在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractHttptoProcess.java:670)處的進程(AbstractHttp11Processor.java:1099)在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1520)處在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1476)處。 java.util.concurrent上的current.ThreadPoolExecutor.runWorker(未知源)org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)處的java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源) .lang.Thread.run(未知來源)

原因是,ADFS將響應發送到Identity Server,並在其中使用私鑰對響應進行簽名。 然后,Identity Server驗證來自您在IDP配置中輸入的公共證書的響應。

然后發生的是,Identity Server創建它自己的SAML響應並發送到travelocity應用程序。 在服務提供者配置中,如果您啟用了響應簽名,則Identity Server將使用其私鑰對SAML響應進行簽名。

對於travelocity,您必須導出Identity Server的公共證書並將其導入到travelocity應用程序的密鑰庫(wso2carbon.jks)文件中。 然后,在travelocity.properties文件中,您必須更改IDPCertAlias屬性,以提供Identity Server的公共證書的別名。

然后它應該工作。

基本上,travelocity對ADFS一無所知。 只有Identity Server知道。 travelocity僅知道身份服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM