У меня есть следующее. Он работает в тестовой среде:
Startup.cs:
public void ConfigureServices(IServiceCollection services) {
// non-IdentityServer code here
services.AddIdentityServer(
options => {
}
)
.AddApiAuthorization<UserEntity, LeagoDbContext>()
.AddClientStore<MyClientStore>()
;
services.AddAuthentication()
.AddIdentityServerJwt();
// more non-IdentityServer code
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
// non-IdentityServer code here
app.UseAuthentication();
app.UseIdentityServer();
// more non-IdentityServer code
}
MyClientStore.cs:
public async Task<Client> FindClientByIdAsync(string clientId) {
switch (clientId) {
case "client": // test store
return await Task.FromResult(MyTestClient.TestClient);
default:
// this is the problem. Not sure what to do.
}
Если я не добавлю MyClientStore в Startup.cs реальная среда работает, а тестовая - нет. Поэтому мне как-то нужно посмотреть, как выглядит настоящий клиент (чтобы я мог его восстановить). В качестве альтернативы, я мог бы добавить клиентское хранилище по умолчанию в свое собственное хранилище и вызвать его в случае по умолчанию для оператора switch выше. Но я не уверен, как это сделать. Обратите внимание, что хранилище по умолчанию имеет зависимости от ILogger и IConfigurationDbContext.