IdentityServer4 更新了开源协议,曾经想替换它,不在使用IdentityServer4 ,但是后来,研究来研究去,发现IdentityServer4 的功能实在是强大,设计体系完整,随着最后版本的升级,现在 IdentityServer4 已经可以在.Net Core 6.0 环境中进行部署使用了。基于中小型项目快速开发搭建的需要,还是有必要对IdentityServer4 的使用做一次 总结。

  首先需要安装一下必要的Nuget 支持包,如下图所示,本示例采用的SQL Server 服务器,安装的是EFCore 最新的版本EFCore7.0,安装Nuget包就不在这里赘述了,基本.Net 开发人员都会的。

  

  安装必要的Nuget 包后,需要对IdentityServer4 在程序主机启动的时候,进行注册配置,这个启动程序的配置至关重要,也是 IdentityServer4 配置里面最核心的部分,如下图所示。里面需要配置一下 IdentityServer4 的Token 颁发策略,同时需要对 IdentityServer4 的PersistedGrantDbContext 序列化Token库,ConfigurationDbContext 配置信息库进行配置。IdentityServer4 的加密签名Provider 可以按照其接口协议,采用数字证书签名,也可以采用非对称加密RSA 生成的公私钥形式进行签名。本示例采用了RSA生成的私钥进行的IdentityServer4  加密技术。

  

  IdentityServer4 可以标准的OpenID Connect and OAuth 2.0认证方式,但中小型项目中,更青睐自定义的认证方式,这个时候,就需要实现 IExtensionGrantValidator 这个接口,进行认证方式扩展,具体实现也是非常简单的,如下图所示。实现完逻辑后,在应用程序主机的启动时候,进行注册,.AddExtensionGrantValidator<IdentityPasswordValidator>(),上面的贴图也有该示例。

  

  IdentityServer4 做好了这些后,还需要做一个数据库的初始化操作,方便IDS服务的快速的部署,也是提高程序的完整性。这个其实也很简单,利用EFCore 的强大的Migration 功能,把 PersistedGrantDbContext ,ConfigurationDbContext ,和自定义的DBContext 进行初始化封装,同时,可以对IdentityServer4  里面对 ApiScopes,Clients,IdentityResources,ApiResources 等配置资源进行动初始化的配置。这个配置也可以通过安装IdentityServer4.Admin.UI 包的形式,通过界面进行配置。但对于中小型项目,基本配置一次,很少进行调整,因此,我们在这里,通过代码进行了初始化配置这个方案。IdentityServer4 的整体配置见下图。

  

  做完这些开发配置后,我们就可以使用 IdentityServer4 为我们提供的认证授权服务了。

  

