请指导我如何自定义identityserver 4以使用数据库而不是内存存储。
需要覆盖的类列表以及如何配置它们
答案 0 :(得分:0)
我知道这是一个比较老的问题,但是没有答案,其他人可能会像我一样偶然发现这个问题,并且需要一个解决方案。
这里是walk through guide for setting up database usage via entity framework,它是Identity Server 4文档的一部分。如果您刚开始使用Identity Server,则可以直接使用IS4模板项目进行设置,以通过实体框架使用数据库存储。转到here并查看dotnet new is4ef
模板的信息
如果您已经在使用内存存储中的Identity Server 4项目,则基本上,上面的演练将为您安装IdentityServer4.EntityFramework
Nuget软件包。然后,您将需要运行EF迁移来创建数据库以存储Identity Server配置和操作数据,或者可以选择使用{{3}中的ConfigurationDb.sql
和PersistedGrantsDb.sql
脚本自行设置数据库}(删除迁移命令并根据需要进行调整)。
下一步是将 Startup.cs <中的AddInMemoryClients
方法中的当前调用替换为AddInMemoryIdentityResources
,AddInMemoryApiResources
和ConfigureServices
/ strong> 。您将使用对AddConfigurationStore
扩展方法的AddOperationalStore
和IServiceCollection.AddIdentityServer
扩展的新调用来替换这些调用。像这样:
public void ConfigureServices(IServiceCollection services)
{
//other configuration code ...
string connectionString = "your DB connectionString";
services.AddIdentityServer()
// this adds the config data DB support (clients, resources, CORS)
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = builder => builder.UseSqlServer(connectionString);
})
// this adds the operational data DB support (codes, tokens, consents)
.AddOperationalStore(options =>
{
options.ConfigureDbContext = builder => builder.UseSqlServer(connectionString);
});
}