protocolo productos framework advantages wso2 wso2esb esb

productos - protocolo wso2



Pasar nombre de usuario y contraseƱa a una API REST en WSO2 ESB (1)

Finalmente resolví. Es más fácil de lo que pensaba, simplemente Basic Auth header dentro de mi aplicación (cuando estoy llamando a mi API de ESB) con nombre de usuario y contraseña, y las credenciales están pasando a través de mi API al servicio externo.

Estoy usando una API REST en wso2 ESB para llamar a otro servicio con autenticación básica.

Este es mi código API:

<resource methods="POST" uri-template="/deleteZoneFromEnrolment/"> <inSequence> <property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat(''Basic '', base64Encode(''user:password''))" scope="transport"></property> <property name="DISABLE_CHUNKING" value="true" scope="axis2"></property> <payloadFactory media-type="xml"> <format> <enr:DeleteZoneFromEnrolment xmlns:enr="http://someURL/Enrolment.xsd"> <Enrolment>$1</Enrolment> <Zone>$2</Zone> </enr:DeleteZoneFromEnrolment> </format> <args> <arg evaluator="json" expression="$.enrolment"></arg> <arg evaluator="json" expression="$.zone"></arg> </args> </payloadFactory> <send> <endpoint key="dev_enrolmentEndpoint"></endpoint> </send> <log level="full"></log> </inSequence> <outSequence> <property name="messageType" value="application/json" scope="axis2" type="STRING"></property> <send></send> </outSequence> <faultSequence> <sequence key="esb_error_handling_response"></sequence> </faultSequence>

Llamo a esta API REST usando un POST json como este:

{ ''enrolment'':''whatever'', ''zone'':''1'' }

Si codigo el usuario y la contraseña, funciona bien. Pero voy un paso adelante. Necesito pasar esta Autorización Básica con un mensaje JSON que utilizo para llamar a la API REST en el ESB o configurar esta API para pasar la Autenticación a través de una llamada GET / POST.

Alguien sabe como hacerlo? Esto es lo que estoy intentando pero sin éxito:

En mi aplicación antes de llamar a mi API (POST http: // esbUrl: 8280 / api / deleteZoneFromEnrolment ), codigo en Base64 la cadena ''user: password'', el resultado es algo como esto: ''cHJhYmF0aDpwcmFiYXRo''. Cambio mi código API así:

<resource methods="POST" uri-template="/deleteZoneFromEnrolment/"> <inSequence> <property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat(''Basic '', json-eval($.user))" scope="transport"></property> <property name="DISABLE_CHUNKING" value="true" scope="axis2"></property> <payloadFactory media-type="xml"> <format> <enr:DeleteZoneFromEnrolment xmlns:enr="http://someURL/Enrolment.xsd"> <Enrolment>$1</Enrolment> <Zone>$2</Zone> </enr:DeleteZoneFromEnrolment> </format> <args> <arg evaluator="json" expression="$.enrolment"></arg> <arg evaluator="json" expression="$.zone"></arg> <arg evaluator="json" expression="$.user"></arg> </args> </payloadFactory> <send> <endpoint key="dev_enrolmentEndpoint"></endpoint> </send> <log level="full"></log> </inSequence> <outSequence> <property name="messageType" value="application/json" scope="axis2" type="STRING"></property> <send></send> </outSequence> <faultSequence> <sequence key="esb_error_handling_response"></sequence> </faultSequence>

Y el POST JSON:

{ ''enrolment'':''whatever'', ''zone'':''1'', ''user'':''cHJhYmF0aDpwcmFiYXRo'' }