public override async Task Invoke(IOwinContext context) { var kernel = context.GetNinjectKernel(); var logger = kernel.Get <ILogger>(); var authenticationContext = kernel.Get <IAuthenticationContext>(); if (authenticationContext.Method == AuthenticationMethod.KitosToken) { var requestStart = DateTime.UtcNow; var route = context.Request.Path; var method = context.Request.Method; var queryParameters = GetQueryParameters(context.Request.Query); var userId = authenticationContext.UserId.GetValueOrDefault(INVALID_ID); logger.Information("Route: {route} Method: {method} QueryParameters: {queryParameters} UserID: {userID} RequestStartUTC: {requestStart}", route, method, queryParameters, userId, requestStart); try { await Next.Invoke(context); } finally { var requestEnd = DateTime.UtcNow; logger.Information("Route: {route} Method: {method} QueryParameters: {queryParameters} UserID: {userID} RequestEndUTC: {requestEnd}", route, method, queryParameters, userId, requestEnd); } } else { await Next.Invoke(context); } }
public override async Task Invoke(IOwinContext context) { var kernel = context.GetNinjectKernel(); var correlationId = Guid.NewGuid(); using (LogContext.PushProperty("CorrelationId", correlationId.ToString())) { await Next.Invoke(context); } }
public override async Task Invoke(IOwinContext context) { var kernel = context.GetNinjectKernel(); var logger = kernel.Get <ILogger>(); var authenticationContext = kernel.Get <IAuthenticationContext>(); if (authenticationContext.Method == AuthenticationMethod.KitosToken) { var query = context.Request.Query; var resultLimiter = ContainsResultLimit(query); switch (resultLimiter) { case PageSizer.Top: if (int.TryParse(query.Get("$top"), out var topPageSize)) { LogIfExcessivePageSize(topPageSize, PageSizer.Top, logger); break; } else { context.Response.StatusCode = 400; context.Response.Write($"The value of the \"$top\" parameter must be a number between 0 and {MaxPageSize}"); return; } case PageSizer.Take: if (int.TryParse(query.Get("take"), out var takePageSize)) { LogIfExcessivePageSize(takePageSize, PageSizer.Take, logger); break; } else { context.Response.StatusCode = 400; context.Response.Write($"The value of the \"take\" parameter must be a number between 0 and {MaxPageSize}"); return; } case PageSizer.None: default: break; } } await Next.Invoke(context); }
public override async Task Invoke(IOwinContext context) { var kernel = context.GetNinjectKernel(); var logger = kernel.Get <ILogger>(); var authenticationContext = kernel.Get <IAuthenticationContext>(); if (IsKitosTokenAuthenticated(authenticationContext) && IsIllegalMutationAttempt(context)) { logger.Warning("User with id: {userID} attempted to mutate resource: {url} by method {method}", authenticationContext.UserId, context.Request.Uri.ToString(), context.Request.Method); context.Response.StatusCode = 403; context.Response.Write("Det er ikke tilladt at skrive data via APIet"); } else { await Next.Invoke(context); } }
public override async Task Invoke(IOwinContext context) { var kernel = context.GetNinjectKernel(); var logger = kernel.Get <ILogger>(); var authenticationContext = kernel.Get <IAuthenticationContext>(); if (authenticationContext.Method == AuthenticationMethod.KitosToken && !authenticationContext.HasApiAccess) { logger.Warning("User with id: {userID} made an API call without having API access", authenticationContext.UserId); context.Response.StatusCode = 403; context.Response.Write("Du har ikke tilladelse til at kalde API endpoints"); } else { await Next.Invoke(context); } }