Api cookie JSESSIONID httponly

Hola. 

Estoy consumiento desde una app en react la api de bonita estudio para loguearme usando el metodo http://localhost:8080/bonita/loginservice  como se menciona en la documentacion ofical

Obtengo las 4 cookies de respuesta de las cuales no puedo leer la JSESSIONID  ya que esta marcada por seguriadad como httponly y aqui es donde surge el problema

Es necesario para consumir el resto de los metodos de la api esa cookie JSESSIONID  ya que sino la envio en el encabezado de metodos como /bonita/API/bpm/case/ me devuelve un 401. 

Las pruebas en postman salen ok pero para react o angular no tengo manera de leer esa cookie

Alguien de la comunida solucono esto alguna vez???? ...

Gracias por su ayuda. Saludos

 

Hola weglineduardo 

Lo que necesitas enviar es el X-Bonita-API-Token

que puedes también recuperar llamando /API/system/session/unusedId

Más información: https://documentation.bonitasoft.com/bonita/2022.2/security/csrf-security#_how_to_secure_the_x_bonita_api_token_cookie_https_only

Espero que esto te ayude.

Saludos

Hola de nuevo weglineduardo

Creo que entiendo cuál es el problema.

La aplicación desde la que estás llamando al REST API está en un dominio diferente de donde está Bonita. ¿Mi suposición es correcta? Si es así, entonces, necesitas habilitar el CORS (Cross-Origin Resource Sharing) en el Tomcat de Bonita. Sino en efecto como mencionas, no puedes leer el JSESSIONID ya que por defecto utilizamos "lax" (Web Browsers policy regarding cookies)

Una solución sería: 

  1. Configurar el servidor Bonita para usar HTTPS: https://documentation.bonitasoft.com/bonita/2022.2/identity/ssl
  2. Configurar el tomcat para utilizar "none" en lugar de "lax". Esto se hace en el archivo  conf/context.xml cambiando el valor de sameSiteCookies: https://documentation.bonitasoft.com/bonita/2022.1/security/enable-cors-in-tomcat-bundle

De esta forma, las cookies de Bonita podran ser enviadas en la llamada aunque no hayan sido generadas en el mismo dominio.

Espero que esto te ayude.

Saludos

En mi frontend desarrollado en react, uso axios para consumir la api rest de bonita y me sirvio usar esta configuracion  por defaults

    axios.defaults.baseURL = "http://localhost:8080";

    axios.defaults.headers.post["Content-Type"] =
      "application/json;charset=utf-8";
    axios.defaults.headers.post["Access-Control-Allow-Origin"] = "*";
    axios.defaults.withCredentials = true;

y habilitar los cors para una url, en mi caso http://localhost:4200.
NO me sirivo en los cors usar "*"

Saludos y gracias

 

Hola  thalia. 

Gracias por tu comentario.

Con esta llamada /API/system/session/unusedId tengo esto

{

    "copyright": "Bonitasoft © 2022",

    "is_guest_user": "false",

    "branding_version": "2022.1",

    "branding_version_with_date": "2022.1-u0",

    "user_id": "4",

    "user_name": "walter.bates",

    "session_id": "7599666742002471192",

    "conf": "[]",

    "is_technical_user": "false",

    "version": "7.14.0"

}

NO veo el X-Bonita-API-Token en esa respuesta

Yo he probado enviar SOLO el  X-Bonita-API-Token para cosumir por ejemplo /API/bpm/case/2001 usando la herramienta https://www.postman.com/ y me devuelve un 401 de no autorizado. Solo si envio en el encabezado del la peticion el X-Bonita-API-Token y el JSESSIONID  me devuelvo un 200 con los datos del caso

¿Vos tuviste exito consumir la api de bonita ?

¿algunas lineas de codigo de ejemplo tenes ?

He probado bastante sin resultado

Saludos

 

solved, thanks to all

¡Qué bueno!

Y al final, ¿qué es lo que resolvió el problema?

Hola thalia.cruz. Estas entendiendo bien el problema que tengo. Hice todo lo que vos sugeris y otras personas también y sigo con problemas.de cors. Hace unas hs pude consumir la api rest de bonita estudio usando la librería fetch y noe dio el error de cors. Pero si uso la librería axios , allí me dar.error de cors .

Gracias por tu ayuda

Hola

Honestamente no he usado axios pero si de la misma aplicación puedes hacer la llamada usando fetch, eso significa que no se trata de un problema ligado al CORS. Mi recomendación sería checar si lo necesario está siendo enviado con axios: X-Bonita-API-Token y JSESSIONID

Saludos

Estoy viendo que has avanzado en el hilo en inglés: https://community.bonitasoft.com/node/37910#node-37919

Haznos saber si has encontrado la solución a tu problema, por favor.

¡Gracias!