身份认证技术,也就是所谓的登录功能,是现代WEB系统最常见的功能之一。本系列文章就试图为大家详细的介绍身份认证技术。

  Basic认证模式

  Basic认证模式是较早被广泛应用的一种HTTP标准提供的认证模式。最常见的形式之一就是在url中直接写上用户名密码向服务器提供身份:

  http://user:passwd@www.server.com/index.html

  在Basic模式之中,每次向服务器请求受保护资源的时候都要在url中带上明文或仅被Base64编码过的用户名密码。而且在这种模式下,如果我们要实现“记住登录状态”功能,就需要将用户名密码这样的敏感信息直接换存在浏览器中。这样就形成了它最主要的两个缺点:

  1、每个请求中都要带有用户名和密码凭据

  2、安全性堪忧

  基于session的认证模式

  为了解决每次请求敏感资源都要带有用户名密码凭证的问题,web开发者们形成了一套基本的实践模式,就是将用户认证后的身份存储于服务端管理的会话(session)之中,以此来减少使用过程中对凭据的传输。

  

  用户想要请求受保护资源,先要登录,想服务端发送用户名密码。服务端验证用户名密码成功之后将用户的身份验证标识存储在session 中,然后将sessionId存储在cookie 中。之后当客户再去请求受保护资源的时候,只要携带好cookie中的sessionId就可以验证其身份返回敏感数据了。

  这种基于session的认证模式犹豫其简单、方便、好用,所以被广泛使用。但是随着web应用的发展,其也出现了诸多不足:

  1、当服务器应用重启时,用户会被强制登出

  2、当站点用负载均衡部署多份时,每个站点实例的session无法共享

  当然,我们可以使用单独的session存储服务来解决这些问题,但这样会增加系统不小的复杂性与维护成本。

  基于cookie的认证模式

  既然使用session会产生诸多的问题,那我们是不是可以有一种类似的方案来解决这种问题呢?答案肯定是有的,那就是将认证信息直接存储在客户端的cookie中。

  但是存在客户端就会面临着一系列的安全问题,例如,我直接在cookie中以用户id存储标识,那是不是用户自己篡改cookie改称别的用户id就可以切换自己的身份了呢?因此这就要涉及到cookie信息加密和解密。

  除了加密与解密以外还有现在常用的一种解决方案:就是存储票据(ticket)。在用户登录成功之后,站点生成一个ticket,一方面将用户身份信息存储在服务端缓存中,以ticket为key;另一方面,将ticket存储到用户的cookie中。这样,用户再要访问敏感信息时,只需要每次都带上自己cookie中的ticket就可以了。这种方法其实和使用session很像,但是因为现在基本上缓存服务已经属于必备的基础组建了,所以并不会增加过多额外的成本,而且缓存服务相比session也比较好做长时间的数据存储。

身份认证系统(一)单WEB应用的身份认证相关推荐

  1. CAS 介绍 单点登录认证系统

    CAS 介绍  CAS(Central Authentication Service),是耶鲁大学开发的单点登录系统(SSO,single sign-on),应用广泛,具有独立于平台的,易于理解,支持 ...

  2. 大型企业CA认证系统部署应用案例解析

    国内某上市公司信息化起步较早,应用系统主要分布于总公司.局公司.处公司三级单位.已经初步实现OA系统的信息整合,信息化工作进一步将围绕信息流.工作流的整合,项目管理系统的建立以及公共基础安全平台建设展 ...

  3. 校园网认证系统安全测试(绕过)

    关爱在校大学生,反对高校封校,高校不是监狱,开学不是坐牢!!! 文章目录 前言 前言 任何未经授权的渗透测试都是违法犯罪!!!未授权的信息收集是盗窃的犯罪行为!!!今天我来带各位高校的校园网运维来看一 ...

  4. Vert.x(vertx) 认证和授权详解(包含认证和授权在Web系统中的使用)

    每个线上系统几乎都是离不开认证和授权的,Vert.x提供了灵活.简单.便捷的认证和授权的支持.Vert.x抽象出了两个核心的认证和授权的接口,一个是AuthProvider,另一个是User.通过这两 ...

  5. (chap8 确认访问用户身份的认证) 基于表单认证

    1. 定义 基于表单的认证方法并不是在HTTP协议中定义的.客户端会向服务器上的Web应用程序发送登录信息( Credential ),按登录信息的验证结果认证. 根据Web应用程序的实际安装,提供的 ...

  6. 安全网络身份认证系统的设计与实现

    本文章源码地址:https://gitee.com/sukels/shirohttps://gitee.com/sukels/shiro 摘  要 随着互联网的飞速发展,Web应用的安全问题日益凸显. ...

  7. 如何选择laravel的身份认证系统

    laravel认证生态系统概述 Laravel提供了一些与身份验证相关的软件包.在继续之前,我们将回顾Laravel中的常规身份验证生态系统,并讨论每个软件包的预期目的. 首先,请考虑身份验证的工作原 ...

  8. Web服务统一身份认证协议设计与实现

    单点登录(SSO)是目前比较流行的企业业务整合的解决方案之一,它的机制是在企业网络用户访问企业网站时作一次身份认证,随后就可以对所有被授权的网络资源进行无缝的访问,而不需要多次输入自己的认证信息.We ...

  9. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储

    原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...

最新文章

  1. arrays.sort(._Arrays.sort与Arrays.parallelSort
  2. 模型算法_推荐算法之隐语义模型
  3. 【优化预测】基于matlab天牛须算法优化ELMAN神经网络预测【含Matlab源码 1375期】
  4. 全局变量在多个进程中不共享
  5. 高德地图看各省分界线_请教 高德地图绘制行政区划边界
  6. c语言中头文件及其作用,C语言头文件的作用是什么
  7. 软件测试动态分析,静态分析工具和动态测试工具
  8. 读懂Redis源码,我总结了这7点心得
  9. Excel 科学计数法数值转换
  10. 11【matplotlib常用统计图】03绘制多次条形图
  11. [java]自动生成指定长度的英文名字
  12. node 多版本管理 nvm-window(适用win7 win10)
  13. linux命令 du -h --max-depth=0,查看当前目录下文件大小
  14. jdk9模块化简单介绍
  15. Python番外篇:电脑读心术程序 快给你的同事朋友玩一玩
  16. 微软必应词典的调查与研究
  17. springboot_游戏虚拟物品交易平台
  18. No module named _lzma
  19. 【初识C语言】用C语言实现猜数字游戏
  20. 俄罗斯起草法案建议设立离岸公司交易加密货币

热门文章

  1. Jupyter Notebook简介、安装及使用教程
  2. OCR识别驾驶证识别私有云
  3. 彩虹之上:神经生理学中有效使用彩色图的指南
  4. 中国光伏逆变器行业供需调查分析与发展战略规划研究报告2022-2028年版
  5. SEO页面分析,你不容忽略的一个细节
  6. Opencv学习笔记 图像拼接一全景拼接
  7. 项目中添加音效--依旧的简单使用
  8. 【shell案例】创建用户案例
  9. 【庖丁解牛】configure: WARNING: unrecognized options: --with-mcrypt, --enable-gd-native-ttf
  10. C语言实现小游戏——模拟微信小游戏《最强飞刀手》