从壹开始 [ Id4 ] 之一║ 授权服务器 IdentityServer4 开篇讲计划书

哈喽大家周四好!时间过的很快,现在已经是三月份了,我的 IdentityServer4 教程也拖了一定的时间了,正好最近有精力学新东西了,主要中间被小伙伴要求写一个管理后台,目前1.0已经上线(《权限后台系统 1.0 正式上线》),平时也一直开发维护中,希望能达到更优吧。

开发之余,晚上的时候,一直慢慢的学习 Id4,经过了大概半个月的简单资料寻找和学习,对 Id4 有了初步的认识,发现随着不断地学习,其实也没有刚开始学的时候的那种莫名的恐惧感了(有些小伙伴应该会有和我一样的心情,就是初学一门技术的时候,内心总是很恐慌的,比如我当时学DDD(地址:《D3模式设计初探 与 我的计划书》),其实我认为我们恐慌的不是学不会,而是对学习动力的不自信,大胆的学就对了,哪怕最后只知道OAuth是啥,哪怕最后只会照着套模板,也是一种成功!)。

从今天起,我将慢慢的更新 IdentityServer4 系列,因为我还没有学习完,所以会一边学习一边开发,最后形成一个统一的服务项目,初步打算把所有开源的这些项目(Blog.Vue、Blog.tBug、Blog.Admin、DDD等,相关项目参看开源地址 https://github.com/anjoy8)都集中到这一个授权服务器上,我暂时取名为 Blog.IdentityServer ,正好有 vue/js 项目,也有 MVC 项目,{把这个系列写完,前后端分离就差不多了,我也不打算再写了},至于如何搭建仓库,如何多项目调用,这我先斟酌下,会在以后的文章中,一一说到,因为要用到 EFCore 来处理用户数据,我个人感觉这还是一个很实用的项目,毕竟这几个都是实实在在的有血有肉的工程,不只是一个简单的Demo,自己都可以拿来改改优化优化,直接用了(我这王婆卖瓜也是没谁了?)。

本文只是一个开篇讲,不会涉及到内容知识点,有很多小伙伴都是一直看我的文章的,特别是看过我写的JWT 微软官方自带授权认证的《JWT授权》,如果之前的你能看懂,或者八成懂,那么这个系列肯定也能,如果以前的都看不懂,(⊙﹏⊙),只能说咱们缘分太浅?。

废话不多说,先把我这两周的小成果展示下,当然,现在很low,以后会各种优化和改进,预计会有十篇文章,

故事背景

这个是我的第一个 Vue.js 项目 Blog.Vue,(长的很丑,我决定趁着这个机会,把这个美化一下,毕竟我也是看脸的,先用这个练练手,其他的再慢慢更新授权),这个项目首页不需要登录,但是详情页需要用户登录,之前我是走的 Blog.Core 很普通的登录,那以后全部会走 Blog.IdentityServer 统一授权服务器了,请注意是两个端口/域名(Vue是6688端口,Id4是5002端口):

640?wx_fmt=png

可能你会感觉很简单,不就是一个客户端跳转到授权服务器嘛,然后登录了再跳转过来,增加了个用户角色授权,额,我也感觉挺简单的,可是我一个月前真不是这么认为的,当时我感觉还是有点儿难度,现在看起来还可以,所以说,Id4想入门还是可以的,至于后期匹配的微服务了,API网关了,负载均衡了,嗯,来日方长。

1、源代码Github

授权服务:https://github.com/anjoy8/Blog.IdentityServer

资源服务:https://github.com/anjoy8/Blog.Core

客户端一:https://github.com/anjoy8/Blog.Admin

以后每一个项目修改完登录授权,这里就列举一个,争取把所有项目的授权都迁到 Id4 服务器上。

2、本系列文章一览

  • 01 ║ 授权服务器 IdentityServer4 开篇讲&计划书

  • 02 ║ 基础知识集合 & 项目搭建一

640?wx_fmt=png

1、先看看概念

我们通过查看官网,就看到官方很明显的定义(下文的必看文档中有官网地址):

IdentityServer4 is an OpenID Connect and OAuth 2.0 framework for ASP.NET Core 2.

IdentityServer是基于OpenID Connect协议标准的身份认证和授权程序,它实现了OpenID Connect 和 OAuth 2.0 协议。

同一种概念,不同的文献使用不同的术语,比如你看到有些文献把他叫做安全令牌服务(Security Token Service),
身份提供(Identity Provider),授权服务器(Authorization Server),IP-STS 等等。其实他们都是一个意思,目的都是在软件应用中为客户端颁发令牌并用于安全访问的。

IdentityServer有许多功能:

保护你的资源
使用本地帐户或通过外部身份提供程序对用户进行身份验证
提供会话管理和单点登录
管理和验证客户机
向客户发出标识和访问令牌
验证令牌

2、它有什么优点?

 640?wx_fmt=png

现在的应用开发层出不穷,基于浏览器的网页应用,基于微信的公众号、小程序,基于IOS、Android的App,基于Windows系统的桌面应用和UWP应用等等,这么多种类的应用,就给应用的开发带来的挑战,我们除了分别实现各个应用外,我们还要考虑各个应用之间的交互,通用模块的提炼,其中身份的认证和授权就是每个应用必不可少的的一部分。而现在的互联网,对于信息安全要求又十分苛刻,所以一套统一的身份认证和授权就至关重要。

优点:简单

因此,从实现者的角度来看,我在OAuth 2中看到的主要优点是复杂性降低。它不需要请求签名过程,这是不是很难,但肯定是fiddly。它大大减少了作为服务的客户端所需的工作,这是(在现代的,移动世界)你最想要最小化疼痛的地方。在服务器 – >内容提供者端的降低的复杂性使其在数据中心中更具可扩展性。

它将标准的一些扩展编码为OAuth 1.0a(如xAuth),现在广泛使用。

大多数的应用都如上所示,基本上都是通过客户端对API进行请求(浏览器、Web程序、本机应用程序)等。当你的项目到了一定得范围和大小之后,就有可能去使用Nginx,这个时候,也必须考虑站点的安全性,因为不能让你的核心业务信任外界任何的调用.当然还有的时候,我们的拥有自己的一套API,为自己服务进行使用,我们不想让别人来调用我们的,这个时候也可以进行使用。

640?wx_fmt=png

这里引用下圣杰的图,圣杰是我知道为数不多的,知识和Code都很强的大佬,曾经有缘聊过两句。

1、用到了哪些知识点

正如上边的结构脑图中显示的,大概就是这么多,可能你会感觉很多,开始你简单看一下,有些概念咱们在讲 JWT 授权的时候,都说过见过,甚至亲身用过,比如:JWT(以及其中的iss、sub、expires等等),Claim, Authentication,access_token,还有所谓的API Resource资源。

  • OAuth 2.0 简介  ?

  • OpenID 和 OAuth 的区别  ?

  • 客户端授权模式(Client Credentials)? 

  • 密码授权模式(Resource Owner Password Credentials)?

  • 授权码授权模式(Authorization Code Flow,MVC调用)?

  • 简化授权模式-OpenID(Implicit Flow,JS/Vue 客户端调用)?

  • 混合模式-OpenID & OAuth(Hybrid Flow,角色+策略授权)?

  • 集成 ASP.NET Core Identity and EntityFramework Core  ?

  • 单点登录  ?

  • 刷新登录 RefreshToken  ?

  • 外部登录(比如QQ、Google、Github等)?

2、部分结构/流程图

 640?wx_fmt=png

(Authorization Code)

 640?wx_fmt=png

(使用 OpenID Connect 的身份验证流)

3、必看文档

我一直坚信,只要把官方文档啃透了,肯定能学会,至少会七成,好多人都没有养成这个习惯,就直接看Demo了,希望大家还是先看看文档。

IdentityServer4:https://identityserver4.readthedocs.io/en/latest/

OAuth2.0:https://oauth.net/2/

OpenID Connect:https://openid.net/connect/

1、https://docs.azure.cn/zh-cn/active-directory/develop/authentication-scenarios

2、https://github.com/IdentityServer/IdentityServer4.Samples

3、IdentityServer4 for OpenID Connect 和 OAuth 2.0

4、identity server 4

 以后会上传本系列 Id4 仓库...

原文地址:https://www.cnblogs.com/laozhang-is-phi/p/10483922.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 泛型,详细介绍

今天的文章是因为再给一个朋友讲这个的时候随手记录下整理出来的。说白了就是把前辈们曾经给我吹过的我又吹了出去。泛型:是C# FrameWork 2.0 时代 加入进来的,可以说对与Net开发人员来说泛型是无处不再的,喜欢看源码的同学,可能会…

P2257 YY的GCD

P2257 YY的GCD 题意&#xff1a; 求 1≤x≤N,1≤y≤M1 \leq x \leq N,1 \leq y \leq M1≤x≤N,1≤y≤M 且gcd(x, y) 为质数的 (x,y) 有多少对。 题解&#xff1a; 莫比乌斯反演 代码&#xff1a; #include <bits/stdc.h> #include <unordered_map> #define…

程序员修神之路--问世间异步为何物?

菜菜哥&#xff0c;今天天气挺热的&#xff0c;我都穿裙子了说吧&#xff0c;什么事&#xff1f;&#xff1f;苦笑一下..... 老大说把所有的接口都改成异步操作异步好呀&#xff0c;最少比同步能提高吞吐量异步是怎么回事呢&#xff0c;能讲讲不&#xff1f;来&#xff0c;凑近…

P3455 [POI2007]ZAP-Queries

P3455 [POI2007]ZAP-Queries 题意&#xff1a; 求满足1≤x≤a,1≤y≤b1\leq x\leq a,1\leq y\leq b1≤x≤a,1≤y≤b&#xff0c;且gcd(x,y)dgcd(x,y)dgcd(x,y)d的二元组(x,y)的数量 题解&#xff1a; 莫比乌斯反演板子 代码&#xff1a; // Problem: P3455 [POI2007]ZAP…

.NET Core 使用MailKit发送电子邮件

点击上方蓝字关注“汪宇杰博客”发送邮件通知的功能在各种系统里都很常见。我的博客也能在有新评论、新回复&#xff0c;或者文章被其他网站引用时向管理员发送邮件。那么在.NET Core里&#xff0c;如何实现发送电子邮件呢&#xff1f;准备工作我的案例会利用微软outlook.com的…

P3327 [SDOI2015]约数个数和

P3327 [SDOI2015]约数个数和 题意&#xff1a; 设 d(x) 为 x 的约数个数&#xff0c;给定 n,m&#xff0c;求 ∑i1n∑j1md(i,j)\sum_{i1}^{n}\sum_{j1}^{m}d(i,j)∑i1n​∑j1m​d(i,j) 题解&#xff1a; 代码&#xff1a; // Problem: P3327 [SDOI2015]约数个数和 // Conte…

C#并行编程(6):线程同步面面观

理解线程同步线程的数据访问在并行&#xff08;多线程&#xff09;环境中&#xff0c;不可避免地会存在多个线程同时访问某个数据的情况。多个线程对共享数据的访问有下面3种情形&#xff1a;多个线程同时读取数据&#xff1b;单个线程更新数据&#xff0c;此时其他线程读取数据…

P2522 [HAOI2011]Problem b

P2522 [HAOI2011]Problem b 题意&#xff1a; 对于给出的 n 个询问&#xff0c;每次求有多少个数对 (x,y)&#xff0c;满足 a≤x≤b&#xff0c;c≤y≤d&#xff0c;且 gcd(x,y)k&#xff0c;gcd(x,y) 函数为 x 和 y 的最大公约数。 题解&#xff1a; 这个题跟P3455 [POI20…

.NET Core/Framework 创建委托以大幅度提高反射调用的性能

都知道反射伤性能&#xff0c;但不得不反射的时候又怎么办呢&#xff1f;当真的被问题逼迫的时候还是能找到解决办法的。为反射得到的方法创建一个委托&#xff0c;此后调用此委托将能够提高近乎直接调用方法本身的性能。&#xff08;当然 Emit 也能够帮助我们显著提升性能&…

[省选联考 2020 A/B 卷] 冰火战士(树状数组上二分)

文章目录problemsolution(10pts)code(10pts)solution(30pts)code(30pts)solution(60pts)code(60pts)solution(100pts)code(100pts)problem luogu-P6619 一场比赛即将开始。 每位战士有两个属性&#xff1a;温度和能量。 有两派战士&#xff1a; 冰系战士的技能会对周围造成…

P1829 [国家集训队]Crash的数字表格 / JZPTAB

P1829 [国家集训队]Crash的数字表格 / JZPTAB 题意&#xff1a; 求∑i1n∑j1mlcm(i,j)\sum_{i1}^{n}\sum_{j1}^{m}lcm(i,j)∑i1n​∑j1m​lcm(i,j) 1<n<m<1e7 结果mod20101009 题解&#xff1a; 跟这个题P3911 最小公倍数之和很相近&#xff0c;但是本题数据范围大…

C# 跨设备前后端开发探索

每个人都拥有 好奇心&#xff0c;好奇心驱使着我们总是去尝试做一些有趣的事情。带起你的好奇心&#xff0c;本文将使用 C# 开发各种各样好玩的东西。每个人都拥有 好奇心&#xff0c;好奇心驱使着我们总是去尝试做一些有趣的事情。比如这件事&#xff1a;在好奇心的驱使下&…

Docker最全教程之Python爬网实战(二十二)

Python目前是流行度增长最快的主流编程语言&#xff0c;也是第二大最受开发者喜爱的语言&#xff08;参考Stack Overflow 2019开发者调查报告发布&#xff09;。笔者建议.NET、Java开发人员可以将Python发展为第二语言&#xff0c;一方面Python在某些领域确实非常犀利&#xff…

P2870 [USACO07DEC]Best Cow Line G

P2870 [USACO07DEC]Best Cow Line G 题意&#xff1a; 给你一个字符串&#xff0c;每次从首或尾取一个字符组成字符串&#xff0c;问所有能够组成的字符串中字典序最小的一个。 题解&#xff1a; 现在要组成字典序最小的&#xff0c;那我们每次就尽可能取小的 我们从两端开…

中间件是什么?在.NET Core中的工作原理又是怎样的呢?

本文出自《从零开始学ASP.NET CORE MVC》推荐文章&#xff1a;ASP.NET Core appsettings.json文件ASP.NET Core 中的中间件(Middleware)在这个视频中&#xff0c;我们将了解&#xff0c;ASP.NET Core 中的中间件是 什么&#xff1f;中间件很重要&#xff0c;尤其是在你想当架构…

从高德采集最新的省市区三级坐标和行政区域边界,用js在浏览器中运行

本文描述的是对国家统计局于2019-01-31发布的《2018年统计用区划代码和城乡划分代码(截止2018年10月31日)》中省市区三级的坐标和行政区域边界的采集。本文更新&#xff08;移步查阅&#xff09;&#xff1a;19-04-15 新采集了2018的省市区三级的坐标和行政区域边界数据csv格式…

Display Substring

Display Substring 题意&#xff1a; 一个长度为n的字符串&#xff0c;每个字符有自己的价值&#xff0c;求第k小价值的不重复子串价值 题解&#xff1a; 首先众所周知&#xff0c;所有子串都可以用后缀的前缀来表示&#xff0c;这就和后缀数组扯上关系了 我们可以直接二分…

使用 DotNet CLI 创建自定义的 WPF 项目模板

描述当我们安装完 DotNetCore 3.0 版本的 SDK 后&#xff0c;我们就可以创建基于 DotNetCore 的 WPF 项目模板&#xff0c;通过如下 CLI 可以方便快捷的创建并运行我们的项目&#xff1a;Copydotnet new wpf -n WpfAppcd WpfAppdotnet restoredotnet run做过 WPF 开发的朋友都知…

[翻译] ASP.NET Core 利用 Docker、ElasticSearch、Kibana 来记录日志

一步一步指导您使用 ElasticSearch, Kibana, ASP.NET Core 2.1 和 Docker 来记录日志在本教程中&#xff0c;我将向您展示如何启动和运行 ElasticSearch&#xff0c;Kibana 和 ASP.NET Core 2.1在开始之前&#xff0c;让我们来看看 ElasticSearch&#xff0c;Kibana 和 Serilog…

【学习笔记】WQS二分详解及常见理解误区解释

文章目录应用分析算法分析WQS二分精髓的两点细节&#xff08;博客重点&#xff01;&#xff09;真题分析[国家集训队]Tree Ⅰ忘情星际广播网上很多博客写得模模糊糊的&#xff0c;对我这个新手可是一点都不友好。 昨天一天都在研究这个东西&#xff0c;分享一下自己的拙见。 百…