2014-10-17 2 views
0

OpenAM를 통해 SSO를 초기화하기 위해서 노력하고, 나는 다음과 같은 오류 얻을 :OpenAM : AuthnRequest 처리 중 오류가 발생했습니다. 널 (null)

HTTP Status 400 - Error processing AuthnRequest. null 
The request sent by the client was syntactically incorrect (Error processing AuthnRequest. null). 

로그가 (NullPointerException이) 방법 AMKeyProvider.getPrivateKey에 연결됩니다, 그래서 개인 키를 읽을 수 없습니다 알고있다. 그러나 OpenAM/SAML을 처음 사용하고이 문제를 해결할 위치/방법을 알지 못합니다.

libSAML2:10/17/2014 12:06:41:247 PM CEST: Thread[http-bio-8443-exec-8,5,main] 
ERROR: Error processing Request 
java.lang.NullPointerException 
    at org.forgerock.openam.utils.AMKeyProvider.getPrivateKey(AMKeyProvider.java:269) 
    at com.sun.identity.saml.xmlsig.JKSKeyProvider.getPrivateKey(JKSKeyProvider.java:112) 
    at com.sun.identity.saml2.profile.SPSSOFederate.signQueryString(SPSSOFederate.java:1125) 
    at com.sun.identity.saml2.profile.SPSSOFederate.initiateAuthnRequest(SPSSOFederate.java:346) 
    at com.sun.identity.saml2.profile.SPSSOFederate.initiateAuthnRequest(SPSSOFederate.java:146) 
    at org.apache.jsp.saml2.jsp.spSSOInit_jsp._jspService(spSSOInit_jsp.java:149) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.forgerock.openam.validation.ResponseValidationFilter.doFilter(ResponseValidationFilter.java:44) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.sun.identity.setup.AMSetupFilter.doFilter(AMSetupFilter.java:98) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

답변

1

예외가 가리키는 :있어서 getPrivateKey을 org.forgerock.openam.utils.AMKeyProvider.getPrivateKey (AMKeyProvider.java:269)

은 다음과 같다 :

public java.security.PrivateKey getPrivateKey (String certAlias) { 
    java.security.PrivateKey key = null; 
    try { 
     key = (PrivateKey) ks.getKey(certAlias, 
       privateKeyPass.toCharArray()); 
    } catch (KeyStoreException e) { 
     logger.error(e.getMessage()); 
    } catch (NoSuchAlgorithmException e) { 
     logger.error(e.getMessage()); 
    } catch (UnrecoverableKeyException e) { 
     logger.error(e.getMessage()); 
    } 
    return key; 

}

따라서 예상 경로에 키 스토어가 전혀 없거나 키 저장소에 해당 별칭이있는 유효한 키가 없거나 키 저장소 및/또는 키 암호가 잘못되었습니다. 일반적으로, 보안 - myServerName - 서버 및 사이트 -

키 스토어 경로 (뿐만 아니라 암호화 암호를 포함하는 파일에 대한 경로가) 구성 아래 openAM 관리 웹 UI에서를 볼 수 있습니다 : 구성에서 구성되어 %BASE_DIR%

%BASE_DIR%/%SERVER_URI%/keystore.jks 
, - 서버 및 사이트 - myServerName을 - 일반.

관련 문제