没有指定授权的存储机制

No storage mechanism for grants specified

我是 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'扩展方法注册开发版。

显然我不想在生产实施中使用内存存储,但我不确定我需要做什么来解决这个问题。

AddInMemoryStores 没有最佳名称。它实际上为与发布的 materials/tokens.

相关的所有瞬态数据添加了存储

我们有时会在生产中使用它,因为很多时候我们并不真正需要将这些数据保存到磁盘,而且我们不使用长寿命令牌。

查看扩展方法的作用 here 并查看 IPersistedGrantStore 合同的外观以获得更好的想法。