一、简介

授权中心是微服务架构中最为核心重要的环节,不仅为web、app等客户端提供身份授权服务,还对其他微服务提供身份认证服务。ABP微服务架构中使用identityServer4框架进行身份管理,并且ABP对ids4框架进行了进一步封装,足以提供强大的统一授权服务。

二、创建工程

创建AuthServer.Host服务

在AuthServer目录中创建解决方案,不启用https配置

三、引用模块

在刚刚创建的空 asp.net core项目中引用 .net core、ef core、ids4、abp等官方组件。

PM> Install-Package Serilog.Extensions.Hosting -Version 3.0.0

PM> Install-Package Serilog.Sinks.File -Version 4.0.0

PM> Install-Package Serilog.Sinks.Elasticsearch -Version 6.5.0

PM> Install-Package Microsoft.Extensions.Caching.StackExchangeRedis -Version 3.1.0

PM> Install-Package Microsoft.AspNetCore.DataProtection.StackExchangeRedis -Version 3.1.0

PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.0

PM> Install-Package Volo.Abp.Account.Application -Version 2.0.1

PM> Install-Package Volo.Abp.Account.Web.IdentityServer -Version 2.0.1

PM> Install-Package Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic -Version 2.0.1

PM> Install-Package Volo.Abp.AuditLogging.EntityFrameworkCore -Version 2.0.1

PM> Install-Package Volo.Abp.Autofac -Version 2.0.1

PM> Install-Package Volo.Abp.EntityFrameworkCore.SqlServer -Version 2.0.1

PM> Install-Package Volo.Abp.Identity.EntityFrameworkCore -Version 2.0.1

PM> Install-Package Volo.Abp.IdentityServer.EntityFrameworkCore -Version 2.0.1

PM> Install-Package Volo.Abp.PermissionManagement.EntityFrameworkCore -Version 2.0.1

PM> Install-Package Volo.Abp.SettingManagement.EntityFrameworkCore -Version 2.0.1

PM> Install-Package Volo.Abp.TenantManagement.EntityFrameworkCore -Version 2.0.1

四、添加DbContext

在项目中添加DbContext并配置ef core迁移模型。

4.1 添加AuthServerDbContext

在EntityFrameworkCore目录下添加AuthServerDbContext.cs配置所有ABP模型,代码如下:

public class AuthServerDbContext : AbpDbContext

{

public AuthServerDbContext(DbContextOptions options)

: base(options)

{

}

protected override void OnModelCreating(ModelBuilder modelBuilder)

{

base.OnModelCreating(modelBuilder);

modelBuilder.ConfigureIdentity();

modelBuilder.ConfigureIdentityServer();

modelBuilder.ConfigureAuditLogging();

modelBuilder.ConfigurePermissionManagement();

modelBuilder.ConfigureSettingManagement();

modelBuilder.ConfigureTenantManagement();

}

}

4.2 添加AuthServerDbContextFactory

在EntityFrameworkCore目录下创建AuthServerDbContextFactory.cs用于code first数据库迁移

public class AuthServerDbContextFactory : IDesignTimeDbContextFactory

{

public AuthServerDbContext CreateDbContext(string[] args)

{

var configuration = BuildConfiguration();

var builder = new DbContextOptionsBuilder()

.UseSqlServer(configuration.GetConnectionString("Default"));

return new AuthServerDbContext(builder.Options);

}

private static IConfigurationRoot BuildConfiguration()

{

var builder = new ConfigurationBuilder()

.SetBasePath(Directory.GetCurrentDirectory())

.AddJsonFile("appsettings.json", optional: false);

return builder.Build();

}

}

五、配置Module

5.1 添加AuthServerHostModule

在AuthServer.Host根目录中添加AuthServerHostModule.cs

5.2 引用依赖

在AuthServerHostModule依次引用以下依赖

AbpAutofacModule

AbpPermissionManagementEntityFrameworkCoreModule

AbpAuditLoggingEntityFrameworkCoreModule

AbpSettingManagementEntityFrameworkCoreModule

AbpIdentityEntityFrameworkCoreModule

AbpIdentityServerEntityFrameworkCoreModule

AbpTenantManagementEntityFrameworkCoreModule

AbpEntityFrameworkCoreSqlServerModule

AbpAccountWebIdentityServerModule

AbpAccountApplicationModule

AbpAspNetCoreMvcUiBasicThemeModule

5.3 注册服务与初始化应用

AuthServer中不需要注册认证方式和Swagger服务,服务注册和初始化应用代码如下:

public class AuthServerHostModule : AbpModule

{

private const string DefaultCorsPolicyName = "Default";

public override void ConfigureServices(ServiceConfigurationContext context)

{

var configuration = context.Services.GetConfiguration();

context.Services.AddAbpDbContext(options =>

{

options.AddDefaultRepositories();

});

Configure(options =>

{

options.UseSqlServer();

});

Configure(options =>

{

options.Languages.Add(new LanguageInfo("en", "en", "English"));

});

context.Services.AddStackExchangeRedisCache(options =>

{

options.Configuration = configuration["Redis:Configuration"];

});

context.Services.AddCors(options =>

{

options.AddPolicy(DefaultCorsPolicyName,

builder =>

{

builder.WithOrigins(configuration["CorsOrigins"]

.Split(",", StringSplitOptions.RemoveEmptyEntries)

.Select(o => o.RemovePostFix("/"))

.ToArray())

.WithAbpExposedHeaders()

.SetIsOriginAllowedToAllowWildcardSubdomains()

.AllowAnyHeader()

.AllowAnyMethod()

.AllowCredentials();

});

});

Configure(options =>

{

options.IsEnabledForGetRequests = true;

options.ApplicationName = "AuthServer";

});

var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);

context.Services.AddDataProtection()

.PersistKeysToStackExchangeRedis(redis, "DataProtection-Keys");

}

