wssecurity에 대한 올바른 이해를 아직 확신 할 수 없지만 필요한 순서대로 수정하십시오. 문제점을 설명합니다. 내가 CXF 프레임 워크ws-security/wss4j 호출 방법 weblogic 12c
주로하기 때문에 이러한 종속성의 보안 웹 서비스와 통신하는 독립 CXF 클라이언트를 만드는 succeded<wsp:Policy wsu:Id="AsymmetricX509TokensWithUntPolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SupportingTokens>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:ProtectTokens/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:SignedParts>
<sp:Body/>
<sp:Header Name="Timestamp" Namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/>
</sp:SignedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
</wsp:Policy>
</sp:Wss11>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
:
나는 정책을 사용 WSDL에서 잭스 - WS 클라이언트를 구현하기 위해 노력하고는 정책이 보인다
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-policy</artifactId>
<version>3.2.1</version>
</dependency>
이러한 것들은 헤더를 제공하고 내가 이해하지 못하는 많은 것들을 자동으로 처리하지만 작동합니다. 클라이언트에 대한 내 설정은 simpel입니다 :
Map ctx = ((BindingProvider) webServicePortType).getRequestContext();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Properties props = new Properties();
try (InputStream resourceStream = loader.getResourceAsStream(signaturePropertyFilePath)) {
props.load(resourceStream);
} catch (IOException e) {
throw new RuntimeException(
"IOException: Unresolvable signature property filepath: " + signaturePropertyFilePath, e);
}
props.forEach((k, v) -> {
ctx.put(k.toString(), v);
});
ctx.put(SecurityConstants.CALLBACK_HANDLER, callBackHandler);
ctx.put(SecurityConstants.SIGNATURE_PROPERTIES, signaturePropertyFilePath);
이제 내 문제, 나는 그것이 작동 본, 그래서 나는 행복하게 웹 로직 12C에서 실행되는 웹 어플리케이션 내 클라이언트를 이동,하지만 지금은 일이 잘못 간다. CXF-RT-WS-policy의 좋은 자동 성격은 이제 사라지고 난 오류가 발생 헤더없이 비누 요청을 얻을 :
These policy alternatives can not be satisfied:
{http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702} UsernameToken이 : 수신 토큰이 토큰 포함 요구 사항과 일치하지 않는 {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702가 } AsymmetricBinding : 수신 요구 사항과 일치하지 않습니다 타임 스탬프 {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702} InitiatorToken {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702} X509Token의 : 수신 토큰이 토큰 포함 요구 사항과 일치하지 않는 {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702} IncludeTimestamp {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702} ProtectTokens {(210)} {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702} SignedParts을 OnlySignEntireHeadersAndBody : {http://www.w3.org/2003/05/soap-envelope} 바디
, 헤더의 결과
에 서명하지.운 좋게도 weblogics에서 cxf 클라이언트를 일반적으로 실행하는 데 문제가 없습니다. 웹 서비스에는 보안 요구 사항이 없습니다. 독립 실행 형 클라이언트에 스프링 또는 스프링 부트 스트랩이 포함되어 있지 않습니다. 아마도 cxf 자체가 스프링을 호출하지만 도움이되지 않습니다.
cxf 프레임 워크에서 가져온 "PolicyInterceptorProviderRegistryImpl"은 weblogic에서 실행할 때 작동을 멈 춥니 다. 컨테이너에서 실행할 때 다르게 작동하는 cxf bus-extensions.txt와 관련이 있다고 판단됩니다. weblogic의 webapplication에서는 Spring을 사용할 수 없습니다. 죄송합니다. 그러나 내 독립형 제품은 봄철없이 잘 작동합니다. 누구나 cxf 프레임 워크에서 도와주세요! :)
그렇다면 독립 실행 형이며 컨테이너에서 실행되는 이유는 무엇입니까? 누구든지 도와 줄 수 있습니까? 사전 :