企业应用架构研究系列二十五:IdentityServer4 认证服务搭建的更多相关文章

  1. 企业应用架构研究系列二十八:身份认证 Beginning Out With IdentityServer4

    在.Netcore 技术栈中,一直在使用了开源组件IdentityService4进行身份管理,其功能的强大和易用性的确很受开发者喜欢,但是最近其开源组织Duende Software 开始对其进行商 ...

  2. 企业应用架构研究系列二十六:信号量SemaphoreSlim与Semaphore

    在进行多线程程序的开发和设计的过程中,不可避免的需要引入semaphore信号量这个组件,这是.net框架提供的一个对多线程计数互斥的方案,就是允许指定的线程个数访问特定的资源而增加的 一个" ...

  3. 企业应用架构研究系列二:MSF&Scrum 项目管理

    从业软件项目这么多年,在企业应用开发项目中,项目能否成功,是否能按照项目计划有效的推进,是有很强的一套项目管理理论.最早的时候,接触的项目管理的方法论就是微软的MSF(Microsoft Soluti ...

  4. 企业应用架构研究系列二十七:Vue3.0 之环境的搭建与Vue Antd Admin探索

    开发前端需要准备一些开发工具,这些工具怎么安装就不详细描写了,度娘一些很多很多.主要把核心的开发工具列表一些,这些资源也是非常容易找到和安装的. Node 安装:https://nodejs.org/ ...

  5. 企业应用架构研究系列十九:Docker开发环境

    软件行业流行这样一个说法,由于Docker 技术的成熟和该技术被广大厂商的普遍应用,成就了微服务领域的快速成长,衍生了云原生技术和公有云的进一步推广.我个人认为Dockers 技术.微服务技术.云原生 ...

  6. SSE图像算法优化系列二十五:二值图像的Euclidean distance map(EDM)特征图计算及其优化。

    Euclidean distance map(EDM)这个概念可能听过的人也很少,其主要是用在二值图像中,作为一个很有效的中间处理手段存在.一般的处理都是将灰度图处理成二值图或者一个二值图处理成另外一 ...

  7. BizTalk开发系列(二十五) SQL Adapter

    SQL Server 是.NET开发的首选数据库.当然开发BizTalk应用程序很多也离不了SQL Server.针对SQL Server的数据操作BizTalk 提供了SQL Adapter作为与数 ...

  8. Web 前端开发人员和设计师必读文章推荐【系列二十八】

    <Web 前端开发精华文章推荐>2014年第7期(总第28期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  9. Web 开发人员和设计师必读文章推荐【系列二十九】

    <Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  10. Web 前端开发人员和设计师必读精华文章【系列二十六】

    <Web 前端开发精华文章推荐>2014年第5期(总第26期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

随机推荐

  1. Java登录专题-----创建用户(一)

    Java登录专题-----创建用户(一) 我来填坑了 创建用户 入参 应该包括: 用户姓名,用户密码,用户手机号,用户所属机构 用户版本号,角色id 出参: 没有 数据结构: JavaBean    ...

  2. js排序的基础原理理解

    在了解数组排序前,我们先了解下如何交换两个数字的位置 假设我们有这么一个数组 var arr=[1,2,3] 我们想交换1和3两个的位置我们该如何做呢? 最简单的肯定是手动赋值,如下 var arr= ...

  3. Apple Low Power DisplayPort(ALP_DP)学习随笔

    edp是PC内置显示接口的主流标准,主用于笔记本电脑或PAD上,普遍用于中大尺寸PANEL. 系统架构如下: apple 的ALP_DP 源于edp 1.4(edp1.4又是源于DP V1.2a版本) ...

  4. JAVA开发搞了一年多的大数据,究竟干了点啥

    JAVA开发搞了一年多大数据的总结 ​ 2021年7月份加入了当前项目组,以一个原汁原味的Java开发工程师的身份进来的,来了没多久,项目组唯一一名大数据开发工程师要离职了,一时间一大堆的数据需求急需 ...

  5. Dubbo-聊聊通信模块设计

    前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...

  6. JS数据结构与算法-栈结构

    一.认识栈结构 栈也是一种非常常见的数据结构,并且在程序中的应用非常广泛 数组 我们知道数组是一种线性结构,并且可以在数组的任意位置插入和删除数据. 但是有时候,我们为了实现某些功能,必须对这种任意性 ...

  7. Go语言核心36讲05

    你已经使用过Go语言编写了小命令(或者说微型程序)吗? 当你在编写"Hello, world"的时候,一个源码文件就足够了,虽然这种小玩意儿没什么用,最多能给你一点点莫名的成就感. ...

  8. HDLBits答案——Verification: Reading Simulations

    1 Finding bugs in code 1.1 Bugs mux2 module top_module ( input sel, input [7:0] a, input [7:0] b, ou ...

  9. (C++) C++ new operator, operator new 及 placement new (待整理)

    https://blog.csdn.net/songthin/article/details/1703966 https://cplusplus.com/reference/new/operator ...

  10. Python-OpenCV的安装及学习资料

    Conda环境安装 OpenCV pip install opencv-python opencv-contrib-python -i https://mirrors.aliyun.com/pypi/ ...