Authentication 如何在asp.net web API中使用授权按钮设置swagger API登录?

Authentication 如何在asp.net web API中使用授权按钮设置swagger API登录?,authentication,asp.net-web-api,owin,access-token,swagger-ui,Authentication,Asp.net Web Api,Owin,Access Token,Swagger Ui,我有一个asp.net web api项目,它与swagger ui集成。我是Swigger的新手。我安装了所有必需的OWIN包进行身份验证。它可以与postman配合使用,但当我在任何控制器中赋予authorize属性时,它在Swigger中都不起作用 如何在swagger中创建用于身份验证的登录面板,以及如何在成功登录后在swagger中的每个请求中自动添加Bear+access_令牌? Thanx Prevance以下是我在.net核心项目(2.2)中所做的工作。这可能有助于您使用swag

我有一个asp.net web api项目,它与swagger ui集成。我是Swigger的新手。我安装了所有必需的OWIN包进行身份验证。它可以与postman配合使用,但当我在任何控制器中赋予authorize属性时,它在Swigger中都不起作用

如何在swagger中创建用于身份验证的登录面板,以及如何在成功登录后在swagger中的每个请求中自动添加Bear+access_令牌?
Thanx Prevance

以下是我在.net核心项目(2.2)中所做的工作。这可能有助于您使用swagger设置身份验证。我正在使用swashbackle和Microsoft.OpenApi:

1-添加身份验证支持:

services.AddAuthentication("ApiKey").AddScheme<AuthenticationSchemeOptions, ApiKeyAuth>("ApiKey", null);
            setup.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme
            {
                Type = SecuritySchemeType.ApiKey,
                Name = "ApiKey",
                In = ParameterLocation.Header,
                Description = "Please enter the API Key provided to you"
            });

            setup.AddSecurityRequirement(new OpenApiSecurityRequirement
            {
                {
                    new OpenApiSecurityScheme
                    {
                        Reference = new OpenApiReference {
                            Type = ReferenceType.SecurityScheme,
                            Id = "ApiKey" }
                    }, new List<string>() }
            });
public class ApiKeyAuth : AuthenticationHandler<AuthenticationSchemeOptions>
{

    public ApiKeyAuth(
         IOptionsMonitor<AuthenticationSchemeOptions> options,
         ILoggerFactory logger,
         UrlEncoder encoder,
         ISystemClock clock)
         : base(options, logger, encoder, clock)
    {
    }
    protected override Task<AuthenticateResult> HandleAuthenticateAsync()
    {

        if (!Request.Headers.ContainsKey("ApiKey"))
        {
            return Task.FromResult(AuthenticateResult.Fail("Missing ApiToken"));
        }
        try
        {
            var identity = new ClaimsIdentity( new List<Claim>() { new Claim(ClaimTypes.Sid, "1") },Scheme.Name);
            var principal = new ClaimsPrincipal(identity);
            var ticket = new AuthenticationTicket(principal, Scheme.Name);
            return Task.FromResult(AuthenticateResult.Success(ticket));
        }
        catch (Exception)
        {

            return Task.FromResult(AuthenticateResult.Fail("Invalid Authentication Failed"));
        }

    }
}
services.AddAuthentication(“ApiKey”).AddScheme

“授权”对话框应如下所示:


希望这有帮助

未调用ApiKeyAuth类

我已将[授权]添加到控制器

将此代码添加到启动


services.AddAuthentication(“ApiKey”).AddScheme(“ApiKey”,null)

因为我使用的是asp.NETWebAPI而不是asp.NETCore,你能帮我重新升级吗?我已经通过邮递员获得了令牌,但我需要通过授权从swagger ui生成令牌,并且该令牌将自动添加到每个请求的curl中。你能给我引路或帮助我吗@瓦利德·克塔泰·格伦。你在问问题吗?还是你在回答最初的问题?我有点不清楚。