gpt4 book ai didi

c# - 带有 OAuth2 的 Swashbuckle.AspNetCore v1.0.0,流 : application -> IdentityServer4

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:24 25 4
gpt4 key购买 nike

我似乎无法让我的 .net 核心 Web API 与带有应用程序流的 swashbuckle、OAuth2 一起工作。当我单击“授权”按钮时,Fiddler 显示调用正常并且我的本地 IdentityServer(4) 使用 access_token 进行回复。这一切都很棒,但我不认为 Swagger 接受了这个,没有任何事情发生,我无法在没有获得 401 的情况下触发我的 Controller 方法。我没有看到 cookie,什么也没有。我确定我错过了一些非常微不足道的东西。有人可以帮我吗?

相关代码:

在 Startup.cs 中配置服务

c.AddSecurityDefinition("oauth2", new OAuth2Scheme
{
Type = "oauth2",
Flow = "application",
TokenUrl = "http://localhost:61798/connect/token",
Scopes = new Dictionary<string, string>
{
{ "readAccess", "Access read operations" },
{ "writeAccess", "Access write operations" }
}
});

在Startup.cs中配置

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:61798",
RequireHttpsMetadata = false,
ApiName = "api1",
AutomaticAuthenticate = true, //Doesn't change anything...
});

....

app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs");
c.ConfigureOAuth2("Swagger", "swaggersecret", "swaggerrealm", "Swagger UI");
});

我的 IdentityServer 配置正常。我可以在 Postman 和一个简单的客户端中毫无问题地调用这个 API。我唯一的问题是 Swagger (Swashbuckle.AspNetCore 1.0.0)。

最佳答案

我们对当前项目有非常相似的设置。我们的 rest api 通过 jwt 承载身份验证和 azure ad b2c 进行保护。在这种情况下,无法大摇大摆地自动拾取 token 。

此解决方案非常适合我们:https://stackoverflow.com/a/39759152/536196

services.AddSwaggerGen(c =>
{
c.OperationFilter<AuthorizationHeaderParameterOperationFilter>();
});

之后,当您运行 swagger UI 时,您应该会看到一个额外的 token 字段。

关于c# - 带有 OAuth2 的 Swashbuckle.AspNetCore v1.0.0,流 : application -> IdentityServer4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43720776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com