来自: 首页 » Coder Life » oauth2 » 构建OAuth2.0服务端(一)选择授权类型

构建OAuth2.0服务端(一)选择授权类型

网上汉化的叫法众多,本文以阮一峰老师博客的叫法为准。

1. 是否拥有AccessToken?

Access Token:用于访问受保护资源的令牌。

如果有(机器自动认证,不需要用户授权),选用

客户端凭证

如果需要用户授权,则需要进行客户端的判断

2. 客户端类型?

根据客户端安全级别,来选择不同的认证方式。

1)服务端应用(如服务端渲染)

通常安全级别较高,选用

授权码

2)纯前端应用(包括web的SPA和原生APP)

应使用(Proof Key for Code Exchange,PKCE)

基于PKCE扩展的授权码

3)第三方应用

也应使用

授权码

区别在于要打开设备上的原生浏览器,而不能使用嵌入的浏览器

如:iOS上要打开Safiri,而不是使用WebView模拟

传统授权方式

密码式隐藏式 有各自的缺点,这里不再展开介绍,详细可查看底部参考链接。

作为替代:

  • 对 密码式 改用 授权码;
  • 对 隐藏式 改为 基于PKCE扩展的授权码

参考:

  1. https://oauth2.thephpleague.com/authorization-server/which-grant/《oauth2-server》(php)
  2. https://www.jianshu.com/p/7b12a29d06a0《oauth2四种授权方式小结》
  3. http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html《阮一峰博客——OAuth2.0的四种方式》

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据