OAuth 是 Open Authorization 的简写。OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是安全的。OAuth 2.0(开放授权)是一个认证框架,它允许应用程序访问您在其他应用程序上存储的个人信息,而无需共享您的密码。它是一种安全、简单、灵活的解决方案,已成为许多网站和服务使用身份验证和授权的开放标准。
假如我们是一个前后端分离的项目
前端地址:192.168.0.1
后端地址192.168.0.2
统一认证地址192.168.0.3
在我们这个前后端分离的项目中具体流程如下:
1.用户在客户端(浏览器)输入想要访问的资源URL,比如192.168.0.1:8080/page
2.因为没有任何授权,前端就会将请求重定向到统一认证的地址上,并拼接上redirectUri和appId,secrit等字段
3.用户在统一认证的地址上输入账号密码,通过认证后,认证服务器生成code,然后统一认证服务就会重定向到上面路径的redurectUri—192.68.0.1:8080/login路径并拼接刚刚生成的code
http://192.168.0.1:8080/login?code=33635289265
4.此时我们的前端服务已经获取到了code,前端服务拿这个code请求后端服务的getToken接口,后端的gettoken接口收到code后会调用方法请求统一认证的getToken服务接口,token认证成功后,此时后端会把token存储起来,并把token作为前端的请求的response给前端
5.此时前端服务已经接收到了token,前端token会将token保存起来,并保存在浏览器的cookie中。之后前端加载用户首次输入的访问地址,完成资源加载。
6.在首次认证完成后,token时效内,我们每次访问资源都会携带token完成资源加载。