写点什么

了解 OAuth2.0

用户头像
环信
关注
发布于: 2020 年 12 月 11 日

OAuth 2.0是一种认证授权工业标准,为多种应用(Web、桌面程序、手机、只能设备等)提供简单易安全的认证授权方法。 https://oauth.net/2/



安全问题,离不开信任关系:



举个例子,我们都知道银行卡的密码可以在柜员机输入。这是因为我们信任柜员机。



再举个例子,你去便利店买东西,用手机支付时,都会提示你输入密码。因为支付服务信任的是你,而不是你的手机。



我们从角色和授权流程两个方面入手,来看看OAuth 2.0。



角色



  1. Resource Owner

  2. Resource Server

  3. Client

  4. Authorization Server



OAuth 2.0的角色划分明确了Resource OwnerClient的角色分离,有助于清晰定义信任关系。



角色之间的信任关系,取决于使用的授权流程



授权流程



  1. Resource Owner Password Credentials Grant

  1. 

  2. Client Credentials Grant

  1. 

  2. gittyleaks

  3. Github Secret Scanning

  4. Authorization Code Grant

  1. 

  2. Client通过"Referrer-Policy: no-referrer"抑制Referrer头

  3. Authorization Server通过PKCE验证Client,验证通过才发布Access Token

  4. Authorization Server限制授权码只能兑换一次,重复兑换时撤销相关已发布的Access Token

  5. 用返回自动提交表单

  6. Implicit Grant

  1. 



另外,为了支持交互受限设备,后续又增加了一个Device Authorization Grant,本文就不介绍了。



总结



总结一下,OAuth 2.0 这4种授权流程在信任关系方面采取的手段:



信任关系密码授权机要授权授权码授权隐式授权RO信任C用户管理员用户用户C信任AShttpshttpshttpshttpsAS信任CClient CredentialsClient CredentialsClient Credentials+PKCE+检查重定向地址N/AC信任RShttpshttpshttps+statehttps+stateRS信任CAccess TokenAccess TokenAccess TokenN/A

  • RO = Resource Owner

  • C = Client

  • AS = Authorization Server

  • RS = Resource Server



安全问题是一场持续进行的竞赛,没有一劳永逸的方案。并且,人的安全意识也非常重要,技术和机器无法解决全部问题。



附上笑话一枚:



图片来自:https://xkcd.com/327/



用户头像

环信

关注

即时通讯领行者 2020.03.17 加入

环信成立于2013年4月,是国内领行的企业级软件服务提供商,于2016年荣膺“Gartner 2016 Cool Vendor”。是国内较早覆盖云通讯、云客服、智能机器人的一体化产品技术储备企服公司。

评论

发布
暂无评论
了解OAuth2.0