GlassFish 3.1 サーバーで実行されている SOAP Web サービスを呼び出す Android アプリを開発しています。NetBeans 7 を使用して Web サービスを開発しました。アプリケーションでは、kSOAP2 ライブラリを使用してサーバーに接続しています。
接続は SSL で保護されており、証明書に問題が発生した後、接続を確立できたので、SOAP エンベロープの正しいセキュリティ ヘッダーを設定する必要があります。そうしないと、サーバーで WssSoapFaultException: Invalid Security Header 例外が発生します。問題は、セキュリティ ヘッダーがどのように見えるべきかわからないことです。
この投稿から、ヘッダーを一般的に設定する方法を知っていますksoap2 を使用して SOAP ヘッダーを設定する方法
GlassFish Administration Tool からヘッダーがどのように見えるかについての情報を取得しようとしましたが、何も見つかりませんでした。
では、Web サービス ファイルのどこでその情報を見つけることができるのでしょうか?それとも、生成された WSDL ファイルから直接取得できるのでしょうか?
これは、私の WDSL ファイルがどのように見えるかです。
編集: NetBeans の Web サービス属性 (ws を右クリック -> Web サービス属性の編集) で、セキュア サービスの下で相互証明書セキュリティを選択したことに気付きました。Web サービスを作成したときにトランスポート セキュリティ (SSL) をチェックしたことは確かでした。とにかく、Transport Security に戻しました。これで、WSDL ファイルははるかに軽くなりました。しかし、セキュリティ ヘッダーはまだ必要なので、以前と同じ問題があります。
<!--
Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.2.0-1 (tags/2.2.0u1-7139; 2012-06-02T10:55:19+0000) JAXWS-RI/2.2.6-2 JAXWS/2.2 svn-revision#unknown.
-->
<!--
Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.2.0-1 (tags/2.2.0u1-7139; 2012-06-02T10:55:19+0000) JAXWS-RI/2.2.6-2 JAXWS/2.2 svn-revision#unknown.
-->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://stawebservice.staws.stapf.de/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://stawebservice.staws.stapf.de/" name="stawebservice">
<wsp:Policy xmlns:wsapw3c="http://www.w3.org/2006/05/addressing/wsdl" wsu:Id="stawebservicePortBinding_Wsaw_Addressing_Policy-stawebservicePortBinding_WSAM_Addressing_Policy-stawebservicePortBinding_WSAM_Addressing_Policy">
<wsapw3c:UsingAddressing wsp:Optional="true"/>
<wsam:Addressing wsp:Optional="true">
<wsp:Policy/>
</wsam:Addressing>
</wsp:Policy>
<wsp:Policy xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" wsu:Id="stawebservicePortBindingPolicy">
<sp:TransportBinding>
<wsp:Policy>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:IncludeTimestamp/>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
</wsp:Policy>
</sp:TransportBinding>
<sp:Wss10/>
<wsam:Addressing/>
</wsp:Policy>
<types>
<xsd:schema>
<xsd:import namespace="http://stawebservice.staws.stapf.de/" schemaLocation="https://192.168.1.214:8181/STAwebservice_ssl/stawebservice?xsd=1"/>
</xsd:schema>
</types>
<message name="getPublicKey">
<part name="parameters" element="tns:getPublicKey"/>
</message>
<message name="getPublicKeyResponse">
<part name="parameters" element="tns:getPublicKeyResponse"/>
</message>
<message name="login">
<part name="parameters" element="tns:login"/>
</message>
<message name="loginResponse">
<part name="parameters" element="tns:loginResponse"/>
</message>
<message name="getOTP_HTTPS">
<part name="parameters" element="tns:getOTP_HTTPS"/>
</message>
<message name="getOTP_HTTPSResponse">
<part name="parameters" element="tns:getOTP_HTTPSResponse"/>
</message>
<message name="getOTP_SMS">
<part name="parameters" element="tns:getOTP_SMS"/>
</message>
<message name="getOTP_SMSResponse">
<part name="parameters" element="tns:getOTP_SMSResponse"/>
</message>
<message name="confirmOTP">
<part name="parameters" element="tns:confirmOTP"/>
</message>
<message name="confirmOTPResponse">
<part name="parameters" element="tns:confirmOTPResponse"/>
</message>
<portType name="stawebservice">
<operation name="getPublicKey">
<input wsaw:Action="http://stawebservice.staws.stapf.de/stawebservice/getPublicKeyRequest" wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/getPublicKeyRequest" message="tns:getPublicKey"/>
<output wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/getPublicKeyResponse" message="tns:getPublicKeyResponse"/>
</operation>
<operation name="login">
<input wsaw:Action="http://stawebservice.staws.stapf.de/stawebservice/loginRequest" wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/loginRequest" message="tns:login"/>
<output wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/loginResponse" message="tns:loginResponse"/>
</operation>
<operation name="getOTP_HTTPS">
<input wsaw:Action="http://stawebservice.staws.stapf.de/stawebservice/getOTP_HTTPSRequest" wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/getOTP_HTTPSRequest" message="tns:getOTP_HTTPS"/>
<output wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/getOTP_HTTPSResponse" message="tns:getOTP_HTTPSResponse"/>
</operation>
<operation name="getOTP_SMS">
<input wsaw:Action="http://stawebservice.staws.stapf.de/stawebservice/getOTP_SMSRequest" wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/getOTP_SMSRequest" message="tns:getOTP_SMS"/>
<output wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/getOTP_SMSResponse" message="tns:getOTP_SMSResponse"/>
</operation>
<operation name="confirmOTP">
<input wsaw:Action="http://stawebservice.staws.stapf.de/stawebservice/confirmOTPRequest" wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/confirmOTPRequest" message="tns:confirmOTP"/>
<output wsam:Action="http://stawebservice.staws.stapf.de/stawebservice/confirmOTPResponse" message="tns:confirmOTPResponse"/>
</operation>
</portType>
<binding name="stawebservicePortBinding" type="tns:stawebservice">
<wsaw:UsingAddressing/>
<wsp:PolicyReference URI="#stawebservicePortBinding_Wsaw_Addressing_Policy-stawebservicePortBinding_WSAM_Addressing_Policy-stawebservicePortBinding_WSAM_Addressing_Policy"/>
<wsp:PolicyReference URI="#stawebservicePortBindingPolicy"/>
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="getPublicKey">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="login">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="getOTP_HTTPS">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="getOTP_SMS">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="confirmOTP">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="stawebservice">
<port name="stawebservicePort" binding="tns:stawebservicePortBinding">
<soap:address location="https://192.168.1.214:8181/STAwebservice_ssl/stawebservice"/>
</port>
</service>
</definitions>