oAuth2 在 Swagger C# 上使用 Google 身份验证

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

我正在使用 swagger 通过谷歌身份验证来验证用户身份。我的目标是当我按下授权按钮并输入 ClientID 时。它将我重定向到谷歌登录页面,成功登录后我又回到了 swagger。但是,就我而言,当我输入 ClientID 时,它会将我重定向到 google 登录页面,但它无法让我返回到 swagger,并且不会向我显示此 swagger 中的注销按钮。 (我不使用身份服务器,或者也许我应该使用?)

节目

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
{
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidateAudience = true,
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,
        ValidIssuer = builder.Configuration["Jwt:Issuer"],
        ValidAudience = builder.Configuration["Jwt:Audience"],
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]))
    };
})
    .AddGoogle(googleOptions =>
{

    googleOptions.ClientId = builder.Configuration["Google:ClientId"];
    googleOptions.ClientSecret = builder.Configuration["Google:ClientSecret"];


});


builder.Services.AddSwaggerGen(c =>
{

    c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
    {
        Title = "Google Auth",
        Version = "v1"
    });
    c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
    {
        Description = "ouath",
        Name = "oauth2.0",
        Type = SecuritySchemeType.OAuth2,
        Flows = new OpenApiOAuthFlows
        {
           Implicit =  new OpenApiOAuthFlow
            {
               
               AuthorizationUrl = new Uri($"https://accounts.google.com/o/oauth2/v2/auth"),
                TokenUrl = new Uri($"https://oauth2.googleapis.com/token"),

                Scopes = new Dictionary<string, string>
                    {
                        {
                            $"https://www.googleapis.com/auth/cloud-platform.read-only",
                            "User"
                        }

                    }
            }
        }


    });


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

});

builder.Services.AddAuthorization();
app.UseAuthentication();
app.UseAuthorization();

app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
    options.RoutePrefix = string.Empty;
    options.OAuth2RedirectUrl("https://localhost:7189/Auth/LoginSuccess"); // i must used that       //because i got redirect_error but i dont wan't to redirect me to the page
    options.OAuthUsePkce();
    options.OAuthUseBasicAuthenticationWithAccessCodeGrant();
});


c# oauth-2.0 google-oauth
1个回答
0
投票

您找到重定向到 swagger 的答案了吗?

© www.soinside.com 2019 - 2024. All rights reserved.