Apache CXF + Spring:単純な証明書認証

ドミトリー:

SpringでApache CXFの学習を始めました。まず、シンプルなクライアント/サーバーモデルを作成しました。ここを参照してください

今、私は単純な証明書認証を使用しようとしています。(サーバーとクライアントの)設定ファイルを変更したので:cxf-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

<jaxws:endpoint
    id="helloWorld"
    implementor="service.HelloWorldImpl"
    address="/HelloWorld">

    <jaxws:features>
        <bean class="org.apache.cxf.feature.LoggingFeature"/>
    </jaxws:features>
    <jaxws:inInterceptors>
       <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
       <ref bean="WSS4JInInterceptor"/>
    </jaxws:inInterceptors>
</jaxws:endpoint>

<bean id="WSS4JInInterceptor"  class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
    <constructor-arg>
        <map>
            <entry key="action" value="Signature"/>
            <entry key="passwordCallbackRef">
                <ref bean="passwordCallback"/>
            </entry>
            <entry key="signaturePropFile" value="server_sign.properties"/>
        </map>
    </constructor-arg>
</bean>
<bean id="passwordCallback" class="service.PasswordCallbackHandler" />

server_sign.properties

org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=keyStorePassword
org.apache.ws.security.crypto.merlin.file=publicstore.jks

cxf-client-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:jaxws="http://cxf.apache.org/jaxws"
 xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://cxf.apache.org/jaxws
    http://cxf.apache.org/schema/jaxws.xsd">

<bean id="client" class="service.HelloWorld" factory-bean="clientFactory" factory-method="create"/>

<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
    <property name="serviceClass" value="service.HelloWorld"/>
    <property name="address" value="http://localhost:8080/services/HelloWorld"/>
    <property name="outInterceptors">
        <list>
            <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
            <ref bean="WSS4JOutInterceptor"/>
        </list>
    </property>
</bean>

<bean id="WSS4JOutInterceptor" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
    <property name="properties">
        <map>
            <entry key="action" value="Signature"/>
            <entry key="user" value="ws-client" />
             <entry key="passwordCallbackRef">
                <ref bean="passwordCallback"/>
            </entry>
            <entry key="signaturePropFile" value="client_sign.properties"/>
        </map>
    </property>
</bean>

<bean id="passwordCallback" class="client.PasswordCallbackHandler" />

クライアントは完全に機能しています。それはPasswordCallbackHandlerを使用します。問題は、サーバーがPasswordCallbackHandlerを使用していないように見えることです。サーバーをデバッグモードで実行しましたが、このクラスには行きません。誰か、説明してください、何が悪いのですか?

前もって感謝します。

進捗:

  1. サーバーのキーストアにない証明書をユーザーから提供しようとすると、エラーが発生します(「署名用にユーザーws-client1の証明書が見つかりませんでした」)。

  2. リソースから:「上記のjbossws-cxf.xmlファイルで確認できるように、キーストアパスワードコールバックハンドラーも構成されています。プロパティファイルにはキーストアのパスワードがありますが、このコールバックハンドラーは各キーのパスワードを設定するために使用されます(各キーがストアにインポートされたときに使用されたものと一致する必要があります)。」

ドミトリー:

さて、私が気付いたwss4jのソースコードを調査したところ、Signatureアクション(のみ)の場合、WSS4JInInterceptorにはコールバックハンドラがないことがわかりました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Java Apache Cxf HTTP認証

分類Dev

Apache CXF認証+ Springセキュリティ

分類Dev

Apache CXF + Spring:単純なクライアントの生成

分類Dev

Apache CXF + Spring Java構成(XMLなし)

分類Dev

java-Apache CXFは、署名証明書をBinarySecurityTokenとしてWS-securityヘッダーに追加します

分類Dev

Apache CXF:基本認証でJAX-RS Webサービスを保護する方法

分類Dev

CXF + wsdl2java +認証

分類Dev

Spring Boot:残りのWS用の@RestControllerを使用したApache CXF SOAP

分類Dev

Apache CXF-JMS3.0およびSpring構成

分類Dev

Renaming an XML/SOAP tag using Apache CXF

