1.请求安全-- 一个简单的 单设备登录 单点登录
来源:互联网 发布:逍遥安卓无法连接网络 编辑:程序博客网 时间:2024/06/16 18:08
一个简单的 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的value值2.value如果不存在返回错误 登录已经失效3.value存在返回value作为ID 进行操作
通过以上方法就解决的 标题所述的 单点登录 单设备登录的问题
0 0
- 1.请求安全-- 一个简单的 单设备登录 单点登录
- 一个简单的单点登录构思
- 单点登录->请求登录
- 单设备登录与单点登录(SSO)
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 简单的单点登录实例
- 简单的单点登录实例
- php简单的单点登录
- 单点登录的简单实现
- 一个yale-cas实现单点登录的简单例子实现
- 一个简单的asp.net 单点登录实现
- 单点登录原理和java实现简单的单点登录
- POI读取word转换html
- 当你在浏览器中输入Google.com并且按下回车之后发生了什么?
- 深度解析 ES6 第一篇
- ESP8266学习笔记6:ESP8266规范wifi连接操作
- php配置项-安全模式
- 1.请求安全-- 一个简单的 单设备登录 单点登录
- git push 每次都需要输入用户名和密码
- Android NDK Opengl es开发初步接触
- Android 系统状态栏一体化
- 2.请求安全-- MD5的必要性以及实际应用场景
- StateListDrawable使用详解
- setTimeout和setInterval的区别你真的了解吗?
- App工程结构搭建:几种常见Android代码架构分析
- hadoop提交任务后日志存放问题