没有指定授权的存储机制

时间:2016-10-04 03:37:17

标签: asp.net-core identityserver4

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

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

1 个答案:

答案 0 :(得分:3)

AddInMemoryStores没有最好的名字。它实际上为所有与已发布材料/代币相关的瞬态数据添加了商店。

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

看一下扩展方法的作用here并查看IPersistedGrantStore合约的内容,以便更好地了解。