我正在使用Identity Server 4,ASP.NET Core并尝试替换生产环境中的IdentityServer开发人员。但是得到以下错误:
No storage mechanism for grants specified. Use the 'AddInMemoryStores' extension method to register a development version.
因此,我尝试实现此answer中提到的服务:
这是 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();
}
}
但我仍然得到同样的错误,问题是什么?
答案 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