现代的应用程序看起来像这样:

典型的交互操作包括:

  • 浏览器与 web 应用程序进行通信
  • Web 应用程序与 web Api (有时是在他们自己的有时代表用户) 通信
  • 基于浏览器的应用程序与 web Api 通信
  • 本机应用程序与 web Api 通信
  • 基于服务器的应用程序与 web Api 通信
  • Web Api 和 web Api 交互(有时是在他们自己有时也代表用户)

通常(前端,中间层和后端)的每一层有保护资源和执行身份验证和授权的需求 —— 典型的情况是针对同一用户存储。这就是为什么业务应用程序/端点本身不实现这些基本的安全功能的,宁愿外包给安全令牌服务。这将有了下列安全体系结构:

这对安全的需求分为两个部分。

身份验证

当应用程序需要知道有关当前用户的身份时,则需身份验证。通常这些应用程序管理代表该用户的数据,并且需要确保该用户仅可以访问他允许的数据。最常见的例子是 (经典) 的 web 应用程序 —— 但本机和基于 JS 的应用程序,亦有需要进行身份验证。

最常见的身份验证协议是 SAML2p, WS-Federation 和 OpenID Connect —- SAML2p 是最受欢迎并被广泛部署的身份验证协议。

OpenID Connect是三个中最新的一个,但是通常被认为是未来的方向,因为它在现代应用程序中最具有潜力。它从一开始就是为移动应用程序考虑的,被设计为友好的 API。

API 访问

应用程序有两种基本方式 —— 使用应用程序的标识,或委派用户的身份与API进行沟通。有时这两种方法必须相结合。

OAuth2 是允许应用程序从安全令牌服务请求访问令牌并使用它们与Api通信的一个协议。它减少了客户端应用程序,以及 Api 的复杂性,因为可以进行集中身份验证和授权。OpenID解决跨站点的认证问题,OAuth解决跨站点的授权问题。认证和授权是密不可分的。而OpenID和OAuth这两套协议出自两个不同的组织,协议上有相似和重合的之处,所以想将二者整合有些难度。好在OpenID Connect作为OpenID的下一版本,在OAuth 2.0的协议基础上进行扩展,很好的解决了认证和授权的统一,给开发者带来的便利。Thinktecture IdentityServer v3 是一个.NET 平台上开源的OpenID Connect 提供者 和 OAuth2 验证服务器。

IdentityServer 的安全模型基于两个基本原语: 客户端和作用域:

客户端

客户端是请求访问IdentityServer或身份令牌的软件。客户可以是不同类型的应用:桌面或移动的,基于浏览器的或基于服务器的应用。OpenID 连接和 OAuth2 描述 (也称为流程)不同客户端如何请求令牌模式。检查的规格为有关流程的详细信息。

默认情况下,客户端可以请求在 IdentityServer-中定义的任何作用域,但您可以限制每个客户端可以请求的作用域。

作用域

作用域是一个资源 (通常也称为 Web API) 的标识符。你可以如范围被称为"日历"为您创建日历 API — — 或"calendar.readonly"如果你想要将您的日历的 API 分割成子"地区"-在这种情况下只读访问权限。

如果允许,此作用域将会包括作为访问令牌中的索赔与客户端然后可以请求如"日历"范围-的标记。然后可以确定范围是目前验证的访问令牌时日历 API (或资源)。

根据流程和配置,请求作用域将显示给用户之前颁发的令牌。这使用户有机会来允许或拒绝访问该服务。这就被所谓的同意。

OpenID 连接的作用域有点特殊。它们定义一个可以要求用户的身份信息和用户信息终结点。每一个 OpenID 连接作用域有关联的声明,如"Profile" 作用域映射到的名字、 姓氏、 性别、 个人资料图片和更多。

IdentityServer 既支持"资源"的作用域,也支持 OpenID 连接作用域。

理解OAuth 2.0

Thinktecture IdentityServer and CodeFluent Entities

基于Token的认证和基于声明的标识

Thinktecture Identity Server 3

Identity Server 3 Standalone Implementation Part 1

Identity Server 3 Standalone Implementation Part 2

Identity Server 3 Standalone Implementation Part 3

转载于:https://www.cnblogs.com/shanyou/p/3918292.html

