Не удается аутентифицировать пользователя на Identity Server - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь аутентифицировать пользователя в Identity Server 4 через / connect / token конечную точку.Я заполняю все необходимые поля в Почтальоне:

  • grant_type
  • имя пользователя
  • пароль
  • client_id
  • client_secret

и я всегда получаю ответ " invalid_client ".

Я вставил значения в следующие таблицы:

  • AspNetUsers
  • Clients
  • ClientGrantTypes
  • ClientSecrets

Для таблицы AspNetUsers в столбце PasswordHash я добавил хешированный пароль, который хэшируется с SHA256.В ClientGrantTypes я добавил GrantType со значением 'password' и вставил правильный ClientId.

Вот так выглядят мои ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    string connectionString = "Server=192.168.1.108; Port=5432; Database=Users; User Id=postgres;Password=RandomPassword123";
    var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;

    services.AddIdentityServer()
        .AddConfigurationStore(options =>
        {
            options.ConfigureDbContext = builder =>
            {
                builder.UseNpgsql(connectionString, action =>
                {
                    action.MigrationsAssembly(migrationsAssembly);
                });
            };
        })
        .AddAspNetIdentity<Users>().AddConfigurationStore(options=>
        {
            options.ConfigureDbContext = builder =>
            {
                builder.UseNpgsql(connectionString, action =>
                {
                    action.MigrationsAssembly(migrationsAssembly);
                });
            };
        }).AddDeveloperSigningCredential();


    services.AddEntityFrameworkNpgsql();
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

Я пытаюсь выяснить, что я делаю неправильно, поэтому любая помощь будет оценена.

РЕДАКТИРОВАТЬ :

Я включил ведение журнала.Это скриншот того, что у меня есть в Почтальоне: http://i.imgur.com/Sk78V2y.png

И это полный журнал Identity Server:

[21:25:46 Отладка] IdentityServer4.Hosting.EndpointRouter Путь запроса / соединение / токен соответствует типу конечной точки Токен

[21:25:46 Отладка] IdentityServer4.Hosting.EndpointRouter Конечная точка включена: токен, успешно созданный обработчик: IdentityServer4.Endpoints.TokenEndpoint

[21:25:46 Информация] IdentityServer4.Hosting.IdentityServerMiddleware Вызывает конечную точку IdentityServer: IdentityServer4.Endpoints.TokenEndpoint для / connect / token

[21:25:46 Отладка] IdentityServer4.Endpopoint.ken запрос toenen.

[21:25:46 Отладка] IdentityServer4.Validation.ClientSecretValidator Запустить проверку клиента

[21:25:46 Отладка] IdentityServer4.Validation.BasicAuthenticationSecretParser Начать синтаксический анализ секретной базовой аутентификации

[21:25:46 Отладка] IdentityServer4.Validation.SecretParser Parser обнаружил секрет: BasicAuthenticationSecretParser

[21:25:46 Отладка] IdentityServer4.Validation.SecretParser Секретный идентификатор найден: Ryukote

[21:25:46 Отладка] IdentityServer4.EntityFramework.Stores.ClientStore База данных найдена в Рюкоте: False

[21:25:46 Ошибка] IdentityServer4.Validation.ClientSecretValidator Не найден клиент с идентификатором 'Ryukote'.прерывание

Журнал сбивает меня с толку, потому что есть вещи, которые не соответствуют действительности.Это можно подтвердить, посмотрев предоставленный мною скриншот Postman.

1 Ответ

1 голос
/ 01 апреля 2019

Ошибка исходит от BasicAuthenticationSecretParser, поэтому я думаю, что у вас может быть базовый заголовок авторизации в вашем запросе к конечной точке токена, который содержит

Authorization: Basic Ryukote:password

Именно здесь IdentityServer получает идентификатор клиента 'Ryukote'.

Удалите заголовок авторизации из вашего запроса.

...