承载安全定义未显示 Swagger .NET 8

问题描述 投票:0回答:1

我正在设置一个新的.NET 8 API,使用 Identity 来处理身份验证过程。 我在 swagger 中设置不记名令牌身份验证时遇到问题。

所以环顾四周后我想出了这个:

builder.Services.AddSwaggerGen(options =>
{
    options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        Name = "Authorization",
        In = ParameterLocation.Header,
        Type = SecuritySchemeType.ApiKey
    });
    
    options.OperationFilter<SecurityRequirementsOperationFilter>();
});

我写下持票人 Swagger bearer inserted 但没有授权 screen

据我所知,NET 8 中的授权/身份发生了变化,旧视频可能已经过时了

我的 Program.cs 中与承载相关的其他行是:

builder.Services.AddAuthentication().AddBearerToken(IdentityConstants.BearerScheme);
builder.Services.AddAuthorizationBuilder();

builder.Services.AddIdentityCore<User>()
    .AddEntityFrameworkStores<DatabaseContext>()
    .AddApiEndpoints();

也许他们搞砸了一些事情?

c# swagger .net-8.0
1个回答
0
投票

这个配置对我有用:

builder.Services.AddSwaggerGen(options =>
{
    options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        In = ParameterLocation.Header,
        Description = "Please enter a valid token",
        Name = "Authorization",
        Type = SecuritySchemeType.Http,
        BearerFormat = "JWT",
        Scheme = "Bearer"
    });
    options.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type=ReferenceType.SecurityScheme,
                    Id="Bearer"
                }
            },
            new string[]{}
        }
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.