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实现,并且简单 ...
随机推荐
- linux配置https站点
配置https站点呢,那就需要https证书,证书从何而来,花钱买?no,no,no,阿里有免费的,只是比较难发现,下面就图文解说一下怎么买免费的阿里https证书 首先阿里云,登录,购买链接———— ...
- td默认文字超出后显示..,点击tr时td文字显示完整
做项目时,产品提的需求,table表格里面,每一列限制文字超出宽度后显示省略号,等点击td时,文字显示完整,今天整理了一下代码,积累一下 备注:1.邮箱和网址,在td里面不会自动换行,需要增加word ...
- Beta 冲刺day2
1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:昨天主要是在确认需求方面花了一些时间,后来终于确认了企业自查风险模块的需求问题 今天解决的进度:根据昨天确认下来的需求,我们基本上完成了 ...
- Django+xadmin打造在线教育平台(九)
目录 在线教育平台(一) 在线教育平台(二) 在线教育平台(三) 在线教育平台(四) 在线教育平台(五) 在线教育平台(六) 在线教育平台(七) 在线教育平台( ...
- vim快捷键汇总
命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...
- ubuntu 命令整合1
一.linux命令基本格式 命令名[选项] [参数] 注意: 命令名区分字母大小写 命令名必须有 选项.参数可以没有,选项一般使用减号开头二.具体Linux命令 1.who 显示登录系统中的用户的信息 ...
- esayui扩展验证方法
下面是关于平时中积累的esayui扩展验证方法仅作记录: /**************************************************************** ...
- [Mysql]——通过例子理解事务的4种隔离级别(转)
SQL标准定义了4种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的. 低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. 一.事务隔离级别分类 第1级别:R ...
- sqlserver两种分页方法比较
-- 3000 page(从1开始) 10 pagesize -- 方法1(效率不高): SELECT TOP 10 * FROM [xxx].[oooo] WHERE id NOT IN (SELE ...
- tkinter中scale拖拉改变值控件(十一)
scale拖拉改变值控件 使用户通过拖拽改变值 简单的实现: import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya. ...