2011-11-18 41 views
6

He creado un servicio web en php usando SOAPServer. Espera ver un SoapHeaderUsernameToken con elementos de nombre de usuario y contraseña. Todo realmente funciona bien cuando incluyo este encabezado en la solicitud. Simplemente al definir un método en la clase de manejador de Soap llamado "UsernameToken", se llama a este método y se le pasa stdClass Obj. Luego puedo validar usuario por $Obj->username y $Obj->password.¿Cómo exigir el encabezado de soap de autenticación en WSDL?

Lo que no sé es qué agregar al archivo WSDL para definir primero este encabezado UsernameToken y segundo cómo indicar en WSDL que es necesario?

He leído en algún lado que el nuevo estándar SOAP desaprobaba la noción de encabezado "requerido".

¿Algún consejo sobre cómo indicar al menos mi wsdl esa solicitud debe incluir este encabezado?

+1

¿Puede agregar el enlace a donde ha leído que el nuevo estándar SOAP ha dejado de lado la noción del encabezado "requerido"? – hakre

+1

¿Podría mostrar su WSDL actual? – jap1968

Respuesta

3

Aquí es un ejemplo de un WSDL especifica la entrada: https://ws1.webservices.nl/soap_doclit?wsdl

<binding name="Webservices.nlBinding" type="tns:Webservices.nlPortType"> 
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
<operation name="login"> 
<soap:operation soapAction="https://ws1.webservices.nl/soap_doclit.php/login" style="document"/> 
<input> 
<soap:body use="literal"/> 
<soap:header message="tns:Headers" part="HeaderLogin" use="literal"/> 
<soap:header message="tns:Headers" part="HeaderAuthenticate" use="literal"/> 
</input> 
+2

su respuesta en realidad no respondió la siguiente pregunta: "¿cómo indicar en WSDL que se requiere?" incluso es un punto de partida de tarifas después de todo. –

1

Respuesta larga. Ver la publicación this.

En el cliente puede usar el atributo mustUnderstand para indicar si una entrada de encabezado es obligatoria u opcional para que el destinatario procese. Si el servidor no puede o no quiere procesar un encabezado obligatorio, debe lanzar una falla SOAP al cliente.

Cuestiones relacionadas