身份认证系统(二)多WEB应用的单点登录
随着互联网的发展,web应用的复杂度也一直在提升,慢慢的单一的web应用已经不能满足复杂的业务需求。例如百度的搜索、新闻、百科、贴吧,其实本质上都是不同的网站。当用户使用这些平台的时候,我们当然不希望用户在每一个平台都有一个单独的账号,不然的话用户和开发者可能都会有想哭的冲动。所以我们就需要一种用户登录一次就可以访问所有相互信任的应用的系统,这种系统我们就管它叫单点登录(sso,Single Sign On)系统。
简单实现
在本系列的上一章的最后一节中我们介绍了基于cookie的认证模式,基于这种模式我们其实很容易实现一个单点登录系统。一般我们同一个系统的多个站点会在同一个顶级域名下(如,.baidu.com.cn),这样我们就可以让这些站点共享同一个顶级域名的cookie。这样只要一个站点登录了,所有的站点就都可以拿到登录认证信息。但是这种做法有两个缺点:
1、我们不一定能够保障我们所有的子系统都在同一个顶级域名下。
2、各个站点要分别实现一套登录认证功能。
鉴权与授权
在讨论如何解决仅仅基于cookie实现的单点登录系统的缺点之前,我们要先讨论另一个话题,就是鉴权与授权的分离。
我们一般说的登录系统指的是:识别用户身份,然后允许用户访问符合其身份权限的资源。这里边其实有两件事,识别用户身份这一步我们称之为鉴权,允许用户访问符合其身份权限的资源这一步我们称之为授权。在传统的单站点应用中,我们很少会将鉴权与授权分开来讨论,因为当时的登录功能简单。可是当代web站点的鉴权与授权都趋于多样化。比如在鉴权的时候我们可以使用账号密码、手机短信验证码、OAuth、人脸识别等等;同样不同站点对于授权的需求和权限的体系都是各不相同的。由于两者的多样化与不同,为了降低耦合,提高内聚,我们就有必要将鉴权与授权过程分开看待。
实现单点登录系统
当我们理解了鉴权与授权的概念之后,我们就很自然的会发现,一般来讲当各站点需要同一套认证体系的时候,其实他们的鉴权体系是统一的,而授权过程则可能各不相同。
我们来思考一下现实生活中我们是如何解决类似的问题的:当我们认定一个人是我们公司的员工的时候,我们就会有一个统一的部门制作和发放给我们员工一张工作证;然后员工更具这张工作证上的信息不同,决定了他在公司各个部门中能干什么不能干什么。
同样的我们可以制作一个统一认证站点来负责鉴权这步。当用户访问我们的一个站点的受保护资源的时候,我们先将用户重定向到统一认证站点;如果用户未登录,则跳到统一认证站点的登录界面进行登录,登录成功之后生成一个用户的身份票据(就像工作证一样),然后将票据信息返回给用户访问的站点;如果用户已登录,则跳过登录步骤,直接将用户的身份票据返回给用户访问的站点;然后不同的站点再根据自己的授权体系,决定用户是否能够访问响应的资源。
这样我们既解决了域名可能不统一的问题,又只需要实现统一分登录认证功能。
身份认证系统(二)多WEB应用的单点登录的更多相关文章
- 八幅漫画理解使用JSON Web Token设计单点登录系统
用jwt这种token的验证方式,是不是必须用https协议保证token不被其他人拦截? 是的.因为其实只是Base64编码而已,所以很容易就被解码了.如果你的JWT被嗅探到,那么别人就可以相应地解 ...
- 八幅漫画理解使用 JSON Web Token 设计单点登录系统
原文出处: John Wu 上次在<JSON Web Token – 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家 ...
- [转]八幅漫画理解使用JSON Web Token设计单点登录系统
上次在<JSON Web Token - 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家理解如何设计正常的用户认证系 ...
- 介绍 ASP.NET Identity - ASP.NET 应用程序的成员身份认证系统
ASP.NET Identity 是构建 ASP.NET web 应用程序的一种新的身份认证系统.ASP.NET Identity 可以让您的应用程序拥有登录功能,并可以轻松地自定义登录用户的相关数据 ...
- 基于DDD + SD.Framework实现的统一身份认证系统
项目地址 http://git.oschina.net/lishilei0523/ShSoft.UAC 项目说明 本项目开发的目的有三: 1.作为一个使用SD.Framework框架开发的项目样板 2 ...
- 中国科学技术大学统一身份认证系统CAS
CAS | Apereohttps://www.apereo.org/projects/cas 中国科学技术大学统一身份认证系统https://passport.ustc.edu.cn/login?s ...
- 身份认证系统(一)单WEB应用的身份认证
身份认证技术,也就是所谓的登录功能,是现代WEB系统最常见的功能之一.本系列文章就试图为大家详细的介绍身份认证技术. Basic认证模式 Basic认证模式是较早被广泛应用的一种HTTP标准提供的认证 ...
- Django用户认证系统(二)Web请求中的认证
在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authe ...
- Django认证系统实现的web页面
结合数据库.ajax.js.Djangoform表单和认证系统的web页面 一:数据模块 扩展了Django中的user表,增加了自定义的字段 from django.db import models ...
随机推荐
- POJ P1741 Tree 解题报告
Description Give a tree with n vertices,each edge has a length(positive integer less than 1001). Def ...
- BZOJ4513: [Sdoi2016]储能表(数位dp)
题意 题目链接 Sol 一点思路都没有,只会暴力,没想到标算是数位dp??Orz 首先答案可以分成两部分来统计 设 \[ f_{i,j}= \begin{aligned} i\oplus j & ...
- 1083 Cantor表
题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/ ...
- 01.JavaScript-->js组成
- XAMPP添加二级域名
1.在hosts中添加域名 2.点击config选择httpd.conf,去掉Include前面的#号 3.取消NameVirtualHost前面的##,在页面底端添加二级域名 4.重启xampp
- 鼠标事件-拖拽2(不能拖出指定对象的div)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- 微信小程序开发10-开发流程
1.Flex布局 Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为Flex布局. 2.设置容器,用于统一管理容器内项目布局,也就是管 ...
- unity对象物体闪烁
Material mat; // float a=0; //控制闪烁速度 float speed=0.6f; float b=1; Update(){ if(a>0.3f){ b=1; } if ...
- 应用程序 调用 webservice
首先用VS创建一个WebService服务工程,并且完成基本功能,本人完成的是html转pdf功能. 然后,新建一个Windows应用程序. 添加WebService到Windows项目中,如图 然后 ...
- Navicat for mysql 导出导入的问题
问题现象 1:使用navicat 导出5.6.20版本数据库,然后导入到5.7.19mysql出现错误: