【.NET Core项目实战-统一认证平台】开篇及目录索引

从本文开始,我们正式进入项目研发阶段,首先我们分析下统一认证平台应该具备哪些功能性需求和非功能性需求,在梳理完这些需求后,设计好系统采用的架构来满足已有的需求和未来的扩展应用。

1 功能性需求

统一认证平台应该具备以下基本功能,本文只是抛砖引玉,我只列出后续课程会讲到的相关内容的需求,不会详细的设计功能和需求,详细的功能需求可在此基础上根据项目需要自己扩充。

统一授权

可以为不同的业务系统提供一套标准、安全、可靠的授权方式,减少重复编码工作,也可有效整合公司内部团队使用技术架构不统一造成后期整合困难的问题。

身份认证

用户访问各业务系统时,提供用户访问的身份认证工作,校验身份的合法性。

单点登录

用户在认证平台通过认证后,可直接访问已授权的所有应用系统,实现不同应用系统的身份认证共享,从而达到多应用系统的单点登录。

扫码登录

对于安全性要求较高的应用,可能对用户身份进行二次认证,其中扫码登录就是一种认证方式,后期会单独列篇章在讲解扫码登录的实现。

2 非功能性需求

兼容性

系统设计时需要考虑到兼容性问题,考虑到后期接入的客户端的不确定性,设计时应满足采用统一标准所有客户端均可接入。

扩展性

系统设计时需要考虑到系统的可扩展性,随着接入应用的增多,系统也要支持横向扩展来满足高并发的需求。

安全性

系统设计时需要考虑系统应用的安全性,从数据安全到传输安全,保证认证平台安全稳定运行。

3 系统初步架构

根据以上需求,形成初步的系统架构,后续的课程会围绕此架构的基础上进行讲解,并一步一步来实现所有的功能。

通过此微服务架构,我们可以很好的对项目进行扩展应用,随后我们会发现有几个问题需要解决。

  • 1、网关的功能及实现?

    网关应该具备路由、认证、鉴权、限流、熔断、缓存、监控等一系列功能,所有的请求都优先进入网关,他是整个应用程序的基石,所以网关应该满足横向扩展的需求来应对未来的请求压力。那如何实现这个网关呢?大名鼎鼎的Ocelot就派上用场了,开源地址(https://github.com/ThreeMammals/Ocelot),后续的网关功能实现都是基于Ocelot的基础上进行扩展实现,如有不熟悉的,可以先自己查看Ocelot相关的文档。

  • 2、授权和认证的功能及如何实现?

    如何实现标准、安全、可扩展的认证模块,这块就靠我们另外一个开源项目在解决我们的问题,Identity Server 4,这个组件基本能满足我们常用的应用,基本的使用方法可参考园友们的基础教程,后续的应用会就满足我们业务需求需要改造的部分进行详细介绍。

  • 3、如何实现服务注册中心?

    应用中会结合Consul集群和.Netcore服务,实现服务的自动注册、移除、监控、通知等一系列功能。

  • 4、为什么要搭载配置中心及如何实现?

    一旦项目使用分布式架构,面临的最大的问题是每次发布都要修改项目的配置信息,想象一下如果我们有100个服务,配置信息一致,需要修改100次,天哪。漏了百八十个忘了改也正常,这次我们就需要把配置信息进行独立管理,Apollo闪亮登场.

4 写在最后

后续的文章将围绕我们提出的4个问题来一个一个实现,下一篇我们将从网关这块来讲解下如何设计出跟项目需求契合的网关,对于当前未实现的部分如何进行改造。

【.NET Core项目实战-统一认证平台】第一章 功能及架构分析的更多相关文章

  1. 【.NET Core项目实战-统一认证平台】第十六章 网关篇-Ocelot集成RPC服务

    [.NET Core项目实战-统一认证平台]开篇及目录索引 一.什么是RPC RPC是"远程调用(Remote Procedure Call)"的一个名称的缩写,并不是任何规范化的 ...

  2. 【.NET Core项目实战-统一认证平台】第十五章 网关篇-使用二级缓存提升性能

    [.NET Core项目实战-统一认证平台]开篇及目录索引 一.背景 首先说声抱歉,可能是因为假期综合症(其实就是因为懒哈)的原因,已经很长时间没更新博客了,现在也调整的差不多了,准备还是以每周1-2 ...

  3. 【.NET Core项目实战-统一认证平台】第十四章 授权篇-自定义授权方式

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何强制令牌过期的实现,相信大家对IdentityServer4的验证流程有了更深的了解,本篇我将介绍如何使用自定义的授权方 ...

  4. 【.NET Core项目实战-统一认证平台】第十二章 授权篇-深入理解JWT生成及验证流程

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章介绍了基于Ids4密码授权模式,从使用场景.原理分析.自定义帐户体系集成完整的介绍了密码授权模式的内容,并最后给出了三个思考问题,本 ...

  5. 【.NET Core项目实战-统一认证平台】第十章 授权篇-客户端授权

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章介绍了如何使用Dapper持久化IdentityServer4(以下简称ids4)的信息,并实现了sqlserver和mysql两种 ...

  6. 【.NET Core项目实战-统一认证平台】第九章 授权篇-使用Dapper持久化IdentityServer4

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章介绍了IdentityServer4的源码分析的内容,让我们知道了IdentityServer4的一些运行原理,这篇将介绍如何使用d ...

  7. 【.NET Core项目实战-统一认证平台】第八章 授权篇-IdentityServer4源码分析

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何在网关上实现客户端自定义限流功能,基本完成了关于网关的一些自定义扩展需求,后面几篇将介绍基于IdentityServer ...

  8. 【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求

    [.NET Core项目实战-统一认证平台]开篇及目录索引 这篇文章,我们将从Ocelot的中间件源码分析,目前Ocelot已经实现那些功能,还有那些功能在我们实际项目中暂时还未实现,如果我们要使用这 ...

  9. 【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)

    [.NET Core项目实战-统一认证平台]开篇及目录索引 本篇将介绍如何扩展Ocelot中间件实现自定义网关,并使用2种不同数据库来演示Ocelot配置信息存储和动态更新功能,内容也是从实际设计出发 ...

