2017-06-22 10 views
0

Jboss EAP 7を使用してコード・ファースト・ウェブ・サービスを作成しています。ユーザー名トークンの検証にWS-Securityを実装する必要があります。これはApache CXFポリシーを使用しています。契約初の視点ですべてを動かすことができるようになりました。そして、今、私がそれをコードファーストの観点として機能させるために必要なのは、生成されたwsdlにポリシーを含めることだけです。そのためには、@org .apache.cxf.annotations.Policyただし、ポリシーのコードスニペットはJbossから最後に生成されたwsdlに追加されません。ここApache CXF @Policy WSDLに含まれていない

は私のコードです:ここ

... 
    @WebService(serviceName = "ExampleService", portName = "ExampleService", 
     endpointInterface = "com.company.webservice.ExampleService", 
     targetNamespace = "https://service.company.com/company-ws/ExampleService") 
    @EndpointConfig(configFile = "WEB-INF/jaxws-endpoint-config.xml", 
     configName = "Custom WS-Security Endpoint") 
    @Policy(uri = "WEB-INF/company-username-token-policy.xml") 
    public class ExampleServiceImpl implements ExampleService { ... 

は私のJBoss-展開するstructure.xmlは、これらのエントリを持っているWEB-INF /会社名・トークンのpolicy.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<wsp:Policy wsu:Id="UsernameTokenPolicy" xmlns:wsp="http://www.w3.org/ns/ws-policy" 
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <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:WssUsernameToken11 /> 
         </wsp:Policy> 
        </sp:UsernameToken> 
       </wsp:Policy> 
      </sp:SupportingTokens> 
     </wsp:All> 
    </wsp:ExactlyOne> 
</wsp:Policy> 

です既に:

<module name="org.apache.ws.security" export="true" /> 
<module name="org.apache.cxf" export="true" /> 
<module name="org.apache.cxf.impl" export="true" /> 

ここでは何が欠けていますか?問題を考え出し

答えて

0

...

まず:あなたは、WEB-INFリソースフォルダにポリシーxmlファイルを配置する必要はありません。

第二:あなたは@Policyアノテーションにplacement = Policy.Placement.BINDINGを追加する必要があります...

@Policy(uri = "company-username-token-policy.xml", placement = Policy.Placement.BINDING) 
関連する問題