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

IdentityServer 4: No storage mechanism for grants specified - use AddInMemoryStores

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

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

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

这是我在 Startup 中的 ConfigureServices 方法 class:

            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();
    }
}

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

他们 were/are 重新设计了这些 API。你应该使用 AddInMemoryPersistedGrants

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

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

然后在

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

评论

app.UseIdentityServer();

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