0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SSO单点登录和OAuth2.0的区别和理解

Android编程精选 来源:CSDN 作者:CSDN 2022-11-07 11:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、概述

SSO是Single Sign On的缩写,OAuth是Open Authority的缩写,这两者都是使用令牌的方式来代替用户密码访问应用。流程上来说他们非常相似,但概念上又十分不同。SSO大家应该比较熟悉,它将登录认证和业务系统分离,使用独立的登录中心,实现了在登录中心登录后,所有相关的业务系统都能免登录访问资源。

OAuth2.0原理可能比较陌生,但平时用的却很多,比如访问某网站想留言又不想注册时使用了微信授权。以上两者,你在业务系统中都没有账号和密码,账号密码是存放在登录中心或微信服务器中的,这就是所谓的使用令牌代替账号密码访问应用。

二、SSO

两者有很多相似之处,下面我们来解释一下这个过程。先来讲解SSO,通过SSO对比OAuth2.0,才比较好理解OAuth2.0的原理。SSO的实现有很多框架,比如CAS框架,以下是CAS框架的官方流程图。特别注意:SSO是一种思想,而CAS只是实现这种思想的一种框架而已

f7809178-5dc7-11ed-a3b6-dac502259ad0.png

上面的流程大概为:

用户输入网址进入业务系统Protected App,系统发现用户未登录,将用户重定向到单点登录系统CAS Server,并带上自身地址service参数

用户浏览器重定向到单点登录系统,系统检查该用户是否登录,这是SSO(这里是CAS)系统的第一个接口,该接口如果用户未登录,则将用户重定向到登录界面,如果已登录,则设置全局session,并重定向到业务系统

用户填写密码后提交登录,注意此时的登录界面是SSO系统提供的,只有SSO系统保存了用户的密码,

SSO系统验证密码是否正确,若正确则重定向到业务系统,并带上SSO系统的签发的ticket

浏览器重定向到业务系统的登录接口,这个登录接口是不需要密码的,而是带上SSO的ticket,业务系统拿着ticket请求SSO系统,获取用户信息。并设置局部session,表示登录成功返回给浏览器sessionId(tomcat中叫JSESSIONID)

之后所有的交互用sessionId与业务系统交互即可

最常见的例子是,我们打开淘宝APP,首页就会有天猫、聚划算等服务的链接,当你点击以后就直接跳过去了,并没有让你再登录一次

三、OAuth2.0

OAuth2.0有多种模式,这里讲的是OAuth2.0授权码模式,OAuth2.0的流程跟SSO差不多,在OAuth2中,有授权服务器、资源服务器、客户端这样几个角色,当我们用它来实现SSO的时候是不需要资源服务器这个角色的,有授权服务器和客户端就够了。

授权服务器当然是用来做认证的,客户端就是各个应用系统,我们只需要登录成功后拿到用户信息以及用户所拥有的权限即可

用户在某网站上点击使用微信授权,这里的某网站就类似业务系统,微信授权服务器就类似单点登录系统

之后微信授权服务器返回一个确认授权页面,类似登录界面,这个页面当然是微信的而不是业务系统的

用户确认授权,类似填写了账号和密码,提交后微信鉴权并返回一个ticket,并重定向业务系统。

业务系统带上ticket访问微信服务器,微信服务器返回正式的token,业务系统就可以使用token获取用户信息了

简介一下OAuth2.0的四种模式:

授权码(authorization-code)

授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。

隐藏式(implicit)

有些 Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。RFC 6749 就规定了第二种方式,允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)“隐藏式”(implicit)

密码式(password)

如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)。

客户端凭证(client credentials)

最后一种方式是凭证式(client credentials),适用于没有前端的命令行应用,即在命令行下请求令牌。

简单流程

f961ef00-5dc7-11ed-a3b6-dac502259ad0.png

四、说一下几个名词的区别

首先,SSO是一种思想,或者说是一种解决方案,是抽象的,我们要做的就是按照它的这种思想去实现它

其次,OAuth2是用来允许用户授权第三方应用访问他在另一个服务器上的资源的一种协议,它不是用来做单点登录的,但我们可以利用它来实现单点登录。在本例实现SSO的过程中,受保护的资源就是用户的信息(包括,用户的基本信息,以及用户所具有的权限),而我们想要访问这这一资源就需要用户登录并授权,OAuth2服务端负责令牌的发放等操作,这令牌的生成我们采用JWT,也就是说JWT是用来承载用户的Access_Token的

最后,Spring Security、Shiro是用于安全访问的,用来做访问权限控制,都是一个用Java写的框架

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    13

    文章

    10114

    浏览量

    91023
  • SSO
    SSO
    +关注

    关注

    0

    文章

    9

    浏览量

    7697

