我是 IdentityServer 的新手,在设置它时遇到了一些麻烦。
由于我不会进入这里的原因,我不能使用 ASP.NET Identity 或 EntityFramework。我有一个自定义数据库供我需要对其进行身份验证的用户使用,因此我提取了样本并尝试将 InMemoryUsers 切换为自定义持久性存储。
这是我的 ConfigureServices 方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityServer(options =>
{
options.AuthenticationOptions = new IdentityServer4.Configuration.AuthenticationOptions
{
};
})
.AddInMemoryClients(Clients.Get())
.AddInMemoryScopes(Scopes.Get())
.SetTemporarySigningCredential();
services.AddMvc();
services.AddTransient<ISignInService, SignInService>();
services.AddTransient<IUserRepository, UserRepository>();
services.AddTransient<IUserService, UserService>();
services.AddTransient<IResourceOwnerPasswordValidator, ResourceOwnerPasswordValidator>();
services.AddTransient<IProfileService, ProfileService>();
}
我知道这种方法是不完善的,因为我还在测试一些东西,但是当我运行应用程序时,我得到了这个错误:
System.InvalidOperationException 未指定授权的存储机制。使用“AddInMemoryStores”扩展方法注册开发版本。
显然我不想在内存存储中使用生产实现,但我不确定我需要做什么来解决这个问题。