返回

引言:将EF Core带入IdentityServer4的安全王国

后端

IdentityServer4学习笔记:使用EntityFramework Core


在身份认证和授权领域中,IdentityServer4早已成为一块闪耀的宝石。它的灵活性和可扩展性使其成为各类项目的热门选择。然而,当涉及到数据持久性时,我们不得不面临一个重要问题:选择何种数据库技术?

在这片浩瀚的数据库世界里,EntityFramework Core(简称EF Core)以其优雅的语法和强大的功能脱颖而出。它为我们提供了各种便利,使数据访问变得更加简单。而如今,我们将把IdentityServer4与EF Core融为一体,创造一个持久而可靠的解决方案。


从无到有:建立一个EF Core与IdentityServer4携手共舞的项目

1. 创建一个新的ASP.NET Core项目

  • 创建一个新的ASP.NET Core Web应用程序项目。
  • 在“添加 > 新项”中选择“类库”,将其命名为“IdentityServer4.EntityFrameworkCore”。

2. 安装EF Core和IdentityServer4软件包

  • 使用NuGet包管理器安装软件包:
    • Microsoft.EntityFrameworkCore
    • Microsoft.EntityFrameworkCore.SqlServer
    • IdentityServer4.EntityFrameworkCore.Stores
    • IdentityServer4

3. 在类库中创建数据上下文

在“IdentityServer4.EntityFrameworkCore”类库中创建一个名为“ConfigurationDbContext”的数据上下文类。

using Microsoft.EntityFrameworkCore;
using IdentityServer4.EntityFramework.Stores;

namespace IdentityServer4.EntityFrameworkCore
{
    public class ConfigurationDbContext : DbContext
    {
        public ConfigurationDbContext(DbContextOptions<ConfigurationDbContext> options)
            : base(options)
        {
        }

        public DbSet<Client> Clients { get; set; }
        public DbSet<IdentityResource> IdentityResources { get; set; }
        public DbSet<ApiResource> ApiResources { get; set; }
    }
}

4. 在应用程序中添加对EF Core的引用

在应用程序的“Startup.cs”文件中添加以下代码:

using IdentityServer4.EntityFrameworkCore.DbContexts;
using IdentityServer4.EntityFrameworkCore.Stores;
using Microsoft.EntityFrameworkCore;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ConfigurationDbContext>(options =>
            options.UseSqlServer(connectionString));

        services.AddIdentityServer()
            .AddConfigurationStore(options =>
            {
                options.ConfigureDbContext = b => b.UseSqlServer(connectionString);
            })
            .AddOperationalStore(options =>
            {
                options.ConfigureDbContext = b => b.UseSqlServer(connectionString);
            });
    }
}

5. 创建迁移并更新数据库

在项目中运行以下命令以创建迁移脚本并更新数据库:

Add-Migration InitialCreate
Update-Database

6. 启动项目并访问IdentityServer4

现在您可以启动项目并访问IdentityServer4的管理界面。默认情况下,管理界面的地址是:https://localhost:5001/.well-known/openid-configuration


结语:EF Core与IdentityServer4的完美结合

通过将EF Core与IdentityServer4结合,我们成功地为身份认证和授权系统提供了持久化的解决方案。EF Core的简单性和灵活性让数据管理变得更加轻松,而IdentityServer4的强大功能则确保了系统的安全性和可扩展性。

在这个由信息主导的时代,数据的重要性不言而喻。在选择数据库技术时,我们应考虑其安全性、可扩展性和易用性等因素。EF Core无疑是一个值得信赖的伙伴,它能让您轻松管理数据,而IdentityServer4则能为您的应用筑起一道坚不可摧的安全屏障。

希望这篇文章能为您带来启发,助您在身份认证和授权的道路上披荆斩棘,乘风破浪!