.net-coreasp.net-core-5.0openiddict

Openiddict with dotnet core 5 giving the errors as "this server only accepts HTTPS requests."


I am trying to use the oidc-client with oppeniddict in the angular application but there is the error with .well-known/openid-configuration.

Error says:

GET http://localhost:2987/.well-known/openid-configuration 400 (Bad Request)

I have the openiddict implementation in the dot-net core 5 application.

Then I grab the URL http://localhost:2987/.well-known/openid-configuration and browse it in the browser, I am getting the error:

{
  "error": "invalid_request",
  "error_description": "This server only accepts HTTPS requests.",
  "error_uri": "https://documentation.openiddict.com/errors/ID2083"
}

I have also disabled the SSL from web server settings as shown in the figure:

enter image description here

My startup ConfigureServices looks like this:

public void ConfigureServices(IServiceCollection services)
{

    services.AddDbContext<ApplicationDbContext>(options =>
    {
        options.UseSqlServer(Configuration["ConnectionString"], sqlServerOptionsAction: sqlOptions =>
        {
            sqlOptions.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name);
        });

        options.UseOpenIddict();
    });

    services.AddIdentity<ApplicationUser, IdentityRole>()
       .AddEntityFrameworkStores<ApplicationDbContext>()
       .AddDefaultTokenProviders();



    services.Configure<IdentityOptions>(options =>
    {
        options.ClaimsIdentity.UserNameClaimType = Claims.Name;
        options.ClaimsIdentity.UserIdClaimType = Claims.Subject;
        options.ClaimsIdentity.RoleClaimType = Claims.Role;
    });

    services.AddOpenIddict()


        .AddCore(options =>
        {
            options.UseEntityFrameworkCore()
                   .UseDbContext<ApplicationDbContext>();
        }).AddServer(options =>
       {
           options.SetAuthorizationEndpointUris("/connect/authorize")
                  .SetLogoutEndpointUris("/connect/logout")
                  .SetIntrospectionEndpointUris("/connect/introspect")
                  .SetUserinfoEndpointUris("/connect/userinfo");
          

           options.RegisterScopes(Scopes.Email, Scopes.Profile, Scopes.Roles);
           options.AllowImplicitFlow();

           options.AddEncryptionKey(new SymmetricSecurityKey(
                Convert.FromBase64String("DRjd/GnduI3Efzen9V9BvbNUfc/VKgXltV7Kbk9sMkY=")));


           options.AddDevelopmentSigningCertificate();
          

           options.UseAspNetCore()
                  .EnableAuthorizationEndpointPassthrough()
                  .EnableLogoutEndpointPassthrough()
                  .EnableUserinfoEndpointPassthrough()
                  .EnableStatusCodePagesIntegration();
       }).AddValidation(options =>
       {
           // Import the configuration from the local OpenIddict server instance.
           options.UseLocalServer();

           // Register the ASP.NET Core host.
           options.UseAspNetCore();

           
       });

    services.AddCors(options => options.AddPolicy("ApiCorsPolicy", builder =>
    {
        builder.WithOrigins("http://localhost:4200").AllowAnyMethod().AllowAnyHeader();
    }));
    services.AddControllersWithViews();
}

Configure:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseStatusCodePagesWithReExecute("/error");
    app.UseRouting();
    app.UseCors("ApiCorsPolicy");

    app.UseAuthentication();
    app.UseAuthorization();
    app.UseEndpoints(options =>
    {
        options.MapControllers();
        options.MapDefaultControllerRoute();
    });
}

I feel like I have been missing something that is super easy to do. But couldn't find the actual reason for this. There are not any issues in the StackOverflow with this.

Is it the error from Openiddict or from the dot net core 5 itself? Any guide or workaround will be appreciated to dig out this issue.


Solution

  • I faced this problem recently also. by default the Openiddict SSL is enable. if you want to disable ssl checking.

    you can disable it via following code

       options.UseAspNetCore().DisableTransportSecurityRequirement();