You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.8中Swashbuckle Swagger如何添加授权按钮?

.NET Framework 4.8下Swashbuckle配置Swagger授权按钮的解决方案

可以实现,你当前的配置遗漏了几个关键环节,以下是修正后的配置方案:

1. 确认Swashbuckle版本

确保通过NuGet安装的是针对.NET Framework的Swashbuckle包(非Swashbuckle.AspNetCore),并升级到兼容.NET Framework 4.8的最新稳定版,旧版本的OAuth2支持可能存在缺陷。

2. 修正Swagger的OAuth2定义

你的配置中存在两个问题:

  • 隐式授权(implicit flow)不需要配置TokenUrl,且原TokenUrl地址不完整;
  • 缺少权限范围(Scopes)配置,这是Swagger UI显示授权按钮的必要条件。

修改后的EnableSwagger配置:

c.OAuth2("oauth2")
    .Description("OAuth2 Implicit Grant")
    .Flow("implicit")
    .AuthorizationUrl("https://keycloak.some.test/auth/realms/test/protocol/openid-connect/auth")
    .Scopes(scopes => 
    {
        // 根据你的API权限需求添加对应范围
        scopes.Add("api:read", "API只读权限");
        scopes.Add("api:write", "API读写权限");
    });

3. 完善Swagger UI的OAuth2支持配置

EnableOAuth2Support需要补充隐式授权必需的参数,否则无法正确跳转至SSO服务器:

c.EnableOAuth2Support(
    clientId: "test-client",
    clientSecret: null,
    realm: "test",
    appName: "Swagger UI",
    additionalQueryStringParams: new Dictionary<string, string>
    {
        { "response_type", "token" }, // 隐式模式必须指定此参数
        { "nonce", Guid.NewGuid().ToString() } // 可选,用于提升授权安全性
    }
);

4. 验证API的授权标记

确保你的API控制器或方法上带有[Authorize]属性,Swagger会识别这些授权要求,进而触发授权按钮的显示(若所有接口都无需授权,按钮可能不会出现)。

调整以上配置后,Swagger UI即可显示「Authorize」按钮,点击后将跳转至Keycloak的SSO登录页面,完成授权后会自动携带Token访问受保护的API接口。

内容的提问来源于stack exchange,提问作者Paolo Tedesco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:20:22