了解 OAuth2.0
OAuth 2.0是一种认证授权工业标准,为多种应用(Web、桌面程序、手机、只能设备等)提供简单易安全的认证授权方法。 https://oauth.net/2/
安全问题,离不开信任关系:
举个例子,我们都知道银行卡的密码可以在柜员机输入。这是因为我们信任柜员机。
再举个例子,你去便利店买东西,用手机支付时,都会提示你输入密码。因为支付服务信任的是你,而不是你的手机。
我们从角色和授权流程两个方面入手,来看看OAuth 2.0。
角色
- Resource Owner 
- Resource Server 
- Client 
- Authorization Server 
OAuth 2.0的角色划分明确了Resource Owner与Client的角色分离,有助于清晰定义信任关系。
角色之间的信任关系,取决于使用的授权流程。
授权流程
- Resource Owner Password Credentials Grant

-  
- Client Credentials Grant

-  
- Authorization Code Grant

-  
- Client通过"Referrer-Policy: no-referrer"抑制Referrer头 
- Authorization Server通过PKCE验证Client,验证通过才发布 - Access Token
- Authorization Server限制授权码只能兑换一次,重复兑换时撤销相关已发布的 - Access Token
- 用返回自动提交表单 
- Implicit Grant

-  
另外,为了支持交互受限设备,后续又增加了一个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 
安全问题是一场持续进行的竞赛,没有一劳永逸的方案。并且,人的安全意识也非常重要,技术和机器无法解决全部问题。
附上笑话一枚:













 
    
评论