首页 > 其他分享 >单点登录

单点登录

时间:2023-05-26 12:13:39浏览次数:24  
标签:单点 登录 用户 cookie 应用 授权

1、概念

单点登录SSO,说的是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。

2、单点登录的要点

存储信任;
验证信任;

3、实现单点登录的三种方式

(1)以cookie作为凭证

最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。

用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie进行校验,校验通过则登录当前用户。

缺点:

cookie不安全

通过加密可以保证安全性,但如果对方掌握了解密算法就完蛋了。

不能跨域实现免登

(2)通过JSONP实现

对于跨域问题,可以使用JSONP实现。用户在父应用中登录后,跟session匹配的cookie会存到客户端中,当用户需要登录子应用的时候,授权应用访问父应用提供的JSONP接口,并在请求中带上父应用域名下的cookie,父应用接收到请求,验证用户的登录状态,返回加密的信息,子应用通过解析返回来的加密信息来验证用户,如果通过验证则登录用户。

缺点:

这种方法虽然能解决跨域问题,但是治标不治本,没有解决cookie安全性的问题。

(3)通过页面重定向的方式

最后一种介绍的方式,是通过父应用和子应用来回重定向进行通信,实现信息的安全传递。

父应用提供一个GET方式的登录接口A(此时的父应用接口固定,攻击者无法去伪造),用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个登录页面,用户输入账号密码进行登录,如果用户已经登录了,则生成加密的token,并且重定向到子应用提供的验证token的接口B(此时的子应用接口固定,攻击者无法去伪造),通过解密和校验之后,子应用登录当前用户。

缺点:

这种方式较前面的两种方式,是解决了安全性和跨域的问题,但是并没有前面两种方式简单,安全与方便,本来就是矛盾的。

4、使用独立登录系统

一般来说,大型应用会把授权的逻辑和用户信息的相关逻辑独立成一个应用,称为用户中心。用户中心不处理业务逻辑,只是处理用户信息的管理以及授权给第三方应用。第三方应用需要登录的时候,则把用户的登录请求转发给用户中心进行处理,用户处理完毕后返回凭证,第三方应用验证凭证,通过后就登录用户。

5、sso(单点登录)与OAuth2.0(授权)的区别?

(1)sso(单点登录)

通常处理的是一个公司的不同应用间的访问登录问题,如企业应用有很多子系统,只需登录一个系统,就可以实现不同子系统间的跳转,而避免了登录操作;
通过cookie、jsonp、重定向来实现;

(2)OAuth2.0(授权)

解决的是服务提供方(如微信)给第三方应用授权的问题,简称微信登录;
是一种具体的协议,只是为用户资源的授权提供了一个安全的、开放的而又简易的标准,OAuth2.0(授权)为客户开发者开发web应用,桌面应用程序,移动应用及客厅设备提供特定的授权流程。

标签:单点,登录,用户,cookie,应用,授权
From: https://www.cnblogs.com/october-sy/p/17434377.html

相关文章

  • Ruby实践—用户登录
    开发环境Ruby:Ruby1.9.1Rails:Rails2.3.5Mysql:Mysql5.0.9Driver:mysql-2.8.1-x86-mingw32.gemIDE:Rubymine2.0.1 一、创建View/login在View/login下创建login.html.erb、index.html.erb、loginFail.html.erblogin.html.erb代码如下:<h1>Welcometologin!</h1><%form_tagdo%......
  • 微信小程序授权登录
    需要的数据库字段:openid,nickName,session_key 需要Token,去官网现在jwt的扩展JSONWebTokenLibraries-jwt.io在app下面创建一个server目录接着新建一个Token类下面是封装Token的代码<?phpnamespaceApp\server;useFirebase\JWT\JWK;useFirebase\JWT\JWT;class......
  • Linux首次登录入与寻求帮助(Linux的简单使用)
    Linux首次登录入与寻求帮助一些Linux中使用的常用命令与技巧:进入终端系统方式(纯文本环境):按ctrl+alt+F2会进入tty2,同理F3~F7均可分别进入tty3~tty7,只有tty1是图形化界面(如果已经安装了图形界面了),在文本环境中按ctrl+alt+F1会进入图形化界面在文本模式注销......
  • linux命令全部失效+无法登录 极限操作
    背景在kali上大概用了有两个月,这两个月可以说喜忧参半喜:kali系统优化的很好,不管是开机关机还是运行应用程序,都非常快,非常流畅,配合占用超小的xcfe桌面,爽飞忧:由于我是直接安装在物理机上的,原本是打算做开发和逆向用,但这个系统做开发和逆向,bug实在是太多,而且缺少很多必要的so文件(......
  • 宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
    宝塔面板登录phpMyAdmin提示服务器和客户端上指示的HTTPS之间不匹配https://www.niuqi360.com/btpanel/mismatch-between-https-indicated-on-server-and-client/......
  • drf之登录功能,认证组件,权限组件,频率组件
    目录一、登录功能表模型视图类回顾路由二、认证组件认证组件使用步骤(固定用法)三、权限组件权限类的使用步骤四、频率组件频率类的使用步骤一、登录功能表模型classUserInfo(models.Model):name=models.CharField(max_length=32)password=models.CharField(max_......
  • django配置文件作用,drf 登录功能,drf认证组件,drf权限组件,drf频率组件
    django配置文件作用:    drf登录功能:view内:from.modelsimportUserInfo,UserTokenfromrest_framework.viewsetsimportViewSetimportuuidfromrest_framework.responseimportResponsefromrest_framework.decoratorsimportactionclassUser......
  • Portainer 忘记了管理员登录密码。。。
    前言Portainer应该都比较熟悉了,它是一个轻量级的管理UI ,可让你轻松管理不同的Docker环境。系统不常使用后,密码也没有记录过,这就更容易忘记账号密码了,是不是就无法在使用系统了呢?答案当然不是,也就是在多折腾折腾,最终还是可以解决问题的。操练查看容器是否正常运行服务正常运行,......
  • oracle express 18安装后初次登录
    打开SQLPlus请输入用户名:sys/"安装时设置的密码"@XEassysdba连接到:OracleDatabase18cExpressEditionRelease18.0.0.0.0-ProductionVersion18.4.0.0.0新建用户并授权:SQL>createuserc##vocanoidentifiedbyvocano;用户已创建。SQL>grantconnec......
  • MAUI Blazor学习7-实现登录跳转页面
    MAUIBlazor学习7-实现登录跳转页面 MAUIBlazor系列目录MAUIBlazor学习1-移动客户端Shell布局-SunnyTrudeau-博客园(cnblogs.com)MAUIBlazor学习2-创建移动客户端Razor页面-SunnyTrudeau-博客园(cnblogs.com)MAUIBlazor学习3-绘制ECharts图表-SunnyTrudeau......