봄 SAML 에서 Weblogic12c
-
22-12-2019 - |
문제
나는 현재 작업에서는 응용 프로그램의 사용을 봄 SAML(http://projects.spring.io/spring-security-saml/ 의)프로젝트의 일부분으로 우리의 인증이 있습니다.난 그것은 여전히 에서 RC 하지만 그 응용 프로그램은 우리하게 작업을 수행할 수 있습니다.우리는 통합 라이브러리와 완벽하게 작동하면 배포 Tomcat7 그러나는 문제로 실행하면 배포하 Weblogic12c(12.0.1.2).에서 Weblogic 없이 오류를 주장 값이 될 것입니다 decrpyted 으로 빈 오류가 없습니다.
문제는 것에 집 라이브러리입니다.봄 SAML(으로 인해 OpenSAML)이 필요합 2.10.0 마찬가지로 지금까지 내가 말할 수 있지만 Weblogic 제공합 2.8.0 의 집입니다.내가 하려고 했 업데이트 집 라이브러리 버전을 포함하여 적절한 xercesImpl 및 xml api 항아리에서 프로젝트 WEB-INF/lib 폴더에 있습니다.이 수정 decrpyting 문제 봄 SAML 지만 나누기 Weblogics 능력을 분석하 JSP 페이지입니다.나는 포함되는 부분의 스택 추적을 위한 비 업그레이드하고 업그레이드 집 예외는 아래.사람이 어떤 생각을 가지고 있다면의하는 방법을 제대로 이 문제를 해결하도록 봄 SAML 할 수 있는 기능의 Weblogic 을 파괴하지 않으면 기본 기능이 크게 감사하겠습니다.
이것은 스택 추적하기 전에 업데이트하는 집
2014-07-31 10:43:37,675 [[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.apache.xml.security.algorithms.JCEMapper - Request for U
RI http://www.w3.org/2001/04/xmlenc#aes256-cbc
2014-07-31 10:43:37,675 [[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.apache.xml.security.encryption.XMLCipher - JCE Algorithm
= AES/CBC/ISO10126Padding
<Jul 31, 2014 10:43:37 AM EDT> <Error> <HTTP> <BEA-101020> <[ServletContext@1538876008[app:intranet module:intranet.war path:null spec-version:3.0]] Servlet failed with an
Exception
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.valueOf(Integer.java:582)
at org.opensaml.common.SAMLVersion.valueOf(SAMLVersion.java:89)
at org.opensaml.saml2.core.impl.AssertionUnmarshaller.processAttribute(AssertionUnmarshaller.java:71)
at org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshallAttribute(AbstractXMLObjectUnmarshaller.java:254)
at org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:113)
at org.opensaml.xml.encryption.Decrypter.decryptDataToList(Decrypter.java:479)
at org.opensaml.xml.encryption.Decrypter.decryptData(Decrypter.java:403)
at org.opensaml.saml2.encryption.Decrypter.decryptData(Decrypter.java:141)
at org.opensaml.saml2.encryption.Decrypter.decrypt(Decrypter.java:69)
at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:190)
at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:82)
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156)
at org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:84)
이것은 스택 추적 후 업데이트 집을 2.10.0.
weblogic.servlet.jsp.CompilationException: Failed to compile JSP /WEB- INF/jsp/errors/500.jsp
500.jsp:1:1: The validator class: "org.apache.taglibs.standard.tlv.JstlCoreTLV" has failed with the following exception: "java.lang.ClassCastException: weblogic.xml.jaxp.Re
gistrySAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory".
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
^-------------------------------------------------------------^
500.jsp:2:5: No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during parsing of the .tld file.
<%@ taglib prefix="int" uri="intranet"%>
^----^
500.jsp:2:5: No tag library could be found with this URI. Possible causes could be that the URI is incorrect, or that there were errors during parsing of the .tld file.
<%@ taglib prefix="int" uri="intranet"%>
^----^
500.jsp:6:3: This tag can only appear as a subelement of a standard or custom action. Exceptions are: jsp:body, jsp:attribute, jsp:expression, jsp:scriptlet, and jsp:declaration.
<jsp:attribute name="minifiedJs">
^-----------^
500.jsp:8:3: This tag can only appear as a subelement of a standard or custom action. Exceptions are: jsp:body, jsp:attribute, jsp:expression, jsp:scriptlet, and jsp:declaration.
<jsp:attribute name="nonMinifiedJs">
^-----------^
500.jsp:11:3: This tag can only appear as a subelement of a standard or custom action. Exceptions are: jsp:body, jsp:attribute, jsp:expression, jsp:scriptlet, and jsp:declaration.
<jsp:body>
^------^
at weblogic.servlet.jsp.JavelinxJSPStub.reportCompilationErrorIfNeccessary(JavelinxJSPStub.java:243)
at weblogic.servlet.jsp.JavelinxJSPStub.compilePage0(JavelinxJSPStub.java:179)
at weblogic.servlet.jsp.JavelinxJSPStub.access$000(JavelinxJSPStub.java:50)
at weblogic.servlet.jsp.JavelinxJSPStub$1.run(JavelinxJSPStub.java:108)
at java.security.AccessController.doPrivileged(Native Method)
at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:105)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:247)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:200)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:403)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:295)
at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:478)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:367)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
...
해결책
다음과 같은 방법을 사용 묶는 사용자의 집과 Xalan 라이브러리에서 Weblogic:
- Create 귀 아카이브
spring-security-saml2-sample.ear
- 함을 봄 SAML 파일
spring-security-saml2-sample.war
귀 안에,전쟁 포함해야 자신의 버전의 집과 Xalan. 파일 생성
META-INF/application.xml
귀 안에 다음과 같은 내용:<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5"> <module> <web> <web-uri>spring-security-saml2-sample.war</web-uri> <context-root>spring-security-saml2-sample</context-root> </web> </module> </application>
파일 생성
META-INF/weblogic-application.xml
다음과 같은 내용:<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.oracle.com/technology/weblogic/920/weblogic-application.xsd"> <xml> <parser-factory> <saxparser-factory> org.apache.xerces.jaxp.SAXParserFactoryImpl </saxparser-factory> <document-builder-factory> org.apache.xerces.jaxp.DocumentBuilderFactoryImpl </document-builder-factory> <transformer-factory> org.apache.xalan.processor.TransformerFactoryImpl </transformer-factory> </parser-factory> </xml> <prefer-application-packages> <package-name>org.opensaml.*</package-name> <package-name>org.apache.xerces.*</package-name> <package-name>org.apache.xalan.*</package-name> </prefer-application-packages> </weblogic-application>
배포하는 아카이브
다른 팁
나중에이 일에 오는 모든 사람을 위해.XercesImpl 버전 2.9.0으로 업데이트하여 문제를 해결할 수있었습니다.이것은 opensaml이 문제를 해결하는 동안 opensamam이 요청을 해결하는 것보다 작을수록이 문제는이 문제에 대해 달콤한 스포트 버전 인 것으로 보인다.Xerces 2.10.0은 기능에 XML-API의 업데이트 된 버전을 필요로하며 WebLogic 문제를 일으키는 문제점 (2.9.0은 WebLogic에 포함 된 XML-API 버전에서 작동하는 것으로 보입니다).
WAR 파일 또는 EAR 파일의 prefer-web-inf-classes
용 prefer-application-packages
로 재생 했습니까?그 중 하나는 문제가 해결 될 것입니다 :
weblogic-application.xml :
<wls:prefer-application-packages>
<wls:package-name>org.apache.xerces.xni.parser.*</wls:package-name>
<wls:package-name>org.apache.xerces.parsers.*</wls:package-name>
<wls:package-name>org.apache.xalan.*</wls:package-name>
</wls:prefer-application-packages>
.
weblogic.xml :
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</prefer-web-inf-classes>
</wls:container-descriptor>
.