OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,通过这个标准,第三方无需知道用户的账号和密码,就可获取到用户的授权信息。
OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。
OpenID是一个去中心化的网上身份认证系统。对于支持OpenID的网站,用户不需要记住像用户名和密码这样的传统验证标记。取而代之的是,他们只需要预先在一个作为OpenID身份提供者(identity provider, IdP)的网站上注册。OpenID是去中心化的,任何网站都可以使用OpenID来作为用户登录的一种方式,任何网站也都可以作为OpenID身份提供者。OpenID既解决了问题而又不需要依赖于中心性的网站来确认数字身份。

老系统的现状

每个老系统都起源自新系统,用的久了,就慢慢变老了!
刚开始设计网站的时候,仅仅是一个用户登录;然后加入了角色,最后加入了鉴权,后来又增加了限次密码失败,后来的后来,再增加白名单,最后,增加了二次验证…,最后的最后,加入了第三方的账号登录。 等等,好像没有最后,还有开发api呢,还有许多功能呢… …
是时候上统一登录授权了吧,最好符合Oauth2.0… …
Oauth的授权四模式:

  • 授权码模式(authorization code)
    是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动。
  • 简化模式(implicit)
    不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。
  • 密码模式(resource owner password credentials)
    用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。
  • 客户端模式(client credentials)
    指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题。

.net core的支持

ASP.NET Core 标识是支持用户界面(UI)登录功能的成员资格系统。 用户可以创建一个具有存储在标识中的登录信息的帐户,也可以使用外部登录提供程序。 支持的外部登录提供程序包括Facebook、Google、Microsoft 帐户和 Twitter。
若要保护 web Api 和 Spa,请使用IdentityServer4。 IdentityServer4 是 ASP.NET Core 3.0 的 OpenID Connect 和 OAuth 2.0 framework。 IdentityServer4 支持以下安全功能:

  1. 身份验证即服务 (AaaS)
  2. 跨多个应用程序类型的单一登录/注销 (SSO)
  3. API 的访问控制
  4. Federation Gateway

再来看看IdentityServer4


OpenID Connect和OAuth 2.0非常相似-实际上,OpenID Connect是OAuth 2.0的扩展。身份验证和API访问这两个基本的安全问题被组合成一个协议-通常只需一次往返于安全令牌服务。

我们相信OpenID Connect和OAuth 2.0的结合是在可预见的将来保护现代应用程序的最佳方法。IdentityServer4是这两个协议的实现,并且经过高度优化,可以解决当今移动,本机和Web应用程序中的典型安全问题。
实际上,按照教程,花费2个小时,你就可以手撸一个登录服务了。
搞定了登录,但是授权怎么办呢?
相信撸到这一步的你也会有同样的困惑。

拆分设计


先理解下概念:

  • 授权(authorization):授权,批准;批准(或授权)的证书;
  • 认证(authentication):认证;身份验证;证明,鉴定;密押。
  • 资源(Resource),在系统中定义的第一件事就是要保护的资源。这可能是您的用户的身份信息,例如个人资料数据或电子邮件地址,或对API的访问,id要求资源必须有 openid。
    因此结合途中的5,6,7步骤,所做的下一步授权,应该结合资源服务进行设计。
    当然可以设计用户中心,资源中心等分开设计,主要是综合业务的需求。

总结

撸一个登录服务很easy,但想设计一套综合旧项目的统一登录认证鉴权授权平台是比较复杂的过程,不可能是几天搞定。但只要你分析清除每个环节,逐步实现,当可在1人月内完成设计和编码。

