一.概述

  在物理层之间相互通信必须保护资源,需要实现身份验证和授权,通常针对同一个用户存储。对于资源安全设计包括二个部分,一个是认证,一个是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社区版以管理用户和配置

  

  参考文献

     IdentityServer4官方文档介绍 

转载于:https://www.cnblogs.com/MrHSR/p/10683044.html

asp.net core系列 53 IdentityServer4 (IS4)介绍相关推荐

  1. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  2. asp.net core系列 40 Web 应用MVC 介绍与详细示例

    一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...

  3. asp.net core 系列 19 EFCore介绍

    asp.net core 系列 19 EFCore介绍 原文:asp.net core 系列 19 EFCore介绍 一.概述 目前最新的EF Core版本是3.0,最稳定的EF Core版本是2.2 ...

  4. asp.net core系列 38 WebAPI 返回类型与响应格式--必备

    一.返回类型 ASP.NET Core 提供以下 Web API Action方法返回类型选项,以及说明每种返回类型的最佳适用情况: (1) 固定类型 (2) IActionResult (3) Ac ...

  5. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

    原文:5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢 ...

  6. ASP.NET CORE系列【一】搭建ASP.NET CORE项目

    原文:ASP.NET CORE系列[一]搭建ASP.NET CORE项目 为什么要使用 ASP.NET Core? NET Core 刚发布的时候根据介绍就有点心里痒痒,微软的尿性都懂的,新东西bug ...

  7. asp向不同的用户发送信息_【asp.net core 系列】 1 带你了解一下asp.net core

    0. 前言 这是一个新的系列,名字是<http://ASP.NET Core 入门到实战>.这个系列主讲http://ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我 ...

  8. .ne中的控制器循环出来的数据如何显示在视图上_【asp.net core 系列】3 视图以及视图与控制器...

    0.前言 在之前的几篇中,我们大概介绍了如何创建一个http://asp.net core mvc项目以及http请求如何被路由转交给对应的执行单元.这一篇我们将介绍一下控制器与视图直接的关系. 1. ...

  9. asp.net core系列 67 Web压力测试工具WCAT

    asp.net core系列 67 Web压力测试工具WCAT 原文:asp.net core系列 67 Web压力测试工具WCAT 一.介绍 最近搭建了一套CQRS框架,需要在投入开发前,进行必要的 ...

最新文章

  1. mysql多源复制脚本_Mysql多源复制
  2. HaaS 物联网极客大赛来了!奖金丰厚等你来!
  3. python函数参数为类对象_将Cython类对象作为参数传递给C函数
  4. Linux服务器的eth,linux做服务器安装两块网卡问题????
  5. C# 构造函数base()实例演示
  6. [转帖]我们是OIer、
  7. NSGA-II的算法介绍
  8. html 简单动画效果,HTML-简单动画
  9. 家庭宽带光猫改桥接模式教程-淇云博客
  10. Swift 圆形进度条
  11. nandflash地址的物理地址,逻辑地址,spare地址等理解
  12. Vs2008调试慢的问题
  13. Axure 放大与缩小
  14. PMP证书怎么续证?PDU要怎么获得?超过有效期证书就作废了吗?
  15. 跨境电商「独角兽」融资40亿+,这家公司是怎么做增长的?
  16. python 检测直线 交点_OpenCV-Python教程(9、使用霍夫变换检测直线)
  17. python文件夹操作指令
  18. python画图小动物_如何用python画简单的动物
  19. 一言 源码 android,Android - 一言的简单实现
  20. Linux基础命令及常用快捷键

热门文章

  1. (完全解决)Precision and F-score are ill-defined for being 0.0 in labels with no predicted samples.
  2. 光辉岁月:人工智能的那些人和事(1)
  3. 口罩巨头挑战“量子霸权”,3个月造出的『最强量子计算机』靠谱不?
  4. 机器学习奠基人Michael Jordan:下代技术是融合经济学,解读2项重要进展
  5. 从全球最赚钱的20家公司,我们可以发现什么?
  6. 脑科学与AI要想融合发展,目前来说仍很困难
  7. 如何成为技术大牛?难也不难
  8. 壕!阿里开工红包惊人,最高 1000 万,有人却只收到一杯白开水
  9. 中芯国际再曝内讧,联席 CEO 梁孟松愤然辞职
  10. MySQL引擎特性GIS-R-TREE