.NET开源OpenID和OAuth解决方案Thinktecture IdentityServer相关推荐

  1. 一个功能完备的.NET开源OpenID Connect/OAuth 2.0框架——IdentityServer3

    今天推荐的是我一直以来都在关注的一个开源的OpenID Connect/OAuth 2.0服务框架--IdentityServer3.其支持完整的OpenID Connect/OAuth 2.0标准, ...

  2. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

  3. 入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 介绍 (一)

    入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 介绍 (一) 参考文章: (1)入门教程:.NET开源OpenID Connect 和OAu ...

  4. OpenID 和 OAuth 的区别及第三方登录的安全隐患分析

    转自:http://itindex.net/detail/48552-openid-oauth-%E6%96%B9%E7%99%BB 发表时间:2014-03-13 19:09 | 作者:天梯梦 出处 ...

  5. android眼动追踪开源,Eyeboard:低成本的开源眼动跟踪解决方案

    腾讯科技讯(Kathy)北京时间12月13日消息,据国外媒体报道,Eyeboard是一个低成本的开源眼动跟踪解决方案,旨在帮助残疾用户更方便地进行沟通.它的设计者是高中刚毕业不久的路易斯·克鲁斯(Lu ...

  6. 基于RK3568商显版开源鸿蒙板卡产品解决方案

    导读 搭载OpenHarmony OS 3.1 的RK3568商显版 XM-RK3568芯片集成了四核Cortex-A55 CPU.Mali-G610 GPU以及0.8Tops NPU功能,由于其接口 ...

  7. 开源企业即时通信解决方案

    开源企业即时通信解决方案 (2007-04-25 15:33:37) 转载▼     本文使用 Openfire 来解决企业即时通信平台,服务端选用Linux操作系统.客户端为windows平台. 第 ...

  8. 【开源框架】:解决方案级别的代码生成器 WebFirst

    框架描述 WebFirst  是一新代的 代码生成器,用法简单,功能强大,支持多种数据库 ,具体功能如下: 一. 建库.CodeFirst方式在线建表,没用到CodeFirst的用户可以用工具轻松体验 ...

  9. 速修复!开源 IT 基础设施管理解决方案 Salt 被曝多个严重漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 VMware 旗下公司 SaltStack 披露了影响 Salt 版本 3002 及之前版本的多个严重漏洞,并在今天推出补丁. Sal ...

最新文章

  1. Vue在Element UI下使用富文本框插件quill-editor(我个人不推荐用这个复杂的富文本插件)
  2. P4774 [NOI2018]屠龙勇士
  3. 入门话题1. 在Web中控制图的显示外观?把一张500*800 的图, 显示成180*110 的小图....
  4. 玩JDK 12的Switch表达式
  5. LeetCode 391. 完美矩形(set检查顶点+面积检查)
  6. 如何做一个国产数据库系统(一)
  7. 【项目实施随笔】生产领料
  8. 《软件工程与实践》第三版 软工导论知识梳理总结
  9. 怎么用计算机算弧度制,怎么设置计算器 把度数转化为弧度
  10. telnet linux 退格键无法生效
  11. URL 编码和解码工具
  12. Java 给PPT添加动画效果(预设动画/自定义动画)
  13. SCP不会覆盖已有文件
  14. The requested URL was not found on this server.
  15. 无背景图片添加白色背景
  16. 假期最后一天!Go1.16 重磅发布,新版本特性一览
  17. 【机器学习面经】实验室祖传机器学习重难点(第一弹)
  18. 获取thinkph5下控制器和方法名
  19. 猜价格游戏(Java):给出相应的提示,并记录次数
  20. 智能手机游戏个人开发者和小团队如何赚钱

热门文章

  1. php apache 配置后不能正常显示html文件的解决方法
  2. git commit -m 'comment' 遇到 'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  3. 此模块的调试信息中缺少源信息_22python中的模块
  4. 荣耀v20、荣耀20Pro、mate20、Nova5Pro选哪个?
  5. 三个火一个木组成的燊怎么读,燊是什么意思?
  6. 学会学习比学习什么更重要
  7. 很多人想不通为什么创业失败者众成功者少
  8. 关于计算性能的若干重要事实
  9. php无限次执行函数,php – 防止多次执行JavaScript函数
  10. azure 入门_Azure Databricks入门指南