OAurh 2.0/OpenID与老系统的整合——统一登录平台相关推荐

  1. spring security 安全框架改造统一登录oauth2.0方式

    继上次改造统一登录之后,这次又接到改造任务,这次的项目结构略有不同,不再有web.xml文件,也不是集成的含有拦截器的jar包,而是oauth2.0的授权码(CODE)方式的认证流程, 因为前端还是v ...

  2. GBase 8a 运维监控工具---“统一数据平台监控与运维系统”

    GBase 8a MPP Cluster 提供了海量数据的管理及分析功能和易于监管数据库集群的工具. 本篇文章主要介绍一款 便于数据库管理员监控数据库集群的图形化工具: "统一数据平台监控与 ...

  3. 康泰克6苹果老系统版本-Native Instruments Kontakt 6.0.3 macOS

    STANDALONE, VSTi, AU|64bit|512M 适合macOS 10.11-10.14的老系统版本,不支持10.15以上系统. Kontakt 是采样器领域的标准.Native Ins ...

  4. mysql8.0登录不上去怎么回事_速看!智慧团建系统登录平台及信息查询入口

    被逐步的边缘化.作为一款紧凑车型来说.115PS是发动机的最大马力.它也采用了全新的设计手法.在灯光衬托下显得光彩夺目.途胜l这款SUV的侧面车身与途胜的设计有些相似.起亚为这款车全系搭载1.5升的发 ...

  5. 200张表,单表记录过亿,10多年核心老系统的重构之旅

    一.什么时候需要重构老系统 老系统重构,让大家又喜又悲,喜的是程序员,悲的是业务. 程序员为啥"喜":多年前的老技术,以及各种历史原因导致的遗留代码.不需要的业务代码混杂在一起,维 ...

  6. 搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统

    搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统 场景 可行性分析 搭建Spring Boot集成 ...

  7. 旧电脑 存储服务器 系统,爷爷级PC,用白菜价内存搭建内存硬盘操作系统,老系统飞起来。...

    认识众多玩家高手/拆客/DIY爱好者,查阅更多资源,一起学习技术知识 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 爷爷级PC,用白菜价内存搭建内存硬盘操作系统,老系统飞起来. 系统配置: ...

  8. 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

    大家好,又见面了~ kafka作为一种高吞吐量的分布式发布订阅消息系统,在业务系统中被广泛的使用. 如果问你,如何提高kafka队列中的消息消费速度呢? 答案很简单,topic多分几个分片,然后使用消 ...

  9. 一加3t氢android8_国内最快:一加3/3T已升级到基于安卓8.0的氢OS系统

    自从8月份谷歌正式发布Android8.0系统后,关于谁能最先吃上这块奥利奥甜点的猜测就一直不断,现在可以明确,一加手机用户最先大范围得到官方支持. 继前段时间一加官方发布基于安卓8.0的氧OS系统后 ...

最新文章

  1. summary_1.正念自控法
  2. 全球及中国碳交易行业十四五发展展望与建设趋势研究报告2022-2027年
  3. 统计日志中ip访问次数并排序的三种方法
  4. HDU 2222 ac自动机模板
  5. xshell 6 连接debian系统拒绝了密码_Xshell中操作Linux的常用命令,你知道几个?
  6. JDK源码解析之 java.lang.Long
  7. 双非同学,自学编程,毕业一年逆袭百度!
  8. Python中的json.dumps()和json.loads()函数
  9. ubuntu16.04安装使用redis入门教程
  10. 2018年最新税收分类编码_2018年新编码器调查:31,000人告诉我们他们如何学习编码和获得开发人员工作
  11. 《王垠、赵海平列传(1)》:“成为最伟大的计算机科学家!”
  12. python爬取新浪微博大V的所有微博内容
  13. iOS打包成ipa包
  14. 彻底理解RxJS里面的Observable 、Observer 、Subject
  15. Vue的内容抽离过程
  16. 解决:【安全警报】该站点安全证书的吊销信息不可用,是否继续?
  17. DRAM、NAND Flash、Nor Flash、EEPROM的区别和应用领域
  18. boost::asio::tcp
  19. Latex常用语法、语句、工具
  20. 唠唠SE的集合-01——Collection接口

热门文章

  1. netcore 使用NHibernate
  2. 排列组合(A/C)计算器
  3. 柏拉图主义 算术化方法和哥德尔数——读哥德尔之五
  4. 【深度学习】Mixup: Beyond Empirical Risk Minimization
  5. xenserver 安装新硬盘_怎么为为 XenServer 添加新磁盘
  6. ​为什么要举办这样一场大会?
  7. Roofline模型初步
  8. 如何向icloud上传文件_怎么把文件上传到icloud
  9. 互联网大佬爱情故事~
  10. 诺基亚7 刷android p,兑现承诺!HMD为诺基亚7 Plus推送Android 9.0正式版更新