Skip to content

[bug] OpenTelemetry.Instrumentation.AspNetCore does not respect ForwardedHeaders #3098

@jeremy-morren

Description

@jeremy-morren

Package

OpenTelemetry.Extensions.Hosting

Package Version

Package Name Version
OpenTelemetry.Instrumentation.AspNetCore 1.12.0
OpenTelemetry.Extensions.Hosting 1.12.0
OpenTelemetry.Exporter.Console 1.12.0
OpenTelemetry 1.12.0

Runtime Version

net8.0

Description

Using app.UseForwardedHeaders(new ForwardedHeadersOptions() { ForwardedHeaders = ForwardedHeaders.XForwardedProto }); works with ASP.NET Core, but the exported telemetry still has url.scheme as http.

Steps to Reproduce

Minimal api:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOpenTelemetry()
    .WithTracing(b => b
        .AddAspNetCoreInstrumentation()
        .AddConsoleExporter());

var app = builder.Build();

app.UseForwardedHeaders(new ForwardedHeadersOptions() { ForwardedHeaders = ForwardedHeaders.XForwardedProto });
app.MapGet("/", context => Results.Ok(context.Request.GetDisplayUrl()).ExecuteAsync(context));
app.Run();

curl -H X-Forwarded-Proto:https 'http://localhost:5000/' returns https://localhost:5000/.

Open telemetry export:

Activity.Tags:
    server.address: localhost
    server.port: 5074
    http.request.method: GET
    url.scheme: http
    url.path: /
    network.protocol.version: 1.1
    user_agent.original: curl/8.14.1
    http.route: /
    http.response.status_code: 200
Instrumentation scope (ActivitySource):
    Name: Microsoft.AspNetCore
Resource associated with Activity:
    telemetry.sdk.name: opentelemetry
    telemetry.sdk.language: dotnet
    telemetry.sdk.version: 1.12.0

Expected Result

Activity.Tags:
    url.scheme: https

Actual Result

Activity.Tags:
    url.scheme: http

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcomp:instrumentation.aspnetcoreThings related to OpenTelemetry.Instrumentation.AspNetCore

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions