我正在使用 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();
});
您找到重定向到 swagger 的答案了吗?