Подтвердить что ты не робот

Проблема с запуском 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;
4b9b3361

Ответ 1

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

В настоящее время используются пакеты ID4 2.0.

Ответ 2

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

Ответ 3

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

В функции настройки

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;
});

Ответ 4

Вам нужен этот пакет. И используйте пространство имен IdentityServer4.AccessTokenValidation

Ответ 5

У меня была такая же проблема, и я решил, выполнив IdentityServer 4 Quickstart Samples, в частности Javascript Client.

Итак, вот что здесь получилось:

  • Проверьте версии зависимостей. Для IdentityServer есть проблемы, связанные с .NET Core 2.0. В моем проекте API я использовал версию Microsoft.Asp.NetCore.All версии 2.0.5 и IdentityServer4.AccessTokenValidation версии 2.3.0.

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

  • Последний шаг - добавить аутентификацию к методу 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";
        });
     }
    

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

Счастливое кодирование.

Ответ 6

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

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

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