如何访问 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");
我使用客户端凭据流程解决了它。
我正在使用 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");
我使用客户端凭据流程解决了它。