oauth
什么是oauth2.0
- 用于REST/APIs的
代理授权框架
(Delegated authorization framework) - 基于令牌Token的授权,在无需暴露用户面的情况下,时引用能获取对用户数据的有限访问权限
- 解耦认证和授权
- 事实上的标准安全框架,支持多种用例场景,例如:
服务端WebAPP
浏览器单页SPA
无线/原生App
服务器对服务器之间
OAuth2.0的优势
- 更安全,客户端不接触用户密码,服务端更易集中保护
- 引用广泛,大型公司基本都使用该框架
- 资源服务器和授权服务器解耦
- 集中式授权,简化客户端
- HTTP/JSON格式支持友好,易于请求和传递token
- 多种客户端都可以接入,例如网页端 ,app端都可以
- 客户可以具有不同的信任级别
OAuth2.0不足
OAuth2.0属于授权服务器
- 客户应用: 通常是一个web或者手机,他需要访问用户的受保护资源
- 资源服务器::是一个web站点或者web service API,用户的受保护数据保存在这个地方
- 授权服务器: 在客户应用成功认证并获得授权之后,想客户应用颁发访问令牌Access Token
- 资源拥有者:资源的拥有人,也就是用户。他可以想要分享给第三方应用的一些操作
OAuth2.0中的常用术语
- 客户凭证(Client Credentials): 客户的clientid和密码用户认证客户
- 令牌(Tokens): 授权服务器在接收到客户请求后,颁发的访问令牌
- 作用域(Scopes): 客户请求访问令牌时,有资源拥有者额外指定的细分权限(permission)
OAuth2.0核心 授权
- 授权码(Authrization Code Token): 仅用户授权码授权类型,用于交换获取访问令牌和刷新令牌
- 刷新令牌(Refresh Token): 用于取授权服务器获取一个新的访问令牌,例如在访问令牌失效后,再使用刷新令牌来换取一个新的访问令牌
- Bearer Token: 不管拿到Token都可以访问资源,像现钞
- 访问令牌(AccessToken): 用于代表一个用户或服务直接取访问受保护的资源(重要)
- Proof of Possession(PoP)Token: 可以校验client是否对Token有明确的拥有权
OAuth2.0正解
- OAuth2.0并没有支持HTTP以外的协议
- OAuth2.0并不是一个认证协议
- OAuth2.0并没有定义授权处理机制
- OAuth2.0并没有定义token格式
- OAuth2.0并没有定义加密算法
- OAuth2.0并不是单个协议
- OAuth2.0仅仅时一个授权框架,仅用户授权代理
OAuth2.0的一些问题常见总结
- 如果拿到token之后,岂不是对于任何服务的访问就没有限制了,利用该token攻击别人的数据怎么处理呢
资源服务器会对token进行权限校验(也可在微服务网关上集中做),简单讲,资源服务器可以按需增加细粒度权限控制~这个token对应的用户是什么角色,有什么权限,能做什么操作,资源服务器有更多决策权,而且不同资源服务器可有不用策略。当然token是有被盗用风险,有一些安全措施防止被盗,发现被盗可以吊销,另外可根据场景缩短token有效期。
- Access Token和 Bearer Token有什么区别呢?
Bearer Token是Access Token的一种格式,这种格式一般是随机字符串无特殊意义,也就是不能从Bearer Token的字面推断出这个Token是谁颁发给谁的,像现钞一样谁拿到了都可以去消费使用;还有一种叫Proof of Possession(PoP) Token,这种Token里头包含所有者信息,可以校验拥有者,别人不能随便用。
相关阅读
随着SaaS技术的发展,建设网站不再是专业程序的特权,层出不穷的自助建站系统,让我们普通人也能实现自我建站。今天给大家分享下几款好
说是2018,指的是2018年的夏令营。2019年入学。 今年感觉竞争还是比去年要....激烈挺多。 哇当时压力也挺大的。而且我这么菜。 自
直播成为互联网当之无愧的新风口,各大电商也纷纷杀入直播战场。尤其是双十一活动的来临,各个商家们也会把直播和促销相结合,下面为各
大多商业软件,会对程序进行加密、加壳等安全措施以防范软件被破解,从而使得反编译越来越难。反编译是一个对目标可执行程序进行逆向
iOS开发者众多,但并不是所有的开发者都对账号申请,证书配置这些问题都清楚,毕竟不是所有开发者都能够经历这个环节,多数情况下是进公