首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Openiddict与dotnet 5将错误定义为“此服务器只接受HTTPS请求”。

Openiddict与dotnet 5将错误定义为“此服务器只接受HTTPS请求”。
EN

Stack Overflow用户
提问于 2021-06-04 13:08:30
回答 2查看 1.9K关注 0票数 2

我试图在角度应用中使用带有oppeniddict的oidc-client,但是.well-known/openid-configuration有错误。

错误说:

代码语言:javascript
运行
复制
GET http://localhost:2987/.well-known/openid-configuration 400 (Bad Request)

我在点网核心5应用程序中实现了openiddict。

然后我获取URL http://localhost:2987/.well-known/openid-configuration并在浏览器中浏览它,我得到了错误:

代码语言:javascript
运行
复制
{
  "error": "invalid_request",
  "error_description": "This server only accepts HTTPS requests.",
  "error_uri": "https://documentation.openiddict.com/errors/ID2083"
}

我还禁用了web服务器设置中的SSL,如图所示:

我的创业公司ConfigureServices看起来是这样的:

代码语言:javascript
运行
复制
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();
}

配置:

代码语言:javascript
运行
复制
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();
    });
}

我觉得我错过了一些超级容易做的事情。但却找不到真正的原因。这在StackOverflow中没有任何问题。

这是来自Openiddict的错误还是来自点网核5本身的错误?任何指南或解决办法将不胜感激,以挖掘这一问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-20 06:17:47

最近我也遇到了这个问题。默认情况下,Openiddict是启用的。如果您想禁用ssl检查。

您可以通过以下代码禁用它

代码语言:javascript
运行
复制
   options.UseAspNetCore().DisableTransportSecurityRequirement();
票数 10
EN

Stack Overflow用户

发布于 2022-11-22 11:10:16

方法中使用下面的代码

代码语言:javascript
运行
复制
public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        PreConfigure<OpenIddictBuilder>(builder =>
        {
            builder.AddValidation(options =>
            {
                options.AddAudiences("PaymentService");
                options.UseLocalServer();
                options.UseAspNetCore();
            });

//below code needs to be added

            builder.AddServer(options => { options.UseAspNetCore().DisableTransportSecurityRequirement(); });
        });
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67837798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档