17611538698
webmaster@21cto.com

OAuth2 图解

资讯 0 1853 2020-06-12 12:04:15
本文简单的描述出了 OAuth2 工作背景,看完后可以轻松理解 OAuth2 是用来解决什么问题的。1. 用户有自己的数据
/uploads/fox/12084341_0.jpg2. 有一个服务器,负责管理用户的数据。这个服务器被称为”Resource Server(资源服务器)“
/uploads/fox/12084341_1.jpg3. 有一个客户端应用,想要使用用户的数据
/uploads/fox/12084341_2.jpg4. 资源服务器需要准备一个 API 接口,用来传递用户的数据
/uploads/fox/12084341_3.jpg5. 客户端应用请求 API 接口,想要用户的数据
/uploads/fox/12084341_4.jpg6. 资源服务器返回用户数据
/uploads/fox/12084341_5.jpg7. 如果某个客户端应用心术不正怎么办?
/uploads/fox/12084341_6.jpg8. 坏客户端应用也请求资源服务器 API
/uploads/fox/12084341_7.jpg9. 资源服务器也可以正常返回用户数据
/uploads/fox/12084341_8.jpg10. 结果就是坏客户端拿到了用户数据
/uploads/fox/12084341_9.jpg11. 我们需要一个机制来保护用户的数据
/uploads/fox/12084341_10.jpg12. 根据最佳实践,让客户端应用使用 "Access Token(访问令牌)" 比较好。客户端有了 Token 就说明它有了访问用户数据的权限
/uploads/fox/12084341_11.jpg13. 客户端应用请求 API 时出示自己的 Token 令牌
/uploads/fox/12084341_12.jpg14. 资源服务器从请求中提取 Token
/uploads/fox/12084341_13.jpg15. 资源服务器验证 Token 令牌
/uploads/fox/12084341_14.jpg16. 确认之后,资源服务器返回用户数据
/uploads/fox/12084341_15.jpg17. 这个机制的前提是客户端得提前拿到 Token 令牌
/uploads/fox/12084341_16.jpg18. 我们需要有人负责颁发 Token 令牌
/uploads/fox/12084341_17.jpg19. 谁来颁发 Token 令牌 ...
/uploads/fox/12084341_18.jpg20. 颁发 Token 的角色被称为 ”Authorization Server(授权服务器)“
/uploads/fox/12084341_19.jpg21. 客户端应用需要与授权服务器打交道了
/uploads/fox/12084341_20.jpg22. 授权服务器生成 Token 令牌
/uploads/fox/12084341_21.jpg23. 然后把 Token 颁发给客户端
/uploads/fox/12084341_22.jpg24. 先暂停,回顾一下,现在有3个角色了 ”授权服务器“、”客户端应用“、”资源服务器“
/uploads/fox/12084341_23.jpg25. 授权服务器生成 Token
/uploads/fox/12084341_24.jpg26. 然后颁发给客户端
/uploads/fox/12084341_25.png27. 客户端使用 Token 请求资源服务器的 API 接口
/uploads/fox/12084341_26.jpg28. 资源服务器从请求中提取 Token
/uploads/fox/12084341_27.jpg29. 验证 Token
/uploads/fox/12084341_28.jpg30. Token 没问题就返回用户数据
/uploads/fox/12084341_29.jpg31. 上面的流程中,第一步是授权服务器生成 Token,而实际流程中,生成 Token 之前是需要询问 User 用户的
/uploads/fox/12084341_30.jpg32. 首先,客户端请求授权服务器,申请一个 Token
/uploads/fox/12084341_31.jpg33. 授权服务器询问用户,是否给这个客户端权限
/uploads/fox/12084341_32.jpg34. 如果用户同意 ...
/uploads/fox/12084341_33.png35. 那么授权服务器就生成一个 Token
/uploads/fox/12084341_34.jpg36. 然后颁发给客户端
/uploads/fox/12084341_35.jpg37. 重点就是这个黄色区域
/uploads/fox/12084341_36.jpg38. 这块儿是请求 Token、拿到 Token 的过程
/uploads/fox/12084341_37.jpg39. 这个过程就是 OAuth2 框架所关注的,为其做了标准化定义
/uploads/fox/12084341_38.jpg小结
以上就是 OAuth2 的工作背景,OAuth2 框架关注的是整个安全认证过程中的 "请求 Token、颁发 Token" 这部分流程。
这块儿有多种方式,OAuth2 定义了4种模式来处理。
这4种模式有点复杂,之后再详述。
 
 

作者:杜亦舒
来源:性能与架构
翻译整理自
https://medium.com/@darutk/the-simplest-guide-to-oauth-2-0-8c71bd9a15bb


评论