Вопрос работает IdentityServer4

Я изучаю IdentityServer4 https://identityserver4.readthedocs.io/en/release/quickstarts/0_overview.html но, похоже, возникают проблемы с его работой.

после создания раздела API проекта и настройки соответственно:

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
            {
                Authority = "http://localhost:5000",
                RequireHttpsMetadata = false,

                ApiName = "api1"
            });

            app.UseMvc();
        }

Я получаю следующую ошибку:

'IApplicationBuilder' does not contain a definition for 'UseIdentityServerAuthentication' and no extension method 'UseIdentityServerAuthentication' accepting a first argument of type 'IApplicationBuilder' could be found (are you missing a using directive or an assembly reference?)

любой совет, что мне здесь не хватает?

изменить 1: Я заметил, что я не могу ссылаться на пространство имен, либо даже Тхо пакет установлен и присутствует.

то есть

using IdentityServer4.AccessTokenValidation;

или

using IdentityServer4;

6 ответов


Ну, я просто закрыл и снова открыл Visual Studio 2017, и проблема ушла. Возможно, Visual Studio задохнулась, потянув IdentityServer4.AccessTokenValidation пакет в первый раз, и повторное открытие проекта заставило его попробовать еще раз, и на этот раз это удалось.


Если вы переходите с net core 1.1 на 2.0, вам необходимо перенести код, как описано в Identity Server: миграция API в ASP.NET ядро 2

в функции Configure

Before:
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
    Authority = "http://localhost:5000",
    RequireHttpsMetadata = false,
    ApiName = "apiApp"
});

After:
app.UseAuthentication();

в функции ConfigureServices

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = 
                               JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = 
                               JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o =>
{
    o.Authority = "http://localhost:5000";
    o.Audience = "apiApp";
    o.RequireHttpsMetadata = false;
});


У меня была та же проблема, и я решил, следуя IdentityServer 4 Примеры Быстрого Запуска, в частности Клиент Javascript образец.

Итак, это то, что он работал здесь:

  1. проверка зависимостей версий. Есть несколько проблем по IdentityServer работает с .Чистая ядра 2.0. В моем проекте API я использовал Microsoft.Гадюка.NetCore.Все!--15--> версия 2.0.5 и IdentityServer4.AccessTokenValidation версия 2.3.0.

  2. Внутри Стартапа.cs, при настройке метода add: app.UseAuthentication (); как он используется в пример.

  3. последний шаг-добавить аутентификацию в метод ConfigureServices, как в пример:

    public void ConfigureServices(IServiceCollection services)
    {
      services.AddMvcCore()
        .AddAuthorization()
        .AddJsonFormatters();
    
      services.AddAuthentication("Bearer")
        .AddIdentityServerAuthentication(options =>
        {
            options.Authority = "http://localhost:5000";
            options.RequireHttpsMetadata = false;
    
            options.ApiName = "api1";
        });
     }
    

и это решается в моем случае. Надеюсь, это сработает и для вас, просто дайте мне знать, как это идет.

удачи в кодировании.


чтобы предоставить обновление / ответ, последующая версия пакетов IdentityServer4 работала нормально.

в настоящее время с использованием пакетов ID4БЫЛ 2.0.


Вы можете проверить последнюю документацию на GitHub IdentityServer4:

Он устанавливает параметры аутентификации в ConfigureServices способ использования services.AddAuthentication метод.

здесь тестовый сервер код, который они используют