0

UsernameToken Timestamp機能を備えたWSS4Jを使用して、Apache CXF(2.7.11)でWebサービス(トップダウンベース)を構築しました。SOAP UI で同じことをテストすると、サーバーとクライアントのコードは正常に動作するようです。

ただし、WS Security ヘッダーの IST (インド標準時) タイムゾーンでデータを送信するクライアント コードがあります。そのため、クライアントはエラーThe message has expired (WSSecurityEngine: Invalid timestamp The security semantics of the message have expired)がスローされていることを受け取ります。調査の結果、WSS4J で使用されているタイムゾーンが UTC であることがわかりました。WSS4JInterceptor で timestampStrict を false にしても機能しませんでした。どんな助けでも大歓迎です。

<jaxws:inInterceptors>                  
     <bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
     <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
        <property name="properties">
              <map>
                     <entry key="action" value="UsernameToken Timestamp" />
                     <entry key="timestampStrict" value="false"/>
                     <entry key="user" value="test_user" />
                     <entry key="passwordType" value="PasswordText" />
                     <entry>
                            <key>
                                   <value>passwordCallbackRef</value>
                            </key>
                            <ref bean="passwordCallback" />
                     </entry>
              </map>
        </property>
     </bean>
</jaxws:inInterceptors>
4

1 に答える 1

1

SOAP メッセージ セキュリティ プロファイルによると、UTC 時間以外の時間にタイムスタンプを送信することは無効です: 「すべての参照は UTC 時間でなければなりません。」

コルム。

于 2014-07-14T10:04:48.587 に答える