Вопрос работает 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 образец.
Итак, это то, что он работал здесь:
проверка зависимостей версий. Есть несколько проблем по IdentityServer работает с .Чистая ядра 2.0. В моем проекте API я использовал Microsoft.Гадюка.NetCore.Все!--15--> версия 2.0.5 и IdentityServer4.AccessTokenValidation версия 2.3.0.
Внутри Стартапа.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"; }); }
и это решается в моем случае. Надеюсь, это сработает и для вас, просто дайте мне знать, как это идет.
удачи в кодировании.
чтобы предоставить обновление / ответ, последующая версия пакетов IdentityServer4 работала нормально.
в настоящее время с использованием пакетов ID4БЫЛ 2.0.
Вы можете проверить последнюю документацию на GitHub IdentityServer4:
Он устанавливает параметры аутентификации в ConfigureServices
способ использования services.AddAuthentication
метод.
здесь тестовый сервер код, который они используют