使用 Swagger UI .Net 6 实施 OAuth2

问题描述 投票:0回答:0

我很想用我的 .NET 6 应用程序配置 OAuth,但我很挣扎

我首先想知道什么是最适合我的用例的 OpenApiOAuthFlow,如果我不想在 Microsoft Identity、Azure AD 或 Facebook 等身份提供者上注册我的应用程序?

如果需要,当我的 API 处于开发和暂存状态时,我应该提供什么网站 URL?

我为 ClientID 和 ClientSecret 使用了随机值——有没有办法在不注册我的应用程序的情况下检索这些值? authorizationUrl 和 tokenUrl 中的 ID 是什么?

我用这个网站来帮助https://www.c-sharpcorner.com/article/enable-oauth-2-authorization-using-azure-ad-and-swagger-in-net-5-0/

这是我的相关代码:

c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
{
    Type = SecuritySchemeType.OAuth2,
    Flows = new OpenApiOAuthFlows()
    {
        Implicit = new OpenApiOAuthFlow()
        {
            AuthorizationUrl = new Uri("https://login.microsoftonline.com/7493ef9e-db24-45d8-91b5-9c36018d6d52/oauth2/v2.0/authorize"),
            TokenUrl = new Uri("https://login.microsoftonline.com/7493ef9e-db24-45d8-91b5-9c36018d6d52/oauth2/v2.0/token"),
            Scopes = new Dictionary<string, string>
            {
                {"Scope", "Reads the Weather forecast"}
            }
        }
    }
});

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

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/1.0/swagger.json", "Weather Forecast API 1.0");
    //c.RoutePrefix = string.Empty;
    c.OAuthClientId("ff11294f-2cc9-18d4-bdf6-6cf26670316a");
    //c.OAuthClientSecret("hXUedE-fItzZi8-7Mua4v9MxiTGx2--R_B");
    //c.OAuthUseBasicAuthenticationWithAccessCodeGrant();
});
c# .net swagger swagger-ui swashbuckle
© www.soinside.com 2019 - 2024. All rights reserved.