前言
好文章,从理论角度来进行了完整的梳理,OAUTH,SSO,JWT。其中,1.oauth是从第三方认证授权系统获取资源访问token,再通过token去获取资源(或认证)
2.jwt是为了防止消息被篡改的技术,首先消息本身加密解密方式保证了内容不被篡改,但无法防止消息被劫持后整个被替换,所以需要签名,以确认发送者没有变化。由此可以用在oauth中对token的处理。
Java编程技术分享
——————
授权和认证是每个项目中不可或缺的一部分,脆弱的授权、认证流程会在恶意攻击中不堪一击,会在项目运行过程中无法承受高流量的冲击。在这个环节中,OAuth 认证、SSO 单点登录、CAS 中央认证服务会频繁地出现在相关业务的开发人员视野中,可是总是多多少少的懵懵懂懂。
这里笔者会尽力从源头上解决对于相关概念的理解,以及在项目中的实践。并且收录部分面试过程中会遇到的问题。
旨在解决相关人员对于概念的深入理解,对于项目的实践认识,对于面试的关键点剖析。单个篇幅无法做到面面俱到,尽力估计,过程中会提供 Java、C Sharp 的代码解释。
在本场 Chat 中,会讲到如下内容:
OAuth 的说明、应用
SSO 单点登录的说明、应用
CAS 的说明应用
JWT 和授权的关系
C# 中间件 OWIN
常见授权认证相关的面试题收集、剖析
OAuth 的说明、应用
OAuth 是什么
在维基百科中对于 OAuth 的解释如下:
开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。
OAuth 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的 2 小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth 让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。
OAuth 是 OpenID 的一个补充,但是完全不同的服务。
在百度百科中对于 OAuth 的解释如下:
OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是安全的。OAuth 是 Open Authorization 的简写。
在 OAuth 2.0 的官方网站中的解释如下(摘自:https://oauth.net/):
An open protoc