随机推荐

  1. python 基础 ----- 变量

    ------  python注释 注释的作用:代码提示,运行时忽略不必要的代码 注释的三种方式: 1.“#” 单行注释 2.多行注释   三个单引号  和三个双引号都可以 注释的快捷键 Ctrl + ...

  2. Windows学习"Network Analysis in Python"

    原代码仓库的地址为 Network Analysis in Python. 主要按照里面的README.md 进行操作,全部仓库有100MB以上.考虑到数据比较大,再加上我对原笔记文件有修改,建议从我 ...

  3. AutoMapper 忽略某个字段

    以前要在定义中忽略 Mapper.CreateMap<Source, Destination>() .ForMember(dest => dest.SomeValuefff, opt ...

  4. ubuntu 环境下 安装虚拟环境

    sudo pip3 install virtualenv 安装虚拟环境 sudo pip3 instal virtualenvwrapper #安装虚拟环境扩展包 编辑home目录下面的.bashrc ...

  5. 通过url获取bitmap

    //通过Uri获取BitMap public static Bitmap getBitmapFromUri(Uri uri,Context context) { Bitmap bitmap = nul ...

  6. localhost换成127.0.0.1和本机IP打不开本地项目了的问题

    点击桌面右下角的小三角, iis express右键—>显示所有应用程序—>点击网站名称,配置文件路径,找到配置文件,以记事本打开, 按照configuration--system.app ...

  7. 1、背景介绍及移动云MAS平台 --短信平台

    目的: 刚开发完成一套短信平台以及一个Web端短信发送系统,短信平台耗时两个周.短信发送系统耗时两个多月,开发使用的技术没什么高科技含量,在此主要是记录下很多情况的处理方案,希望能让大家提出改善方案和 ...

  8. 关于接口测试工具postman与DHC介绍

    一.Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具.今天给大家介 ...

  9. Django实现文件的上传

    Django实现文件的上传 1.前端页面:使用file对象,读取文件对象传递到views中.需要设定enctype="multipart/form-data",表明不对字符进行编码 ...

  10. jqgrid content-type datatype

    jQuery('#jq2').jqGrid( { url: 'http://localhost:8080/api/RskPriceFactorTest/senario/0/detail', editu ...