zoukankan      html  css  js  c++  java
  • 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。
    适用场景:问卷调查、评论。
  • 相关阅读:
    Java接口自动化测试实战001----get、post方法实现与封装
    临近年关,两个磁盘占满引起的服务下线
    Abp小试牛刀之 图片上传
    Abp vNext异常处理的缺陷/改造方案
    Oh my God, Swagger API文档竟然可以这样写?
    【C#】DockPanelSuite 中 DockState.Document 状态下子窗体控件不显示的解决方案
    环境系列——cygwin启动flink
    环境系列——window10环境下编译Flink源码编译
    弱肉强食——《哆啦A梦:大雄的新恐龙》观后感
    bilibili插件推荐
  • 原文地址:https://www.cnblogs.com/menbo/p/14426369.html
Copyright © 2011-2022 走看看