Неявный поток Net Core 2.1 IdentityServer4 с Swashbuckle выдает «Неверное имя пользователя или пароль» - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть. NET ядро ​​2.1 с IdentityServer4. Я установил Swashbuckle 5 и пытаюсь заставить логин Swagger UI работать через неявный поток. Однако, когда я пытаюсь войти с существующим пользователем и ввести правильный пароль, я получаю «Неверное имя пользователя или пароль». Я предполагаю, что это связано с настройкой идентичности, а не Swagger. Если я использую токены Bearer, я могу успешно обменять user / pass на рабочий токен через /connect/token, однако неявный поток завершается ошибкой, как описано.

Эту ошибку я отследил до файла: Quickstart\Account\AccountOptions.cs:

public static string InvalidCredentialsErrorMessage = "Invalid username or password";

Любая помощь будет принята с благодарностью. Некоторые базовые c конфиги для запуска:

API Project Startup.cs:

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
        {
            options.Password.RequireDigit = false;
            options.Password.RequireLowercase = false;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = false;
            options.Password.RequiredLength = 3;
        })
        .AddEntityFrameworkStores<AskoContext>()
        .AddDefaultTokenProviders();

        // and also
       JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

        var identityUrl = configuration.GetValue<string>("IdentityUrl");

        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(options =>
        {
            options.Authority = identityUrl;
            options.RequireHttpsMetadata = false;
            options.Audience = "askothequeApi";
            options.TokenValidationParameters = new TokenValidationParameters
            {
                NameClaimType = "name",
                RoleClaimType = JwtClaimTypes.Role,
            };
        });

// and then:

app.UseIdentityServer();
        app.UseHttpsRedirection();
        app.UseCors("CorsPolicy");
        app.UseAuthentication();
        var option = new RewriteOptions();
        option.AddRedirect("^$", "swagger");
        app.UseRewriter(option);
        app.UseStaticFiles();
        app.UseMvcWithDefaultRoute();

        app.UseSwagger();
        app.UseSwaggerUI(options =>
        {
            options.SwaggerEndpoint("/swagger/v1/swagger.json", "Askotheque Api V1");
            options.OAuthClientId("swaggerclient");
            options.OAuthAppName("Swagger UI Client");
        });

Что касается Startup.cs проекта идентификации:

        services.AddMvc();

        services.AddIdentityServer()
            .AddDeveloperSigningCredential()
            //.AddTestUsers(Config.GetUsers())
            //.AddAspNetIdentity<ApplicationUser>()
            .AddConfigurationStore(options =>
            {
                options.ConfigureDbContext = b =>
                    b.UseSqlServer(connectionString, sql => sql.MigrationsAssembly(migrationAssembly));
            })
            // Operational Store will store our tokens, consents, codes, etc
            .AddOperationalStore(options =>
            {
                options.ConfigureDbContext = b =>
                    b.UseSqlServer(connectionString, sql => sql.MigrationsAssembly(migrationAssembly));
            });

// and 


        app.UseIdentityServer();

        app.UseStaticFiles();
        app.UseMvcWithDefaultRoute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...