Authentication 如何在asp.net web API中使用授权按钮设置swagger API登录?
我有一个asp.net web api项目,它与swagger ui集成。我是Swigger的新手。我安装了所有必需的OWIN包进行身份验证。它可以与postman配合使用,但当我在任何控制器中赋予authorize属性时,它在Swigger中都不起作用 如何在swagger中创建用于身份验证的登录面板,以及如何在成功登录后在swagger中的每个请求中自动添加Bear+access_令牌?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
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中。你能给我引路或帮助我吗@瓦利德·克塔泰·格伦。你在问问题吗?还是你在回答最初的问题?我有点不清楚。