首页 > 解决方案 > OAuth 2.0、Swagger 和 DotNet 核心

问题描述

我正在使用 Auth0 来允许我使用 OAuth 2.0,并编写一个 DotNet Core API 应用程序,一切正常,Auth0 提供了一个很好的使用示例。

但是,我无法让 Swagger 授权,有人管理过这个,如果是这样,怎么办?

标签: .net-coreoauth-2.0auth0

解决方案


是的,我也遇到过类似的情况,我的项目是在 net core 3 中完成的,也使用了 Auth0 并实现了 Swagger。我在Startup.cs中的代码如下所示。

        //Swagger
        services.AddSwaggerGen(c =>
        {
            // Another options like docs info or xml

            c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
            {
                Description = @"JWT Authorization header using the Bearer scheme.
                                Enter 'Bearer' [space] and then your token in the text input below.
                                Example: Bearer adsdflEDc.asdkjhd.aEASDAD",
                Name = "Authorization",
                In = ParameterLocation.Header,
                Type = SecuritySchemeType.ApiKey,
                Scheme = "Bearer"
            });

            c.AddSecurityRequirement(new OpenApiSecurityRequirement()
            {
                {
                    new OpenApiSecurityScheme
                    {
                        Reference = new OpenApiReference
                        {
                            Type = ReferenceType.SecurityScheme,
                            Id = "Bearer"
                        },
                        Scheme = "oauth2",
                        Name = "Bearer",
                        In = ParameterLocation.Header
                    },
                    new List<string>()
                }
            });
        });

您只需要添加AddSecurityDefinitionAddSecurityRequirement选项,当您运行 API 时,您可以在 Swagger UI 中看到右上角的按钮,当您单击时,您会看到它要求提供授权令牌,该令牌将应用于所有受保护的端点。

在此处输入图像描述


推荐阅读