public override void OnApplicationInitialization(ApplicationInitializationContext context)

{

var app = context.GetApplicationBuilder();

app.UseCorrelationId();

app.UseVirtualFiles();

app.UseRouting();

app.UseCors(DefaultCorsPolicyName);

app.UseAuthentication();

app.UseMultiTenancy();

app.UseIdentityServer();

app.UseAuthorization();

app.UseAbpRequestLocalization();

app.UseAuditing();

app.UseMvcWithDefaultRouteAndArea();

AsyncHelper.RunSync(async () =>

{

using (var scope = context.ServiceProvider.CreateScope())

{

await scope.ServiceProvider

.GetRequiredService()

.SeedAsync();

}

});

}

}

六、种子文件和配置文件

目前没有使用ids4身份管理界面,暂时使用种子文件将client信息添加到数据库。

详细代码可见Github

七、启动

7.1 迁移数据库

使用ef core迁移模型到数据库

PM> Add-Migration init

PM> Update-Database

7.2 运行

使用Ctrl+F5启动项目

启动成功后种子文件已经添加到数据库

7.3 登录

使用postman获取token

token成功返回

mysql主从配置duxi_[从0到1搭建ABP微服务] - 搭建授权服务相关推荐

  1. mysql主从配置duxi_手把手超详细Docker部署MongoDB集群

    Mongodb集群搭建 mongodb 集群搭建的方式有三种:主从备份(Master - Slave)模式,或者叫主从复制模式. 副本集(Replica Set)模式. 分片(Sharding)模式. ...

  2. mysql主从配置duxi_配置MySQL主从复制(一主一从)

    配置mysql主从复制(一主一从) MySQL版本:5.7,Linux版本:CentOS 7.4 MySQL主从复制简介 MySQL主从复制的目的是实现数据库冗余备份,将master数据库的数据定时同 ...

  3. mysql主从配置duxi_MySQL 8.0主从(Master-Slave)配置

    MySQL 主从复制的方式有多种,本文主要演示基于基于日志(binlog)的主从复制方式. MySQL 主从复制(也称 A/B 复制) 的原理Master将数据改变记录到二进制日志(binary lo ...

  4. mysql主从配置duxi_​WordPress大前端主题DUX 5.1

    DUX是基于WordPress程序的大前端主题,由themebetter团队原创开发. 使用主题所需配置: PHP版本:5.3 ~ 7.2 wordpress版本:4.0+ Mysql版本:5.0+ ...

  5. mysql主从配置duxi_做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table...

    浓缩版: 使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错. 如在Master(主)服务器上设置 replicate_do_db=test(my ...

  6. mysql主从配置流程

    一.mysql主从配置原理 1.master将操作记录写到二进制日志中(binary log)中: 2.slave IO 线程将master的binary log events读写到它的中继日志(re ...

  7. Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  8. mysql主从配置 简书_Mysql主从配置,实现读写分离-Go语言中文社区

    转载:https://www.cnblogs.com/alvin_xp/p/4162249.html 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层 ...

  9. docker mysql.sock,Docker mysql主从配置

    Docker mysql主从配置 一:Mysql基于Docker的主从复制搭建 1:安装docker,安装步骤可见我之前的文章:Docker-常用基建的安装与部署 docker ps 命令查询当前的容 ...

最新文章

  1. Android-正方形的容器
  2. python中matplotlib条形图数值大的在最底层显示_如何使用python的matplotlib模块绘制水平条形图...
  3. 【5分钟一本书】暗时间:用时间管理把握产品的进度条
  4. 简单分析STM32和51的区别
  5. Redis为什么默认16个数据库,干什么用?
  6. LeetCode33. 搜索旋转排序数组(二分查找)
  7. openlayer右键菜单_OpenLayers添加右键菜单
  8. *第八周*数据结构实践项目一【建设顺序串算法库】
  9. linux常用命令之文件操作
  10. 传感器实验——超声波避障小车
  11. 微型计算机中央处理器又称为,微处理器又称为什么
  12. SCI期刊图片分辨率与清晰度修改,以及拼图
  13. java 变量 英文_Java中的字符类型变量无论是中文,英文还是数字,都是占4字节。...
  14. 即日起,发放三种勋章公告。
  15. 第四平方和定理,用c语言实现
  16. 汽车加油问题贪心算法c语言,汽车加油问题之贪心算法(全面分析)
  17. 三网合一我们该做些什么?
  18. BB10 NDK Cascades 框架简介和QT使用教程(与Nokia Symbian QT的区别)
  19. 建立forumnuke 论坛.
  20. 示波器 - 相关术语介绍

热门文章

  1. 【Docker系列】Docker的网络
  2. (七)VBS变量、数组使用
  3. html 图片转换成word,在Word中通过把编辑的图片另存为HTML文件实现转换图片
  4. 让Oracle高效并行执行的13个必备知识点
  5. 班级优化大师显示网络或服务器异常,希沃班级优化大师常见问题总汇
  6. 破解浏览器主页被锁定在毒霸网址大全的问题
  7. Asp.net 中将文字写入图片中
  8. Java 程序员必备的辅助开发神器(2022 年版),建议收仓
  9. 【开发随记】【提效】工作习惯那些事系列之一——To-Do List
  10. 【装机必看】CPU该怎么选