原文标题:SSO 单点登录和 OAuth2.0 的区别和理解

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    qi2.2和qi2.0区别

    Qi2.0与Qi2.2在功率、兼容性和场景应用上各有突破,Qi2.2提升功率至25W,支持跨品牌兼容,推动无线充电技术发展。
    的头像 发表于 10-26 08:15 1078次阅读
    qi2.2和qi<b class='flag-5'>2.0</b>的<b class='flag-5'>区别</b>

    PCB设计中单点接地与多点接地的区别与设计要点

    常见的接地策略,分别适用于不同的场景。下面为您解析两者的核心区别及设计要点,帮助您更好地理解如何选择适合的接地方案。 PCB设计单点接地与多点接地区别与设计要点 一、
    的头像 发表于 10-10 09:10 1050次阅读
    PCB设计中<b class='flag-5'>单点</b>接地与多点接地的<b class='flag-5'>区别</b>与设计要点

    阿里巴巴开放平台关键字搜索商品接口实战详解:OAuth2.0 认证落地 + 检索效率优化(附避坑代码)

    在 B2B 电商数据对接中,阿里巴巴开放平台的关键字搜索商品接口(alibaba.aliindex.search)是获取批发商品、供应商数据的核心通道。但多数开发者会卡在OAuth2.0 认证断连
    的头像 发表于 09-16 16:26 678次阅读

    如何自动登录TestStand

    启动TestStand时弹出的登录界面,在日常使用中并无大碍,但当项目需要通过LabVIEW调用TestStand序列文件时,这个环节就会破坏程序运行的流畅性。
    的头像 发表于 08-28 10:43 822次阅读
    如何自动<b class='flag-5'>登录</b>TestStand

    ROHS检测仪的1.0与2.0区别 国产检测设备品牌新机会

    ”。企业在选择检测设备时,必须清晰地认识到1.0与2.0区别,并着眼于未来法规的持续收紧,选择能够满足当前及未来检测需求的先进设备。
    的头像 发表于 08-22 08:32 814次阅读
    ROHS检测仪的1.0与<b class='flag-5'>2.0</b><b class='flag-5'>区别</b> 国产检测设备品牌新机会

    单点失效保护的15W电源管理方案

    芯片单点失效保护是一种关键的安全设计机制,旨在确保当芯片的某一组件发生故障时,系统不会完全崩溃或引发连锁性失效,而是进入预设的安全状态。今天推荐的15W电源管理方案,主控芯片就自带单点失效保护功能。接下来,一起走进U6218C+U7712电源方案组合!
    的头像 发表于 07-08 13:44 708次阅读
    带<b class='flag-5'>单点</b>失效保护的15W电源管理方案

    复合机器人为什么要使用单点纠偏算法?

    复合机器人单点纠偏算法
    的头像 发表于 04-20 14:59 519次阅读
    复合机器人为什么要使用<b class='flag-5'>单点</b>纠偏算法?

    鸿蒙应用元服务开发-Account Kit配置登录权限

    一、场景介绍 华为账号登录是基于OAuth 2.0协议标准和OpenID Connect协议标准构建的OAuth2.0 授权登录系统,元服务
    发表于 04-15 16:03

    SSH远程登录与控制教程

    SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
    的头像 发表于 04-09 13:43 3993次阅读
    SSH远程<b class='flag-5'>登录</b>与控制教程

    华为乾坤云管理解决方案2.0正式发布

    ”)、CypressTel赛柏特通信技术有限公司(以下简称“CypressTel赛柏特”)等核心合作伙伴齐聚一堂,共同探讨AI时代下云管理网络技术的前沿趋势,并见证了华为乾坤云管理解决方案2.0的正式发布。
    的头像 发表于 03-26 11:24 1278次阅读

    无线红外单点温度传感器解决方案

    无线红外单点温度传感器方案结合了非接触测温与无线传输的优势,适用于多种场景。通过合理选择组件和优化设计,可实现高精度、低功耗的温度监测。
    的头像 发表于 02-28 14:48 1062次阅读
    无线红外<b class='flag-5'>单点</b>温度传感器解决方案

    多点位移计与单点位移计的作用有什么不同?

    在现代工程测量中,位移计作为一种重要的监测工具,广泛应用于各种结构物的变形监测。其中,多点位移计和单点位移计在功能和应用范围上存在显著差异,这使得它们在不同场景中发挥着独特的作用。功能特点1.单点
    的头像 发表于 02-24 14:14 809次阅读
    多点位移计与<b class='flag-5'>单点</b>位移计的作用有什么不同?

    deepseek登录不了怎么办?

    建议先检查网络连接,确认账号密码正确,尝试清除缓存或切换设备登录。若仍失败,可访问官方状态页查看服务公告,或联系客服协助解决。
    的头像 发表于 02-07 09:42 2056次阅读

    Java微服务中如何确保安全性?

    在Java微服务架构中确保安全性,可以采取以下措施: 身份验证与授权: 使用OAuth 2.0和OpenID Connect框架进行身份验证和授权。OAuth2允许用户在不分享凭证的情况下授权第三方
    的头像 发表于 01-02 15:21 1045次阅读

    如何远程登录路由器

    当路由器放置在机房、弱电箱等不方便直接操作的位置,或当网络出现故障或者需要远程协助时远程登录路由器可以极大的解决问,本期重点说明远程登录路由器的方法,供各位参考使用: 首先 ,需要确保家里的路由器
    的头像 发表于 12-18 12:01 1607次阅读
    如何远程<b class='flag-5'>登录</b>路由器