Cómo integrar SOLMAN con mi API de descanso?

Estoy trabajando en un proyecto que requiere que SAP Solution Manager (SOLMAN) se integre con Azure Devops Rest API.

Funcionalidad:

  1. Cada vez que se crea un paquete de trabajo en SOLMAN, quiero tomar el JSON generado y crear una característica en Azure Devops.
  2. Una vez que la Característica se crea en Azure Devops, quiero volver a id de la Característica como EXTERNAL_ID a SOLMAN.

He creado una API y la deploré a PCF. Cuando estoy golpeando el punto final api, el artículo de trabajo se crea en Azure devops.

Pero cuando creo un RFC dando los detalles sobre host y url objetivo, estoy recibiendo un error como este (en SAP cosy, ABAP depurador o algo así):

Una solicitud potencialmente peligrosa. El valor de la ruta fue detectado por el cliente (:). "Nombre tipo":"Sistem.Web.HtpException

En los registros PCF, puedo ver este error (en los registros PCF):

Microsoft.AspNetCore.HtpsPolicy.HtpsRedirectionMiddleware Failed to determine the https port for redirect.

Parece que estoy haciendo algo mal. Mi API de reposo no tiene un Mecanismo Auth - Creo que este podría ser el enlace perdido. O puede ser que tenga que usar un puerto específico para HTTPS. Estoy atrapado aquí.

¿Puede alguien ayudarme o compartir experiencia sobre esto?

Pregunta hecha hace 3 años, 5 meses, 0 días - Por algorithmadept


