IdentityServer 4 Не указан механизм хранения для клиентов. Используйте метод расширения AddInMemoryClients, чтобы зарегистрировать версию для разработки - PullRequest
0 голосов
/ 21 февраля 2020

Я создаю asp. net core spa из шаблона Microsoft и выбираю «Индивидуальную учетную запись пользователя». Он отлично работает в визуальной студии. Если я пытаюсь запустить приложение из файла * .exe, я получаю эту ошибку.

info: IdentityServer4.Startup[0]
      Starting IdentityServer4 version 3.0.0.0
crit: IdentityServer4.Startup[0]
      No storage mechanism for clients specified. Use the 'AddInMemoryClients' extension method to register a development version.
crit: Microsoft.AspNetCore.Hosting.Diagnostics[6]
      Application startup exception
System.InvalidOperationException: No storage mechanism for clients specified. Use the 'AddInMemoryClients' extension method to register a development version.
   at Microsoft.AspNetCore.Builder.IdentityServerApplicationBuilderExtensions.TestService(IServiceProvider serviceProvider, Type service, ILogger logger, String message, Boolean doThrow)
   at Microsoft.AspNetCore.Builder.IdentityServerApplicationBuilderExtensions.Validate(IApplicationBuilder app)
   at Microsoft.AspNetCore.Builder.IdentityServerApplicationBuilderExtensions.UseIdentityServer(IApplicationBuilder app, IdentityServerMiddlewareOptions options)
   at FileExplorer.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in C:\Users\Aliaksei_Piatrouski\Documents\tmp\file-explorer\FileExplorer\FileExplorer\Startup.cs:line 112
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
   at Microsoft.Extensions.DependencyInjection.AutoRegisterMiddleware.<>c__DisplayClass4_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
Unhandled exception. System.InvalidOperationException: No storage mechanism for clients specified. Use the 'AddInMemoryClients' extension method to register a development version.
   at Microsoft.AspNetCore.Builder.IdentityServerApplicationBuilderExtensions.TestService(IServiceProvider serviceProvider, Type service, ILogger logger, String message, Boolean doThrow)
   at Microsoft.AspNetCore.Builder.IdentityServerApplicationBuilderExtensions.Validate(IApplicationBuilder app)
   at Microsoft.AspNetCore.Builder.IdentityServerApplicationBuilderExtensions.UseIdentityServer(IApplicationBuilder app, IdentityServerMiddlewareOptions options)
   at FileExplorer.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in C:\Users\Aliaksei_Piatrouski\Documents\tmp\file-explorer\FileExplorer\FileExplorer\Startup.cs:line 112
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
   at Microsoft.Extensions.DependencyInjection.AutoRegisterMiddleware.<>c__DisplayClass4_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at FileExplorer.Program.Main(String[] args) in C:\Users\Aliaksei_Piatrouski\Documents\tmp\file-explorer\FileExplorer\FileExplorer\Program.cs:line 17

Я не знаю, в чем проблема.

Это мой файл запуска

services.AddIdentityServer()
                .AddInMemoryPersistedGrants()
                .AddApiAuthorization<ApplicationUser, ApplicationDbContext>()
                .AddProfileService<ProfileService>();

services.AddAuthentication()
                .AddIdentityServerJwt();
app.UseAuthentication();
app.UseAuthorization();
app.UseIdentityServer();

И appsettings

"IdentityServer": {
    "Clients": {
      "FileExplorer": {
        "Profile": "IdentityServerSPA"
      }
    }
  },

Я думаю, что метод AddInMemoryPersistedGrants должен добавлять магазины, но он не работает.

1 Ответ

0 голосов
/ 21 февраля 2020

Вы должны добавить в хранилище памяти клиентов, API и ресурсы идентификации (не для грантов)

identityBuilder = services.AddIdentityServer()
#if InMemory
    .AddInMemoryIdentityResources(ConfigInMemory.GetIdentityResources())
    .AddInMemoryApiResources(ConfigInMemory.GetApis())
    .AddInMemoryClients(ConfigInMemory.GetClients());
#else
    .AddConfigurationStore(_ => _.ConfigureDbContext = b => ConfigureDbContext(connectionString, b, tp));

, таким образом, если определено InMemory, добавляются AddInMemoryClients, AddInMemoryApiResources и AddInMemoryIdentityResources.

Пожалуйста, проверьте Startup.cs для подробного образца.

...