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实现,并且简单 ...
随机推荐
- 我写的python代码的规则
1.Python文件的命名: 采用每个单词的首字母大写,不使用下划线 2.Python类的命名: 采用每个单词的首字母大写,不使用下划线 3.Python包名的命名:采用每个单词都是小写,不使用下划线 ...
- 定制炫彩界面:duilib与MFC 的对比
duilib是以DirectUI为技术原理开发的一款轻量级Windows桌面UI库,使用XML来描述界面风格,界面布局,可以很方便的构建高效,绚丽的,非常易于扩展的界面.从而很好的将界面和逻辑分离,同 ...
- Python_语法和界面设计
http://www.runoob.com/python/python-gui-tkinter.html http://www.python-course.eu/python_tkinter.php
- java定时任务调度-Timer(1)
一.定义 有且仅有一个后台线程对多个业务线程进行定时定频率的调度 二. Timer ----> Timer Task (中有run();方法) 通过 new Timer().schedul ...
- AbstractQueuedSynchronizer原理及代码分析
一.AQS简介 AbstractQueuedSynchronizer(AQS)是java.util.concurrent并发包下最基本的同步器,其它同步器实现,如ReentrantLock类,Reen ...
- 一分钟告诉你究竟DevOps是什么鬼?
历史回顾 为了能够更好的理解什么是DevOps,我们很有必要对当时还只有程序员(此前还没有派生出开发者,前台工程师,后台工程师之类)这个称号存在的历史进行一下回顾. 如编程之道中所言: 老一辈的程序员 ...
- Hibernate入门----配置文件
一.Hibernate简介 hibernate是一个开源的,轻量级的,持久成ORM框架. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数 ...
- 注解@EnableDiscoveryClient,@EnableEurekaClient的区别
SpringCLoud中的"Discovery Service"有多种实现,比如:eureka, consul, zookeeper. 1,@EnableDiscoveryClie ...
- InnoDB基本特性
Ⅰ.double write 目的:保证数据写入的可靠性 小知识: 什么是partial write? 16k的page只写入了4k,6k,8k,12k就断掉了的情况 corrupt的page就是pa ...
- mysql可视化工具下载地址2017.6.27
https://www.baidu.com/s?tn=90117497_hao_pg&usm=1&wd=navicat+for+mysql&ie=utf-8&rsv_r ...