3 Respuestas:

  • Logré finalmente integrar SAP Solution Manager con Azure Devops. Desde Tengo la solución y la integración está funcionando, estoy escribiendo esta respuesta.

    Cuando miro hacia atrás la pregunta que estoy respondiendo ahora, parece que no expliqué correctamente mi escenario y hice una pregunta técnica. Voy a explicar correctamente lo que estaba tratando de hacer en la parte posterior de esta respuesta, pero por ese problema particular:

    Una solicitud potencialmente peligrosa. El valor de la ruta fue detectado por el cliente (:). "Nombre tipo":"Sistem.Web.HtpException

    Problema: Estaba tratando de llamar a SOLMAN API externa de mi API Web .NET CORE 3.1, al llamar al SOLMAN api estaba recibiendo el error mencionado.

    Causa : SOLMAN API espera cualquier herramienta o servicio externo(api) a :

    • Tener una autenticación básica en su lugar
    • Communicate over HTTPS rather than HTTP

    Solución:

    La solución de este problema tiene dos partes -

    1. Añadiendo el nombre de usuario y la contraseña en el encabezado de autenticación con la solicitud.

    Idealmente tendrá algún tipo de esquema de autenticación para su API. Si no, entonces necesitarías uno. Usted tendrá que añadir campo de Autorización en encabezado con el nombre de usuario y contraseña. De esta manera, no obtendrá ningún error de autenticación como 401 o 403.

    2. Compruebe si su API se está comunicando sobre HTTPS.

    Escribí mi API en .NET Core 3.1 y en . NET Core podemos utilizar HTTPSRedirection Middleware para asegurar que la API se comunique sobre HTTPS. Si viene alguna solicitud HTTP, se redirige a HTTPS. Así consigues la comunicación HTTPS.

    En mi caso desplegué mi API al servidor cloud, que ya estaba proporcionando HTTPS por defecto y también añadí el HTTPSRedirection Middleware en mi API. Pero empecé a cometer el error:

    Una solicitud potencialmente peligrosa. Se detectó el valor de la trayectoria cliente (:).", "typeName":"System.Web.HtpException

    Así que... Retirada el middleware y empezó a funcionar.

    Ahora, que he sacado eso del camino, puedo explicar más sobre lo que estaba tratando de hacer. Quería sincronizar artículos de trabajo/ Paquetes de trabajo creados en SAP Solution Manager con Azure Devops backlog/board. A continuación se indicaron los requisitos:

    • Cada vez que se crea un paquete de trabajo en SAP Solution Manager, se debe crear una característica en Azure Devops.
    • Cada vez que se crea un artículo de trabajo en SAP Solution Manager, se debe crear una historia de usuario en Azure Devops.
    • Cada vez que un artículo de trabajo / paquete de trabajo se actualiza en SAP Solution Manager, la correspondiente función / historia de usuario debe ser actualizada.
    • Cada vez que el estado se cambia en Azure Devops de cualquier Feature/User Story, ese estado debe ser actualizado en el correspondiente Work Item/ Work Package en SAP Solution Manager.

    Para este requisito, he creado una API web que funciona en medio de estas dos herramientas (Azure Devops y Sap Solution Manager) y establecer una conexión entre estas dos. Esta API realiza tareas siguientes:

    • Toma JSON payload recieved from Sap Solution Manager using RFC and convert that response to appropriate response required by Azure Devops.
    • Crear / Actualizar / Eliminar elementos de trabajo en Azure Devops
    • Toma la respuesta de JSON recibida de Azure Devops y convertir eso a la respuesta adecuada requerida por Sap Solution Manager.

    Por lo tanto, esta API actúa como un conector para estas dos herramientas. Uno de los comentarios sobre la pregunta de @Jeff señaló también para un comercial fuera del producto de la plataforma, que podría ser una buena alternativa para este problema si usted lo tiene. Pero no sé cómo funciona desde entonces para que procese un nuevo Software para esto no era posible.

    Respondida el Dec 16, 2020 a las 10:58 - por debugdragon

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando parece estar relacionado con la configuración de seguridad en tu API de descanso y la comunicación con SOLMAN a través de un RFC. Aquí hay algunas sugerencias para solucionar este problema:

    • Habilitar HTTPS: Asegúrate de que tu API de descanso esté configurada para utilizar HTTPS en lugar de HTTP. Esto es importante para garantizar una comunicación segura entre SOLMAN y tu API. Puedes configurar un puerto específico para HTTPS en tu servidor de aplicaciones.
    • Configurar Mecanismo de Autenticación: Aunque mencionas que tu API de descanso no tiene un mecanismo de autenticación, es recomendable implementar algún tipo de autenticación (como tokens de acceso) para garantizar que solo usuarios autorizados puedan acceder y utilizar tu API.
    • Revisar los Logs de PCF y SAP: Revisa detenidamente los logs generados en PCF y SAP para obtener más información sobre el error. Pueden darte pistas sobre qué está causando el problema específico y cómo solucionarlo.
    • Revisar la Configuración de Redirección: El mensaje de error "Failed to determine the https port for redirect" podría indicar un problema de configuración de redirección en tu API. Verifica la configuración de redirección en tu API y asegúrate de que esté correctamente configurada.
    • Consultar con un Especialista: Si continúas experimentando problemas, considera consultar con un especialista en integraciones de SAP o en el desarrollo de APIs de descanso. Ellos podrían ayudarte a identificar y solucionar el problema de manera más efectiva.

    Espero que estas sugerencias te sean útiles para resolver el problema que estás enfrentando en la integración entre SOLMAN y tu API de descanso. ¡Buena suerte!

    Respondida el Dec 17, 2020 a las 11:00 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Integración de SOLMAN con API REST de Azure DevOps

    Funcionalidad:

    • Crear una característica en Azure DevOps cuando se crea un paquete de trabajo en SOLMAN.
    • Actualizar SOLMAN con el ID de la característica creada en Azure DevOps.

    Posibles problemas:

    Falta de mecanismo de autenticación en la API REST. Uso de un puerto no seguro para HTTPS.

    Solución:

    1. Añadir un mecanismo de autenticación a la API REST:

    Implementa la autenticación OAuth 2.0 o JWT (JSON Web Token) en tu API. Configura Azure DevOps para utilizar el mecanismo de autenticación elegido.

    2. Utilizar un puerto seguro para HTTPS:

    Utiliza un puerto seguro (HTTPS) para tu API REST. Configura un certificado SSL válido y habilita HTTPS en tu entorno de PCF.

    3. Depuración del error "Una solicitud potencialmente peligrosa":

    Verifica que el nombre del host y la URL de destino en tu RFC de SAP sean correctos. Comprueba que tu API REST está escuchando en el puerto HTTPS correcto. Utiliza herramientas de depuración como Chrome DevTools o Fiddler para inspeccionar las solicitudes HTTP y los encabezados de respuesta.

    Otros consejos:

    Utiliza un middleware para redirigir las solicitudes HTTP a HTTPS si es necesario. Considera utilizar un proxy inverso como Nginx o Apache para administrar las solicitudes de API. Sigue las mejores prácticas de seguridad al implementar y configurar tu API REST.

    Pasos adicionales:

    • Implementa la lógica en tu API REST para crear la característica en Azure DevOps y actualizar SOLMAN con el ID de la característica.
    • Configura un mecanismo de mensajería o integración de eventos para que tu API REST reciba notificaciones cuando se creen paquetes de trabajo en SOLMAN.
    3. Prueba exhaustivamente la integración para asegurarte de que funciona como se espera.

    Respondida el Dec 17, 2020 a las 11:07 - por Gemini

    Votos positivos: 0 | Votos negativos: 0