作者CMJ0121 (不要偷 Q)
看板NetSecurity
标题[闲聊] 2017.W42 - OAuth 2
时间Tue Oct 17 23:43:58 2017
2017.W42 - OAuth 2
> 感谢师 (ㄏㄞˋ) 傅 (ㄎㄜˋ) 赐我吃穿
## 前言 ##
认证系统真的很多 每个服务都需要记帐号密码实在是很烦恼
既担心 EYNY 论坛的密码泄漏 影响 gmail 的安全性
又担心密码太多 会忘记 FC2 的登入密码
## 认证 ##
OAuth 2[1] 是一个继承 OAuth[1] 的一种认证标准
主要让用户 (Client) 透过受使用者信任的第三方 (OAuth Provider) 提供认证的服务
在 OAuth 的脚色可以分为三种
- 使用者 (End User)
- 用户 (Client)
- 服务提供者 (OAuth Provider)
藉由使用者先向提供者认证之後 透过转址导回到用户的服务网站
详细的流程 (Code Grant) [3] 可以分解成以下几种步骤
而最终用户透过从使用者获得的一次性 Code 来跟服务提供者换 Access Token
这个 Access Token 则是代表使用者在服务提供者的一个 Token
可以透过这个 Token 获得使用者的相关资料
使用者 用户 服务提供者
登入
---------------->
重导向:登入
------------------>
重导向:Code
<------------------------------------------
重导向:Code
---------------->
背景: Code
------------------->
背景:Access Token
<-------------------
Code Grant 是四种 OAuth 2 定义中换取 Access Token 的方式之一
也是大多数之名 OAuth 2 provider 提供的方式之一
像是 Facebook[4]、Google[5]、GitHub[6] 等
使用 OAuth 2 对於三方面来说都是拥有好处
但在使用 OAuth 2 的过程中需要注意潜在的安全性风险:
过多的资讯请求 与 钓鱼网站
过多的资讯请求 代表在用户跟服务提供者要求过多的权限
正常的权限请求大致包含:名称、e-mail 等
而过多的请求则是包含发文权限、历史纪录查询等绝大多数不需要的权限
[1]:
https://tools.ietf.org/html/rfc6749
[2]:
https://zh.wikipedia.org/wiki/OAuth
[3]:
https://tools.ietf.org/html/rfc6749#section-4.1
[4]:
https://developers.facebook.com/docs/facebook-login/
[5]:
https://developers.google.com/identity/protocols/OAuth2
[6]:
https://developer.github.com/apps/building-integrations/setting-up-and-registering-oauth-apps/
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.122.171
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/NetSecurity/M.1508255043.A.B11.html
1F:推 holishing: push 10/23 20:50