1.请求安全-- 一个简单的 单设备登录 单点登录

简介:

一个简单的 SSO 单点登录 单设备登录 解决方案

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。

实现SSO的技术主要有: (1)基于cookies实现; (2) Broker-based(基于经纪人),例如Kerberos等; (3) Agent-based(基于代理人)在这种解决方案中例如SSH等; (4) Token-based,例如SecurID,WebID,现在被广泛使用的口令认证; (5) 基于网关Agent and Broker-based; (6) 基于安全断言标记语言(SAML)实现;

但是本文今天不会用到以上方法,但是我们使用方法类似于Token;

写本次文章的起初是为了解决链接捕获访问服务器的问题,但是单凭单点登录和单设备登录是解决不了这个问题的,要配合上(加密,MD5校验,请求唯一性验证,单点登录,单设备登录)来组成一个比较完善的安全验证机制.(后面文章会一一说道)

下面开始说正题,对于API来说一般需要单点登录的系统都需要进行登录的操作,那登录操作我们会做下面几件事情.

1.获取用户名密码进行登录验证用户是否有效作判断. 2.拿着返回的ID给前端让他可以进行进一步操作.

当然可以直接用ID 直接实现单点登录 但是无法实现单设备登录而且直接暴露安全性担忧

基本登录接口做的操作就是以上两种,那么关键点来了,我在思考分析的时候在想如果每次调用登录获取的ID都是一个临时ID. 当下次登录的时候失效是不是就可以达到单设备登录的效果了,这个临时ID对应着真正的用户ID每次客户端请求都是拿着临时ID请求过来然后我们做验证,不就行了嘛.而且这个临时ID是后端共享的只有一个登录接口或获取临时ID其他所有模块都能使用来达到单点登录. 这样就解决了单设备登录和单点登录的问题.

当然如何实现是最后一个问题

既然是临时ID而且每个接口都会去读取验证,那当然不能用数据库,最好我选择了用NOsql中的Redis来作为临时ID的临时存储

登录接口需要做的事情如下:

1.第一步从Redis中用Id取临时ID 检测有没有 
2.生成Cipher(临时密码也就是临时ID)
3.根据第一步检测做不同的处理 如果存在删除原有的 Cipher关联ID 的key-value 
4.创建两个key-value 一个是id对应Cipher  一个是Cipher对于Id

验证验证需要做的事情

1.通过客户端请求的Cipher获取Redis的value2.value如果不存在返回错误 登录已经失效
3.value存在返回value作为ID 进行操作

通过以上方法就解决的 标题所述的 单点登录 单设备登录的问题 

相关文章
|
11月前
|
缓存 小程序 前端开发
【Uniapp】小程序携带Token请求接口+无感知登录方案2.0
【Uniapp】小程序携带Token请求接口+无感知登录方案2.0
283 0
|
4月前
|
数据安全/隐私保护 Windows
配置用户通过Telnet登录设备认证
配置用户通过Telnet登录设备认证
|
4月前
|
存储 前端开发 JavaScript
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
75 1
|
4月前
|
JSON 安全 网络安全
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
821 0
|
11月前
|
缓存 小程序 NoSQL
【Uniapp】小程序携带Token请求接口+无感知登录方案
【Uniapp】小程序携带Token请求接口+无感知登录方案
252 0
|
存储 负载均衡 前端开发
关于浏览器存储与登录鉴权我所知道的。
关于浏览器存储与登录鉴权我所知道的。
206 0
Jasny SSO是否支持多种身份提供者?
Jasny SSO是否支持多种身份提供者?
|
JSON 安全 前端开发
如何认证当前的操作用户?
如何认证当前的操作用户?
|
NoSQL Redis 数据安全/隐私保护
基于Token认证的多点登录和WebApi保护
原文 基于Token认证的多点登录和WebApi保护 在文章中有错误的地方,或是有建议或意见的地方,请大家多多指正,邮箱: linjie.rd@gmail.com   一天张三,李四,王五,赵六去动物园,张三没买票,李四制作了个假票,王五买了票,赵六要直接FQ进动物园   到了门口,验票的时候...
2905 0
|
数据安全/隐私保护
4 登陆认证模块配置
登录验证 首先我们确认一件事情,app端与服务器通信的时候,我们需要保证用户登录的唯一性。简单的来说,就是我们通过用户名和密码登录的时候要能够保存住用户的唯一信息,在web端开发的时候,我们通常使用session或者cookie来存在用户唯一值,然后进行判断。
754 0