The Big Picture

大多数现代应用看起来都像下面的样子:

大多数的交互是下面这样:

  • 浏览器与web应用之间的通信
  • web应用和web APIs之间的通信(这两者有时是独立的,有时是有用户参与的(openid connect))
  • 基于浏览器的应用和web APIs之间的通信
  • 原生应用(手机客户端等)与web APIs之间的通信
  • 基于服务端的应用和web APIs之间的通信
  • web APIs和web APIs之间的通信(这两者有时是独立的,有时是有用户参与的(openid connect))

通常每一层(前端的,中间层,后端的)都必须保护资源并实现认证和/或授权。而且都是针对同一个用户的存储来说。(实际上就是单点登录)

将这些基本安全功能外包给安全令牌服务(jwt),可以防止在这些应用程序和端点之间复制该功能。

重组应用以支持安全令牌服务会引入以下架构和协议:

注意这张图解释了上面大部分提到的术语,web应用,web APIs,等等。如果对上面属于有疑问的可以看这张图。

这样的设计将安全问题分为两个部分:

认证

当一个应用需要知道当前用户的身份时,认证这个东西就派上用场了。通常这些应用代表用户管理数据并且需要确保只处理当前用户被允许的数据。(使用这个)最普遍的例子是web应用,但是原生app和基于js的应用(angular、vue等这些大前端)同样需要认证。

最常见的认证协议包括SAMS2p,WS-Federation和OpenID Connect,SAMS2p是目前最流行的,并且应用最广泛的。

OpenID Connect是这里面提到的最新的,并且也被各大厂商认为是代表了未来的协议,因为它赋予了现代的应用最大的潜能。他从开始就考虑了移动应用的场景,并且对于API来说也是友好的。

访问API

应用有两个基本的途径来访问APIs--将应用本身作为身份标识(没有用户参与)。或者通过用户的身份标识(有用户参与)。有时这两个途径需要结合使用。

OAuth2是一个允许应用从安全令牌服务中请求access token的协议。然后,应用使用这个access token来和APIs交互。它(指安全令牌服务)减少了客户端应用程序和apis之间通信的复杂性,因为身份验证和授权可以集中处理。

OpenID Connect和OAuth2.0--更好的集成

OPenID Connec和OAuth2.0很像,实际上前者是后者的一个顶层的扩展。认证和访问API这两个基本的安全关注点被集中到了一个协议中,经常在安全令牌服务中进行一次往返。

我们相信在可预知的未来OpenID Connect和OAuth2.0的结合是保护现代应用最好的方案。IdentityServer4是对这两个协议的一个实现,并且经过高度的优化,以解决当今的移动应用、原生和web应用中的安全问题。

IdentityServer4可以做些什么

IdentityServer是一个中间件,它将兼容OpenID Connect和OAuth2.0的端点添加到任意的一个Asp.net core上面去。

通常情况下,你会创建(或者重用)一个包含登陆、登出页面(或许还有确认consen页面,这依赖于你的需求)的应用,并且IdentityServer中间件将一些必要的协议头添加到这个应用的上面,所以客户端应用可以使用这些标准的协议来与之交互。

宿主应用可以如你所愿很复杂,但是我们通常会推荐你的宿主应用应该只包含认证相关的UI来使你的受攻击面尽可能的减小。

IdentityServer4【Introduction】之概括的更多相关文章

  1. 读论文系列:Object Detection ECCV2016 SSD

    转载请注明作者:梦里茶 Single Shot MultiBox Detector Introduction 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层featur ...

  2. IdentityServer4【Introduction】之包和项目构建

    包和项目构建 IdentityServer包含了以下的nuget包: IdentityServer4 nuget | github 这个包包含了IdentityServer核心的组成部分,有对象模型, ...

  3. IdentityServer4【Introduction】之支持的规范

    支持的规范 identityserver实现了下面的规范 OpenID Connect OpenID Connect Core 1.0 (spec) OpenID Connect Discovery ...

  4. IdentityServer4【Introduction】之术语

    术语 在规范.文档和对象模型中使用了一些你应该了解的术语. IdentityServer IdentityServer是一个OpenID Connect的提供者,它实现了OpenID Connect和 ...

  5. IdentityServer4 实现 OpenID Connect 和 OAuth 2.0

    关于 OAuth 2.0 的相关内容,点击查看:ASP.NET WebApi OWIN 实现 OAuth 2.0 OpenID 是一个去中心化的网上身份认证系统.对于支持 OpenID 的网站,用户不 ...

  6. (原创)Stanford Machine Learning (by Andrew NG) --- (week 1) Introduction

    最近学习了coursera上面Andrew NG的Machine learning课程,课程地址为:https://www.coursera.org/course/ml 在Introduction部分 ...

  7. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十一章:模板测试

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十一章:模板测试 代码工程地址: https://github.co ...

  8. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第八章:光照

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第八章:光照 代码工程地址: https://github.com/j ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线 学习目标 了解几个用以表达真实场景的标志和2D图像 ...

随机推荐

  1. java操作elasticsearch实现批量添加数据(bulk)

    java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Test public void test7() throws IOExcepti ...

  2. centos7下升级SSH

    Linux 发行版中集成的 SSH 软件版本都比较老,存在着一些漏洞和安全隐患,需要升级 SSH 服务软件修补漏洞提升系统安全. SSH:SSH 有许多标准,通常 Linux 中 ( Redhat, ...

  3. [Windows]查看运行进程的参数【wmic】

    参考  https://www.cnblogs.com/top5/p/3143827.html     和 https://blog.csdn.net/swazer_z/article/details ...

  4. ASP.Net Web API 输出缓存 转载 -- Output caching in ASP.NET Web API

    一.Nuget安装相关dll Web API 2 : Install-Package Strathweb.CacheOutput.WebApi2 Web API 1 : Install-Package ...

  5. 转://oracle deadlock死锁trace file分析之一

    ---oracle versionSQL> select * from v$version where rownum=1;BANNER------------------------------ ...

  6. Nginx缓存服务

    Nginx缓存服务 1.缓存常见类型 2.缓存配置语法 3.缓存配置实践 4.缓存清理实践 5.部分页面不缓存 6.缓存日志记录统计 通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后 ...

  7. vscode源码编译运行打包使其由英文变为中文

    vscode默认是英文,如果你想让其变为中文,可参考这个链接:https://blog.csdn.net/testcs_dn/article/details/75070415 最近发现一个很奇怪的问题 ...

  8. 用 Django 管理现有数据库

    在多数项目中,总有一些几乎一成不变的 CRUD 操作,编写这些代码很无聊,但又是整个系统必不可少的功能之一.我们在上一个项目中也面临类似的问题,虽然已经实现了一个功能相对完整的管理后台,也尽量做到了代 ...

  9. java基础 容器 API

  10. SpringBoot开发案例之整合Dubbo分布式服务

    前言 在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了.在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使 ...