关于会话模型其实网站已有很多帖子说明,其中有关于sessionid,cookie以及他们之间的关系,自己先了解吧

1 会话模型

会话模型是客户端和服务端交互的一种模型,会话模型友好的处理了客户端有无通信状态,不需要传输敏感数据等问题。

2 会话模型生命周期

2.1 开始阶段

客户端发起请求携带相关参数,如用户名与密码,服务器校验用户名与密码后进行授权,并将token(凭证)交回给客户端

2.2 保持阶段

每一次客户端带着由服务端颁发的token(凭证)交给服务端校验有效性然后访问具体接口,达到交互的目的,同时服务端监视token的是否超时等有效性

2.3 销毁阶段

当客户端主动退出登录时,即主动告诉服务端token失效并销毁,整个会话生命周期结束

以上会话生命周期揭露了最简单也是最本质的会话模型,来看一张流程图

3 sso

在会话模型中说明的会话生命周期已经简单本质化的阐述了会话模型。但是当我们的系统由1个变为多个的时候,或者说我们已经有了多个系统,我们每次在进行系统切换的时候都会进行登录,虽说简单但是比较麻烦,

像淘宝,一类的电商网站如果有上百个系统切换让你每次都要登陆那不得疯掉,于是单点登陆模型出现了,单点登录模型

3.1 sso模型

与会话模型一样,只不过大家都在sso中统一登陆,维持会话,等一些列活动,其实sso就是将多个会话模型服务实例统一为只有一个就好了,对于一个系统内部来说与我们的2一样,只不过在系统切换的时候我们需要将token带出来交给我们要访问的系统,要访问的系统得到token后,拿着这个token与服务器进行交互,对于sso来说认为你任然有效,来看一张流程图

3.2 系统切换免登过程

通过token的携带实现了多系统切换的免登录过程,这个跳转的具体过程看图所示

4 存在的不足

存在的不足那就是token放置在了url,不过我还没有想到其他方式,因为浏览器这样处理可以解决跨域读取cookie问题。安全性,说到安全性有人说什么url地址携带了token就不安全,我想问cookie就安全吗?

比如我们在浏览器控制台输入查看cookie不也是分分钟不安全,有什么不一样吗?说到安全要解决这个安全问题就得ssl或者公钥加密私钥解密等一些列安全策略了,而不是什么token爆不爆露看不看得见的问题了,如果你非要这么觉得那就是还没入门吧,呵呵。

以上是个人对于sso的实现与跨域实现的解决方法,如果有更好的方式解决,求之不得啊。

会话模型与SSO的更多相关文章

  1. Django 1.10 中文文档------3.3.8 会话sessions

    django支持匿名会话.它将数据存放在服务器端,并抽象cookies的发送和接收过程.cookie包含一个会话ID而不是数据本身(除非你使用的是基于后端的cookie). 3.3.8.1 启用会话 ...

  2. 会话session

    因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的.通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静 ...

  3. 根据CAS协议写的简单的SSO框架

      前言: 考虑到现在分布式应用都不可或缺的一个重要部分:单点登录,决定花点时间去学下.本来想直接上现成的CAS框架的,初步的了解了一下后,觉得这个太庞大了,而且不好定制,要完全深度用起来也没那么简单 ...

  4. django会话session

    因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的.通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静 ...

  5. c++ 网络编程(九)LINUX/windows-IOCP模型 多线程超详细教程及多线程实现服务端

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9661012.html 先讲Linux下(windows下在后面可以直接跳到后面看): 一.线程 ...

  6. 借助xxl-sso实现SSO

    前言 市场上一下主流的SSO技术搭配方案: SpringSecurity + OAuth2 SpringSecurity + CAS 功能较弱,对前后端分离的项目支持不是很好 Shiro + CAS ...

  7. .NET Core中JWT+Auth2.0实现SSO,附完整源码(.NET6)

    一.简介 单点登录(SingleSignOn,SSO) 指的是在多个应用系统中,只需登录一次,就可以访问其他相互信任的应用系统. JWT Json Web Token,这里不详细描述,简单说是一种认证 ...

  8. 第六章:Django 综合篇 - 6:会话session

    因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的.通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静 ...

  9. 集成基于CAS协议的单点登陆

    相信大家对单点登陆(SSO,Single Sign On)这个名词并不感到陌生吧?简单地说,单点登陆允许多个应用使用同一个登陆服务.一旦一个用户登陆了一个支持单点登陆的应用,那么在进入其它使用同一单点 ...

随机推荐

  1. hadoop 部署配置

    配置hadoop: 第一个:hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.7.0_65 选择修改日志文件目录(默认目录内日志文件太多易混): export ...

  2. 修改注册表删除Windows资源管理器 “通过QQ发送” 右键菜单项

    运行regedit 展开至:HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers 删除QQShellExt项

  3. nmap教程(下)

    九.脚本引擎 脚本文件存放在/usr/share/nmap/scripts目录下 SCRIPT SCAN: -sC: equivalent to --script=default #启用默认类脚本 - ...

  4. WPF的退出

    很多时候,会自己写退出程序的代码. 比如,先显示登录框(LogIn),成功后隐藏它,并显示一个主窗体(MainWin),或者外部还调用了其他App,当你关闭MainWin不一定会直接退出整个程序的. ...

  5. 注册COM组件cmd(管理员权限)

    比如,注册这个很老版本的office组件 C:\Windows\system32>regsvr32 d:\dsoframer.ocx

  6. steam更新出错 应用运行中

    游戏程序没有完全关闭,仍在后台运行. 打开任务处理器,选择进程,下面找到TslGame,关闭之.

  7. 一次IPC无法创建的问题

    背景说明:         后台子系统都是运行在pc上的linux         系统有多个子系统,有一个子系统负责统一启停其他子系统,这里把这个子系统称为olddriver.         ol ...

  8. ThinkDev.Data更新日志

    2013-09-29 10:001.重构Where.And.Or.Having.JoinTable代码,新增条件组合查询QueryGroup2.1.1.2.0 2013-09-04 09:001.修复 ...

  9. hdu2147kiki's game(找规律)

    kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/10000 K (Java/Others)Total ...

  10. jenkins配置git+maven+Publish over SSH

    一.配置git 1.新建项目,源码管理选择git 2.Repository URL输入git目录 3.Credentials中选择新增凭据,凭据类型选择SSH,usename输入git,passphr ...