asp.net core系列 53 IdentityServer4 (IS4)介绍
一.概述
在物理层之间相互通信必须保护资源,需要实现身份验证和授权,通常针对同一个用户存储。对于资源安全设计包括二个部分,一个是认证,一个是API访问。
1 认证
认证是指:应用程序需要知道当前用户的身份时,需要进行身份验证,确定用户是否有效。最常见的身份验证协议是SAML2p,WS-Federation、OpenID Connect。SAML2p是最受欢迎和最广泛部署的。OpenID Connect是三者中的最新产品,被认为有最大潜力。。
2 API访问
对API访问是:用户对资源的访问,以api的形式来访问资源,涉及到资源授权。
3 OAuth2 介绍
OAuth2是一种协议,全称(Open Authorization),是为用户资源的授权提供了一个安全的、开放而又简易的标准。互联网很多服务如Open API都提供了OAUTH认证服务。为桌面程序、手机端或web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。OAuth2协议特定:
(1)简单:不管是OAUTH服务提供者还是应用开发者,都很易于理解与使用。
(2)安全:没有涉及到用户密钥等信息,更安全更灵活。
(3)开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH。
4 OIDC介绍
OIDC是指OpenID Connect,是基于OAuth 2.0规范的可互操作的身份验证协议。是用 API 进行身份交互的框架。它使用简单的REST / JSON消息流来实现。OIDC实现了用户验证跨越物理层,无需管理密码文件(密钥)。
OpenID是Authentication,即认证。对用户的身份进行认证,判断其身份是否有效。
OAuth是Authorization,即授权。 对用户允许访问哪些资源的授权。 授权要在认证之后进行,只有确定用户身份才能授权。
OpenID Connect是“认证”和“授权”的结合。是对OAuth 2.0之上的扩展。这样对于两个基本的安全问题,即身份验证和API访问,被合并为一个协议,通常只需一次往返安全令牌服务。
5 IdentityServer4 介绍
IdentityServer4 是适用于ASP.NET Core,集成了OpenID Connect和OAuth 2.0的框架。在现实开发中,项目涉及到多种物理层架构,它们是多进程的方式部署到不同的服务器上。比如Web、移动、桌面、服务等物理层架构。也有可能是第三方的程序。 这些物理层之间的通信需要涉及到授权和身份认证。最常见的互动包括:
(1) 浏览器与Web应用程序通信。
(2) Web应用程序与Web API进行通信(可能都是自己的,也有可能是第三方提供)。
(3) 服务器的应用程序与Web API通信(比如windows服务与Web API)。
(4) Web API与Web API进行通信(可能都是自己的,也有可能是第三方提供)。
在没有使用安全令牌服务时,多物理层之间通信,看起来像下面这样:

加了IdentityServer4重构应用程序后,使用了安全令牌服务,产生的体系结构和协议如下所示:

6 IdentityServer功能包括:
(1)保护你的资源(资源可以理解包括权限,比如是否有增、删、改、查的权限)
(2)使用本地帐户存储或外部身份提供程序对用户进行身份验证
(3)提供会话管理和单点登录
(4)管理和验证客户端
(5)向客户发放身份和访问令牌
(5)验证令牌
7 名词术语
用户是指:通过注册成功后, 登录来访问资源的人。比如:会员,系统管理员等。
客户端是指:向IdentityServer请求令牌的程序,用于验证用户(请求身份令牌)或访问资源(请求访问令牌)。如Web应用程序,本机移动或桌面应用程序,SPA,服务器进程等。
资源:使用IdentityServer保护资源,比如用户的身份数据或API。身份数据是关于用户的信息也称Claim声明, 例如姓名或电子邮件地址。API表示客户端要调用的功能如Web API。
身份令牌:是指身份验证过程,确实用户是否有效。即Authentication认证。
访问令牌:是指允许访问API资源。即Authorization授权。
8 nuget包安装
安装版本网址:https://www.nuget.org/packages/IdentityServer4/3.0.0-preview3.4
安装:Install-Package IdentityServer4
9 关于IdentityServer4的一些开源示例
https://identityserver4.readthedocs.io/en/latest/intro/packaging.html
下面是关于IdentityServer的源码和示例,其中IdentityServer4.Samples中有大量示例,学习从这里开始。
https://github.com/IdentityServer/
10 学习IdentityServer步骤
(1) 将IdentityServer添加到ASP.NET Core应用程序
(2) 配置IdentityServer
(3) 为各种客户发放令牌
(4) 保护Web应用程序和API
(5) 添加对基于EntityFramework的配置的支持
(6) 添加对ASP.NET身份的支持
(7) 添加AdminUI社区版以管理用户和配置
参考文献
asp.net core系列 53 IdentityServer4 (IS4)介绍的更多相关文章
- asp.net core系列 72 Exceptionless使用介绍
一.Exceptionless介绍 Exceptionless专注于.net平台提供实时错误和日志报告.主要包括:错误通知.智能分组异常.详细错误报告堆栈跟踪.支持离线.UI查看重要错误和确定优先级. ...
- asp.net core系列 65 正反案例介绍SOLID原则
一.概述 SOLID五大原则使我们能够管理解决大多数软件设计问题.由Robert C. Martin在20世纪90年代编写了这些原则.这些原则为我们提供了从紧耦合的代码和少量封装转变为适当松耦合和封装 ...
- 【目录】asp.net core系列篇
随笔分类 - asp.net core系列篇 asp.net core系列 68 Filter管道过滤器 摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫&q ...
- asp.net core 系列 18 web服务器实现
一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...
- asp.net core系列 40 Web 应用MVC 介绍与详细示例
一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...
- asp.net core系列 39 Web 应用Razor 介绍与详细示例
一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor. 这样开发Web包括了MVC框架和Razor框架.对于Razor来说 ...
- asp.net core系列 39 Razor 介绍与详细示例
原文:asp.net core系列 39 Razor 介绍与详细示例 一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor ...
- WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化
WPF中的常用布局 一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...
- Asp.net Core 系列之--5.认证、授权与自定义权限的实现
ChuanGoing 2019-11-24 asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了事件订阅/发布的eventbus整个流程,初探dapper ORM实现,并且简单 ...
随机推荐
- composer安装laravel指定版本
版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/qq_38125058/article/details/79126051 首先安装composer,附安 ...
- HBuilder 打包流程
1.运行HBuilder---百度搜索HBuilder,官网下载安装包,解压,运行HBuilder.exe.注册账号,并登陆 2.新建app---在左边右键,选择新建APP,或者,点击中间的新建app ...
- 团队项目第二阶段个人进展——Day4
一.昨天工作总结 冲刺第四天,分析完成后端处理的数据有主题,时间,地点,照片信息,前几个都是字符串类型,后一个是照片格式 二.遇到的问题 照片格式数据不知道怎么处理 三.今日工作规划 学习后端小程序后 ...
- 深入理解.net - 4.你必须知道的String
为什么要单独写string,主要是它太常用了,同时又太特殊了,特殊到CLR对它的处理都和其它对象不一样.简直可以称为VIP用户啊.本文并不是一篇介绍如何使用string的文章,而是旨在阐述string ...
- GPU渲染流水线的简单概括
GPU流水线 主要分为两个阶段:几何阶段和光栅化阶段 几何阶段 顶点着色器 --> 曲面细分着色器(可选)----->几何着色器(可选)----->裁剪-->屏幕 ...
- MySQL 各类日志文件介绍
日志文件 1.错误日志 ErrorLog 错误日志记录了MyQLServer运行过程中所有较为严重的警告和错误信息,以及MySQLServer每次启动和关闭的详细信息. 在默认情况下,系统记录错误日志 ...
- java基础 lang包 详细介绍
Java.javax和org.其中以java开头的包名是JDK的基础语言包,以javax开头的属 (org是organization的简写).而在JDK API中还包含了一些以com.sun开头的包名 ...
- strace详解及实战
详细参数: -c 统计每一系统调用的所执行的时间,次数和出错的次数等. -d 输出strace关于标准错误的调试信息. -f 跟踪由fork调用所产生的子进程. -ff 如果提供-o filename ...
- C++/C实现各种排序算法(持续更新)--冒泡排序,选择排序,归并排序
2018 3 17 今日总结一下C++中的排序算法: 1冒泡排序 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是 ...
- SSH概念及常用操作汇总
工作有一段时间了,经常用SSH登录远程机器,但对原理一直不是很了解,所以查阅了一些资料,写个小结. 一. SSH是什么? SSH的全称是Secure Shell, 是一种“用来在不安全的网络上安全地运 ...