Pude publicar una solicitud de trabajo. La API de terceros nos hace enviar el token (que es básicamente un Guid) como un token portador. Azure parece hacer algún tipo de validación previa sobre esto. Cuando cambié el GUID con un verdadero token de portador generado aleatoriamente, funcionó.
Todavía me pregunto si hay una manera de deshabilitar este registro de Azure. El token de portador "malo" funciona para las solicitudes GET pero falla para las solicitudes POST/PUT.
Resumen de la aplicación Tenemos funciones de Azure (es decir, disparador de tiempo, orquestador, actividades) que buscan elementos en una tabla de cola local en SQL y luego la envían a una API de terceros a través de JSON.
La API de terceros requiere un encabezado de autorización con la solicitud POST.
Resumen técnico
información adicional
Qué funciona Todas las solicitudes GET. No hay problemas en absoluto.
Lo que no funciona con las solicitudes POST. Envié las solicitudes a un beeceptor para ver exactamente lo que se estaba recibiendo. Cuando se incluye el encabezado de autorización, la mayoría de los encabezados se eliminan (es decir, tipo de contenido, longitud del contenido) y el cuerpo de la solicitud está en blanco.
Si eliminé el encabezado de Autorización, todos los encabezados y el cuerpo se reciben como se esperaba.
Pregunta Solo puedo suponer en este punto que algún servicio de Azure, verificación previa al vuelo, política de seguridad está interceptando el encabezado de Autorización pensando que está destinado a "sí mismo", pero no tengo ni idea de qué podría ser. He estado en Google ahora durante días.
Versión simplificada del código
using var client = new HttpClient(); client.DefaultRequestHeaders.Clear(); // Request params are dynamic and a helper method builds the full request path var path = PathBuilder(queueItem.RequestParams, queueItem.Request.UrlPath); // This can change in code not shown if the request is sending files var contentType = "application/json"; client.BaseAddress = new Uri(queueItem.Request.Client.BaseApiUrl); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue { NoCache = true }; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", queueItem.Request.Client.AuthToken); // queueItem.Data is JSON HttpContent json = new StringContent(queueItem.Data, Encoding.UTF8, contentType); return await client.PostAsync(path, json);También...
Dado todo lo que ha intentado, podría ser una posibilidad remota, pero ¿ha intentado agregar el token como:
client.DefaultRequestHeaders.TryAddWithoutValidation(“Authorization”, “bearer token here…”);y luego verifique si el intento tuvo éxito o no?