免费注册,打造高效身份管理
博客/开发者/为什么OAuth2无法提供完善的身份认证功能?
为什么OAuth2无法提供完善的身份认证功能?
Authing 官方2022.09.29阅读 954
 
作为开发人员,免不了要使用 API 接口,获得授权,但是授权必须安全,才能保证开发人员和用户的隐私不被侵犯与泄露,OAuth 2.0 的创建就是为了应对许多现代数字隐私裸奔困境。
 
OAuth 是一种关于授权(Authorization)的开放网络标准,是目前最流行的授权机制,在客户与服务商之间,设置授权层。客户必须先登录授权层,此时服务商会向客户授权令牌的权限及使用期限,然后客户才能登录服务商,使用其服务。
 
OAuth 不需要共享用户名和密码等相关数据,而是使用授权令牌来证明使用者和服务提供商之间的身份,允许用户授权一个 APP 访问另一个 APP 的身份信息。
 
假设我们要用微信账号登录网易云音乐,需要以下五步: 1. 访问网易云音乐客户端,客户端跳转到微信授权页面,询问用户是否同意授权,微信会提供授权的URL。
 
  1. 用户选择是否同意授权
  2. 假设用户同意授权,微信端将向网易云音乐跳转重定向 URL,同时附上授权码(code)
  3. 网易云音乐收到授权码后,附上重定向 URL,向微信端申请令牌(token)
  4. 微信端传回网易云音乐令牌,由此网易云音乐就可以拿着访问令牌访问微信用户信息
 
在用户将微信信息授权给网易云音乐登录后,此时后端开始处理,前端不再参与。此时需要微信的服务器将 token 传给网易云音乐的后端,后端携带 token 去访问被授权的微信信息。在授权成功后,需要重定向 URL 通知用户授权成功,也就是说,建立起微信前端和网易云音乐前端的关联。
 
code 的作用在于让 token 不经过用户的浏览器直接传递,保护了 token 的安全。因为 code 只能用一次,且有时间限制,超时会失效,所以即使被截也未必能用。
 
其次,要获得 token,除了需要 code,还需要 client id/client secret。所以即使 code 被盗,也是无法获得 token 的。
 
综上,code 可以保证 token 的安全性,降低被盗取风险。
 
单点登录 SSO 已成为管理企业世界中用户对应用程序和数据的访问的日益流行的选项。 Authing 凭借单点登录技术,实现成员、客户在一处访问任何软件服务,并统一管控身份权限无论通过企业联合、 社会登录还是用户名和密码身份验证,用户只需登录一次,就可以使用他们被授予访问权限的所有应用。
 
常见的单点登录协议包括 OIDC、OAuth 2.0、SAML2、CAS 3.0、LDAP 为标准认证协议。标准协议会按照特定的方式传递用户信息,正规的业务系统产品都会支持标准协议,使用标准协议对接可以一劳永逸地完成对接。
 
标准协议的推荐度:OIDC > SAML2 > CAS 3.0 > LDAP > OAuth2.0。
 
 

关于 Authing

Authing 是国内首款以开发者为中心的全场景身份云产品,为企业和开发者提供完善安全的用户认证和访问管理服务。作为云原生架构下的身份云产品,Authing 在产品创建初期,目标就是服务亿级的企业和个人开发者客户,轻量级、易部署、低消耗、技术栈成熟,运维易的云原生技术产品架构,成为了 Authing 的首选。

点击此处了解更多行业身份管理

「解决方案」以及「最佳实践案例」

文章作者

avatar

Authing 官方

0

文章总数

authing blog rqcode
关注 Authing 公众号
随时随地发现更多内容
authing blog rqcode
添加 Authing 小助手
加入 Authing 开发者大家庭