简单的第三方授权
来源:互联网 发布:深圳灵沃软件 编辑:程序博客网 时间:2024/05/10 19:26
负责的一个项目中使用到了一个Oauth2协议的实现,不过可惜我只负责前端部分,所以后台程序具体是怎样运行的并不清晰,现在根据一些我的理解来谈一下怎么实现一个简单的第三方授权,希望以后能够用到自己的项目中。
引子:(摘自百度百科)
如果一个用户拥有两项服务:A.图片在线存储服务;B.图片在线打印服务。如果服务A和服务B是由两家不同的服务提供商提供的,那么用户在两家服务提供商的网站上各自注册了用户账号。当用户要使用服务B打印存储在服务A上的图片时,用户该怎么处理?1.从服务A处下载图片,上传到服务B并打印,这种方式安全但处理繁琐,效率低下;2.用户将在服务A上的用户账号密码告诉服务B,由服务B代用户去获取图片并进行打印,这种方式显得高效,但安全性大大降低,相当于服务B能够获取用户在服务A上的权限,甚至篡改资料。
云计算时代,越来越需要避免方式1一样繁琐的操作,但又不能使用方式2一样安全性为零的处理,所以出现了第三方授权的协议,Oauth就是其中之一。现在我们都经常接触到第三方登录的应用。现在网站、应用那么多,若全部都使用各自一套的账号密码,那该多麻烦的事啊,所以以腾讯、新浪为首的掌握大量用户账号的公司逐渐开放第三方登录功能,极大地省去了用户多次创建用户账号的过程。
角色:用户,服务A,服务B
前提:服务A运行着第三方授权程序,等待请求;服务B事先与服务A沟通协商好,拥有服务A第三方授权的信息;用户需要使用服务A的账号来登录服务B
1.服务B为用户提供一个服务A第三方登录的url链接,当用户点击链接时,页面跳转到服务A的专门授权页面。因为url是B生成的,所以B可以在里面添加与服务A已协商好的信息,主要向A表明向哪个服务商授权。
2.当A接收到请求时,先验证一下服务商B的信息,如果存在合作关系(信息匹配),则显示自己的登录页面验证用户的身份,如果不匹配,应当reject。
3.用户在页面上输入用户账号密码信息,并向A发送认证请求,A验证完成之后,向用户发送一个grant code,并提醒用户是否授权给B。
4.如果用户选择授权,点击url后,将grant code提交给A来换取token。此时A收到授权请求,需要与B互动。A发送关于这次授权的token给B(token1),利用重定向使B发送token给用户(token2)。
5.有了token2,用户就可以像其他用户一样登录服务B,而服务B拿取token1就可以获取用户在服务A上的数据,比如用户名、头像、年龄、签名,图片等。
当然上面是很简单的应用,实际上服务A和服务B都可以在这个基础做很多事情,比如控制好token1的权限,不让它获取重要信息;服务B获得授权好,强制/自动为用户在本地创建账号等,全凭你怎么协商与实现。
-------------------------------本文为本人学习总结,有疑问请指出-------------------------------
- 简单的第三方授权
- QQ的第三方授权和取消第三方授权
- 第三方授权
- 第三方授权登陆
- 第三方授权
- 第三方登录授权说明
- 第三方登录授权说明
- 第三方登录,授权,分享
- ShareSDK第三方账号授权
- swift 第三方授权登录
- 第三方QQ授权登录
- OAuth2.0第三方授权
- 微信授权登录第三方app遇到的问题
- 使用友盟进行第三方平台的授权分享
- shareSDk第三方登录授权的个人理解
- Android 禁止安装没有授权的第三方应用
- 对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等
- 基于第三方QQ授权登录和新浪微博授权登录的iOS代码分析
- 有关SQL*PLUS命令使用大全
- NFC framework introduce
- 内存管理 -- 高质量编程
- APK瘦身记,如何实现高达53%的压缩效果
- js复制到剪贴板,兼容ie
- 简单的第三方授权
- UVA10405最长公共子序列
- RecyclerView的使用(3)之添加Header和Footer
- java内存溢出和内存泄露
- 【腾讯内部工具分享】U3D资源优化工具
- 如何判断Javascript对象是否存在
- 时间戳和字符串相互转换,获取当前正确的时间
- [hdu 3068] 最长回文 manacher算法
- PaaS和未曾改变的编程模式