oauth2.0认证模式

本文采用springboot+redis实现了oauth2.0的认证模式,项目源码地址:https://gitee.com/menbbo/icore-sso
oauth2.0是一种开发授权标准,包括了4种认证模式,授权码模式、简化模式、密码模式以及客户端凭证模式。
1.授权码模式
  1)用户访问页面;
2)访问页面重定向到认证服务器;
3)认证服务提供登录页面,用户授权登录;
4)认证服务器生成授权码;验证clientId是否存在,redirectUri与clientId是否匹配。验证用户名与密码是否正确,如果正确则生成授权码,并保存在redis中,并携带授权码跳转至returnUrl;
5)通过授权码换取token,clientId、grantType(决定使用哪种验证模式)来生成accessToken和refreshToken,
并将其保存至redis中,并删除之前的授权码。
适用于第三方登录。优点:安全,第三方不需要用户名密码;缺点:需要多次访问认证服务器。
2.密码模式(账号密码去换取token)
1)用户在登录页面输入用户名密码;
2)登录页面使用用户名密码去认证服务器认证;
3)使用认证服务器返回的token去访问资源。
优点是不需要多次请求;缺点是认证服务器方和应用方需要高度依赖。
适用于自家公司搭建的认证服务器。
3.客户端凭证模式
1)用户访问应用客户端;
2)验证clientId与clientSecret是否匹配,匹配则生成accessToken、refreshToken保存并返回,无需用户授权;
3)使用token去访问资源服务器。
这是一种最简单的登录模式,只要客户端请求,就颁发ccessToken。使用的前提是对客户端完全信任,整个过程不需要
用户参与。
4.简化模式
简化模式不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过授权码模式。
1)用户访问应用页面,重定向到认证服务器;
2)认证服务器提供登录页面,用户授权登录;
3)认证服务器携带token跳转至returnUrl页面;
4)使用token访问资源。
优点是简单,缺点是无法存储refreshToken,导致无法刷新token。
适用场景:问卷调查、评论。
原文地址:https://www.cnblogs.com/menbo/p/14426369.html