Asp.net Core IdentityServer4 入门教程(一):概念解析
1、IdentityServer4 是什么
IdentityServer4 是使用 ASP.NET Core实现了OpenID和OAuth 2.0协议的身份认证框架;重复一遍,它是一个框架;框架决定它不是一个开箱即用的产品,需要根据自己的需求进行定制;同时也意味着更高的灵活性;
2、什么是OpenID和OAuth 2.0协议
对很多初学者来说(包括我自己),这个问题比较抽象,我还特定去搜索、了解、理解过,如果看完以下解析还是看不懂的话可以继续看这里;
按我的理解来说,他们的区别是:
OpenID
直接引用以上链接问答里的话“OpenID是Authentication,OAuth是Authorization”,Authentication就是鉴权;就是用一条url来证明这条url就是我;这句话怎么理解呢,比如:
A网站是提供OpenID的网站,你在A网站注册了OpenID;
B、C、D等是支持OpenID登录的网站;
现在你要登录B、C、D网站,你只需要在B、C或D网站填写A网站注册的OpenID,然后统一跳到A网站去验证;
验证成功后,会跳转回B、C、D网站,成功登录;
如果是用用户名登录的B、C、D网站的话,要分别准备3套用户名和密码;使用以上OpenID登录的方式、只需要注册A网站得到OpenID;
OAuth 2.0
OAuth是Authorization,就是授权;一字之差;比如:
我在A网站拥有一些资源(头像啊、照片啊都算资源),B网站要用他,然后我们不想给B网站账号密码,那怎么给他资源呢?OAuth就是做这个的,资源的授权;
打个比方,我的(用户)微信的微信头像存在微信 weixin.qq.com(服务提供方),然后京东(客户端)想要获取我的微信头像(资源);
那么京东会引导用户打开微信的授权页面:
用户点击授权,京东得到一个授权token,然后京东通过授权token获取我的微信头像;授权页面如下图。
以上就是一个典型的OAuth过程
OAuth 2.0是OAuth 1.0出现安全漏洞后修补了协议(2.0具体协议RC 6749)的一个版本,与概念是什么无关;
OAuth 2.0和OAuth 1.0不兼容;
3、IdentityServer4 可以用来做什么
这个对于我们初学者来说很重要,总体来说它可以:
(1)单点登录
web/app/wap等多种应用上的单点登录、退出;
(2)保护你的api接口
比如你们公司有多个部门,每个部门都会有多个自己业务系统的接口,这些业务的接口又分别给不同的部门调用,不同的部门对调用同一个业务的权限又不一样;这个时候IdentityServer4就很容易实现以上需求了;
(3)支持OpenID登录
IdentityServer4是支持OpenID登录的框架,比如谷歌是OpenID的提供者,登录谷歌就直接使用第二点提到的使用谷歌 OpenID登录就可以登录了;
(4)统一的登录处理逻辑
比如你们公司有有多个业务后台系统需要登录,每个后台单独使用一套用户名和密码将非常麻烦,这个使用IdentityServer4亦可轻松使用一套用户名密码登录各个业务系统;
(5)高度自由的定制
还用更多的使用场景,可自行发掘;
其他
官方文档
源码地址
Demo地址
晓晨大神IdentityServer4系列文章
Asp.net Core IdentityServer4 入门教程(一):概念解析的更多相关文章
- 观看杨老师(杨旭)Asp.Net Core MVC入门教程记录
观看杨老师(杨旭)Asp.Net Core MVC入门教程记录 ASP.NET Core MVC入门 Asp.Net Core启动和配置 Program类,Main方法 Startup类 依赖注入,I ...
- Asp.Net Core IdentityServer4 中的基本概念
一.前言 这篇文章可能大家会觉得很空洞,没有实际的实战东西,主要是自己整理出来的IdentityServer4 的一些概念性的东西:如果你对IdentityServer4有过一定的实战经验,可以跳过不 ...
- 005.Getting started with ASP.NET Core MVC and Visual Studio -- 【VS开发asp.net core mvc 入门】
Getting started with ASP.NET Core MVC and Visual Studio VS开发asp.net core mvc 入门 2017-3-7 2 分钟阅读时长 本文 ...
- .NET Core 快速入门教程
.NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基础开发环境的搭建.第一个.NET ...
- .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)
一.前言 本篇开发环境?1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview 二.安装 .NET Core SDK 1.下载 .NET Core下载地址 ...
- .NET Core快速入门教程 3、我的第一个.NET Core App (CentOS篇)
一.前言 本篇开发环境?1.操作系统:CentOS7(因为ken比较偏爱CentOS7)2.SDK版本:.NET Core 2.0 Preview 你可能需要的前置知识1.了解如何通过Hyper-V安 ...
- ASP.NET Core Web API 教程 - Project Configuration
ASP.NET Core Web API 教程 本系列文章主要参考了<Ultimate ASP.NET Core 3 Web API>一书,我对原文进行了翻译,同时适当删减.修改了一部分内 ...
- ASP.NET MVC 5 入门教程 (4) View和ViewBag
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-view.html 上一节:ASP.NET MVC 5 入门教 ...
- ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC ...
随机推荐
- echarts中的区域缩放组件dataZoom,主动触发选区缩放点击事件
options设置 toolbox: { // 工具栏 feature: { dataZoom : { // 选时间缩放功能 show : true, // show为true时,才能触发takeGl ...
- PCB差分线学习
问:何为差分信号? 答:通俗地说,就是驱动端发送两个等值.反相的信号,接收端通过比较这两个电压的差值来判断逻辑状态“0”还是“1”. 问:差分线的优势在哪? 答:差分信号和普通的单端信号走线相比,最明 ...
- (转)CentOS7中防火墙的基本操作
目录 1.firewalld简介 2.安装firewalld 3.运行.停止.禁用firewalld 4.配置firewalld 5 打开端口 学习apache安装的时候需要打开80端口,由于cent ...
- js判断pc还是移动端
if (!/windows phone|iphone|android/ig.test(window.navigator.userAgent)) { //pc }else{ //h5 }
- textarea--去掉空格的办法
我在初次用到textarea多行文本框时,遇到的问题是:默认出现了两行空格,如图: 代码是(错误的写法): 最后才发现,原来是: textarea标签是需要写在同一行,不能换行,正确的写法:
- vue table-tree 组件
最近接到一个需要使用table-tree开发 百度的一圈.什么的都有.感觉不怎么靠谱.最后找到一个感觉挺 huo shi 先附上demo和代码地址: 代码地址:https://github.com/s ...
- WinccFlexible 同一个项目创建多个connections
在一个WinccFlexible 项目中,可以创建多个通讯连接,以满足不同的接口要求. 但是需要在控制面板上 Set PG/PC Interface中添加新的连接,并绑定对应的网卡即可.
- idea git将多余的代码提交到本地,如何退回。
场景:代码commit到本地仓库,还没有push到远程仓库,这时要回退代码. 介绍下Reset Head中三种Reset Type类型: 1.Mixed(默认):它回退到某个版本,本地会保留源码,回退 ...
- 让webstorm里提示nodejs智能补全
webstorm里是默认没有nodejs只能提示的, 比如,输入requ到现在还不提示出require这个函数名,非常不方便. 设置方式: file --> setting -->edi ...
- 1、了解计算机与操作系统发展阶段 2、选择一个具体的操作系统,结合计算机与操作系统的发展阶段,详细了解其渊源、发展过程、趋势,整理成简洁美观的图文博客发布。 Windows Mac os x Unix Linux Android 等。
1.了解计算机与操作系统发展阶段 操作系统并不是与计算机硬件一起诞生的,它是在人们使用计算机的过程中,为了满足两大需求:提高资源利用率.增强计算机系统性能,伴随着计算机技术本身及其应用的日益发展,而逐 ...