【问题标题】:How to access to Swashbuckle.AspNetCore protected api to test auto-documentation?如何访问受 Swashbuckle.AspNetCore 保护的 api 来测试自动文档?
【发布时间】:2018-01-09 04:22:50
【问题描述】:

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

我使用 Swashbuckle.AspNetCore 包来自动记录我的 web api。

在 web api 的 ConfigureServices 方法中,我编写了以下代码:

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 页面中的 authorize 按钮时,我重定向到 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 变量中有访问令牌。 我认为它应该自动评估授权标头中的访问令牌吗?步骤是什么?

提前致谢

【问题讨论】:

  • 您使用的是 IdentityServer4 1.x 还是 2.x?
  • @aaronR IdentityServer4 在 .net core 2.0 中,我的 api 在 .net core 1.1 中

标签: identityserver4 asp.net-core-webapi swashbuckle


【解决方案1】:

试试这个

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

【讨论】:

    【解决方案2】:

    我使用客户端凭据流解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多