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.
因此,我尝试实现此 中提到的服务:
- IProfileService
- IResourceOwnerPasswordValidator
这是我在 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();
因为我们使用的是自定义身份,而不是默认身份
我正在使用 Identity Server 4 ASP.NET Core 并试图在生产环境中替换 IdentityServer 开发人员。但是出现以下错误:
No storage mechanism for grants specified. Use the 'AddInMemoryStores' extension method to register a development version.
因此,我尝试实现此
- IProfileService
- IResourceOwnerPasswordValidator
这是我在 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();
因为我们使用的是自定义身份,而不是默认身份