Skip to content

Commit

Permalink
add validation
Browse files Browse the repository at this point in the history
  • Loading branch information
lapellaniz committed Apr 23, 2024
1 parent fda8a32 commit f88c3b4
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ public static class FeatureFlags
public static class Logging
{
public const string LogOlMessageToExternalStore = "LogOlMessageToExternalStore";
}
}
public static class Security
{
public const string ValidateHttpOlSourceHeader = "ValidateHttpOlSourceHeader";
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Threading.Tasks;
using System.Net;
using Microsoft.Azure.Functions.Worker.Http;
using System.Linq;

namespace Function.Domain.Helpers
{
Expand All @@ -19,5 +20,20 @@ public HttpResponseData CreateServerErrorHttpResponse(HttpRequestData req)

return response;
}

public HttpResponseData CreateUnauthorizedHttpResponse(HttpRequestData req)
{
var response = req.CreateResponse(HttpStatusCode.Forbidden);
return response;
}

public bool ValidateRequestHeaders(HttpRequestData req, string sourceHeaderExpectedValue)
{
if (req.Headers.TryGetValues("x-teladoc-udf-ol-source", out var values))
{
return values.Contains(sourceHeaderExpectedValue, System.StringComparer.OrdinalIgnoreCase);
}
return false;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ public interface IHttpHelper
{
public Task<HttpResponseData> CreateSuccessfulHttpResponse(HttpRequestData req, object data);
public HttpResponseData CreateServerErrorHttpResponse(HttpRequestData req);
public HttpResponseData CreateUnauthorizedHttpResponse(HttpRequestData req);
public bool ValidateRequestHeaders(HttpRequestData req, string sourceHeaderExpectedValue);
}
}
13 changes: 11 additions & 2 deletions function-app/adb-to-purview/src/Functions/OpenLineageIn.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public OpenLineageIn(
[Function("OpenLineageIn")]
public async Task<HttpResponseData> Run(
[HttpTrigger(
AuthorizationLevel.Function,
AuthorizationLevel.Anonymous,
"get",
"post",
Route = "v1/lineage"
Expand All @@ -63,15 +63,24 @@ public async Task<HttpResponseData> Run(
try
{
_logger.LogInformation($"OpenLineageIn: Processing request...");

// Validate request headers
if (!_httpHelper.ValidateRequestHeaders(req, _configuration["OlSourceHeaderExpectedValue"] ?? Guid.NewGuid().ToString()))
{
return _httpHelper.CreateUnauthorizedHttpResponse(req);
}

// send event data to EventHub
var events = new List<EventData>();

var strRequest = await req.ReadAsStringAsync();

// Validate body is not empty
if (string.IsNullOrEmpty(strRequest))
{
throw new Exception("OpenLineageIn: Request is null or empty.");
}

// Validate body is OpenLineage message
if (_olFilter.FilterOlMessage(strRequest))
{
_logger.LogInformation($"OpenLineageIn: Request passed validation.");
Expand Down

0 comments on commit f88c3b4

Please sign in to comment.