IdentityServer 4:没有指定授权的存储机制 - 使用AddInMemoryStores

时间:2016-11-25 04:57:46

标签: asp.net-core thinktecture-ident-server identityserver4

我正在使用Identity Server 4,ASP.NET Core并尝试替换生产环境中的IdentityServer开发人员。但是得到以下错误:

No storage mechanism for grants specified. Use the 'AddInMemoryStores' extension method to register a development version.

因此,我尝试实现此answer中提到的服务:

  • IProfileService
  • IResourceOwnerPasswordValidator

这是 Startup 类中的 ConfigureServices 方法:

            services.AddMvc();
            var identityBuilder = services.AddIdentityServer();
            identityBuilder.AddInMemoryScopes(identitySrvConfig.GetScopes());
            identityBuilder.AddInMemoryClients(identitySrvConfig.GetClients());
            identityBuilder.AddProfileService<ProfileService>();
            identityBuilder.Services.AddTransient<IResourceOwnerPasswordValidator, ResourceOwnerPasswordValidator>();

考虑到在我的情况下界面签名是不同的:

 public class ResourceOwnerPasswordValidator : IdentityServer4.Validation.IResourceOwnerPasswordValidator
{
    public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
    {
        throw new NotImplementedException();
    }
}

但我仍然得到同样的错误,问题是什么?

3 个答案:

答案 0 :(得分:1)

他们正在重做那些API。您应该使用AddInMemoryPersistedGrants

答案 1 :(得分:1)

如果您要应用自定义身份,即

services.AddIdentity<AppUser, UserRole>(options => { options.User.RequireUniqueEmail = true; }).AddEntityFrameworkStores<AbcDbContext>();

然后

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

评论

app.UseIdentityServer();

因为我们使用的是自定义身份,而不是默认身份

答案 2 :(得分:0)

Asp.net Core和IdentityServer4快速启动无效#1359

https://github.com/IdentityServer/IdentityServer4/issues/1359