如何访问 Swashbuckle.AspNetCore protected api 来测试 auto-documentation?

How to access to Swashbuckle.AspNetCore protected api to test auto-documentation?

我正在使用 IdentityServer4、受保护的 Web api 和消费者(用于测试的控制台应用程序)开发解决方案。

我使用 Swashbuckle.AspNetCore 包到 auto-document 我的网站 api。

在我的 ConfigureServices 方法中 api 我写了这段代码:

services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info { Title = "API v1", Version = "v1" });
            c.SwaggerDoc("v2", new Info { Title = "API v2", Version = "v2" });
            c.AddSecurityDefinition("oauth2", new OAuth2Scheme()
            {
                AuthorizationUrl = "http://localhost:5000/connect/authorize",
                Flow = "accessCode",
                TokenUrl = "http://localhost:5000/connect/token",
                Scopes = new Dictionary<string, string> { { "api1", "My API" } }
            });
            c.OperationFilter<AuthorizationHeaderParameterOperationFilter>();            
        });

当我在 Swagger.UI 页面中单击 授权 按钮时,我重定向到 IdentityServer 并在此处输入用户凭据并且它有效。 所以现在我必须输入访问令牌(在 Swagger.UI 页面中)才能访问我的受保护端点以查看文档:

[ApiExplorerSettings(GroupName = "v2")]
public class ValuesController : Controller
{
    [HttpGet("[controller]")]
    [Authorize]
    public async Task<IEnumerable<string>> GetAsync()
    {
        var accessToken = await HttpContext.Authentication.GetTokenAsync("access_token");
        return new string[] { "value1", "value2" };
    }
}

但是 访问令牌保存在哪里? 如果我调用我的 api 并放置一个断点,我在 accessToken变量。 我认为它应该在授权 header 中自动对访问令牌进行定价?步骤是什么?

提前致谢

试试这个

var accesstoken = await HttpContext.GetTokenAsync("access_token");

我使用客户端凭据流程解决了它。