分類Dev

Change WSDL xsd:complexType name with Apache CXF

分類Dev

Apache CXF and .NET WCF webservice interoperability

分類Dev

NoClassDefFoundError org / apache / cxf / jaxrs / client / WebClient

分類Dev

org / apache / cxf / jaxb / JAXBToStringStyleのNoClassDefFoundError

分類Dev

Apache リバース プロキシを介した Spring Boot 証明書の認証

分類Dev

RESTful WebサービスのためのSpring BootとApache CXFの比較

分類Dev

Spring FrameworkおよびApache CXFでのカスタムJSONシリアル化

分類Dev

Apache CXF-資格情報がWSS4JOutInterceptorから送信されない?

分類Dev

「Apache CXF」でCXFは何の略ですか?

分類Dev

CXF3.0.7のクラスorg.apache.cxf.jaxrs.client.WebClient

分類Dev

Azure LinuxVMのApacheのSSL証明書

分類Dev

Apache CentOS の COMODO SSL 証明書

分類Dev

SSL通信でのApache CXF例外:SocketTimeOut

分類Dev

ClassNotFoundException(Apache CXF Webサービス)

分類Dev

Object binding for RESTful service using apache-cxf

分類Dev

Apache CXFは、xsd:choiceで選択されていないオプションに対してnil要素を生成し、スキーマ検証に失敗します

分類Dev

Apache shiro + kerberos認証

分類Dev

さまざまなSSLクライアント認証証明書を使用してApache HttpClientのプールを作成する方法

分類Dev

Spring Boot + Apache CXF。注釈のみでエンドポイントを公開する

Related 関連記事

  1. 1

    Java Apache Cxf HTTP認証

  2. 2

    Apache CXF認証+ Springセキュリティ

  3. 3

    Apache CXF + Spring:単純なクライアントの生成

  4. 4

    Apache CXF + Spring Java構成(XMLなし)

  5. 5

    java-Apache CXFは、署名証明書をBinarySecurityTokenとしてWS-securityヘッダーに追加します

  6. 6

    Apache CXF:基本認証でJAX-RS Webサービスを保護する方法

  7. 7

    CXF + wsdl2java +認証

  8. 8

    Spring Boot:残りのWS用の@RestControllerを使用したApache CXF SOAP

  9. 9

    Apache CXF-JMS3.0およびSpring構成

  10. 10

    Renaming an XML/SOAP tag using Apache CXF

  11. 11

    Change WSDL xsd:complexType name with Apache CXF

  12. 12

    Apache CXF and .NET WCF webservice interoperability

  13. 13

    NoClassDefFoundError org / apache / cxf / jaxrs / client / WebClient

  14. 14

    org / apache / cxf / jaxb / JAXBToStringStyleのNoClassDefFoundError

  15. 15

    Apache リバース プロキシを介した Spring Boot 証明書の認証

  16. 16

    RESTful WebサービスのためのSpring BootとApache CXFの比較

  17. 17

    Spring FrameworkおよびApache CXFでのカスタムJSONシリアル化

  18. 18

    Apache CXF-資格情報がWSS4JOutInterceptorから送信されない?

  19. 19

    「Apache CXF」でCXFは何の略ですか?

  20. 20

    CXF3.0.7のクラスorg.apache.cxf.jaxrs.client.WebClient

  21. 21

    Azure LinuxVMのApacheのSSL証明書

  22. 22

    Apache CentOS の COMODO SSL 証明書

  23. 23

    SSL通信でのApache CXF例外:SocketTimeOut

  24. 24

    ClassNotFoundException(Apache CXF Webサービス)

  25. 25

    Object binding for RESTful service using apache-cxf

  26. 26

    Apache CXFは、xsd:choiceで選択されていないオプションに対してnil要素を生成し、スキーマ検証に失敗します

  27. 27

    Apache shiro + kerberos認証

  28. 28

    さまざまなSSLクライアント認証証明書を使用してApache HttpClientのプールを作成する方法

  29. 29

    Spring Boot + Apache CXF。注釈のみでエンドポイントを公開する

ホットタグ

アーカイブ