鉴权和认证服务器

简介:

目前登录凭证的方式无非两种: 
一个是通过服务器端的session,一个是通过浏览器的cookie. 
简而言之:session和cookie

常规的是通过session 
步骤: 
1,用户在浏览器登录 
2,后台鉴权,若登录成功,则把用户信息写入session,servlet自动生成JSESSIONID 返回浏览器; 
3,浏览器把JSESSIONID 写入cookie 
说明:cookie是浏览器的存储文件,存储的只是JSESSIONID,而不是用户信息; 
JSESSIONID 只是一个钩子,用户信息其实存储在服务器端.

比如我在浏览器登录之后,重新打开一个标签页,输入相同的地址,仍然是登录状态,因为标签页共享cookie. 
也就是说我只要获取到JSESSIONID ,就可以获取用户隐私信息,比如除用户名以外的其他信息(密码,姓名,年龄等).也可以做一些敏感操作,比如修改密码

浏览器发送请求时会带上cookie 
这样服务器端才知道是否登录过: 

例如,我获取到JSESSIONID 之后,使用HTTP模拟发送请求: 

服务器端是如何判断是否登录

Java代码   收藏代码
  1. /*** 
  2.      * 判断是否已登录 
  3.      * 
  4.      * @param user2 
  5.      * @return 
  6.      */  
  7.     public static boolean isLogined(GenericUser user2, String loginFlag) {  
  8.         if (ValueWidget.isNullOrEmpty(user2) || ValueWidget.isNullOrEmpty(user2.getUsername())  
  9.                 || (!Constant2.FLAG_LOGIN_SUCCESS.equalsIgnoreCase(loginFlag))) {  
  10.             return false;  
  11.         } else {  
  12.             return true;  
  13.         }  
  14.     }  
  15.   
  16.     /*** 
  17.      * 判断是否已登录 
  18.      * 
  19.      * @param session 
  20.      * @return 
  21.      */  
  22.     public static boolean isLogined(HttpSession session) {  
  23.         String loginFlag = (String) session  
  24.                 .getAttribute(Constant2.SESSION_KEY_LOGINED_FLAG);  
  25.         GenericUser user2 = (GenericUser) session.getAttribute(Constant2.SESSION_KEY_LOGINED_USER);  
  26.         return isLogined(user2, loginFlag);  
  27.     }  

 

如果通过cookie呢?

详细流程,逻辑 

 
(1)登录前,浏览器先向认证服务器请求一个OTP,认证服务器返回OTP,同时返回一个cookie给浏览器; 

(2)认证服务器把OTP 和CCC(cookie) 挂钩
(3)登录时连同带上OTP 
(4)若登录成功,则认证服务器返回登录凭证(access token)给应用服务器; 
(5)认证服务器把CCC 和登录凭证挂钩
(6)通过CCC 可以判断用户是否有权限.

所以, 
(a)可以通过CCC 获取登录凭证 
(b)也可以通过OTP 获取登录凭证

根本原因:服务器把OTP 和CCC(cookie) 挂钩

那么CCC记在什么地方? 
浏览器

 

 

 

 

参考:http://blog.csdn.net/hw1287789687/article/details/48373209

 segmentfault 登录时,竟然使用明文密码:

 

相关文章
|
7月前
|
弹性计算 运维 监控
Apsara Clouder云计算专项技能认证:云服务器ECS
Apsara Clouder云计算专项技能认证:云服务器ECS
|
7月前
|
弹性计算 Linux 测试技术
ECS网页问题之认证实验考不了如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
5月前
|
网络安全
嗯… 无法访问此页面43.139.210.211 花了太长时间进行响应,无法连接宝塔,是服务器内的宝塔面板开启了ssl的验证,但是没有绑定证书,所以被拦截,关闭宝塔面板的ssl访问认证恢复正常
嗯… 无法访问此页面43.139.210.211 花了太长时间进行响应,无法连接宝塔,是服务器内的宝塔面板开启了ssl的验证,但是没有绑定证书,所以被拦截,关闭宝塔面板的ssl访问认证恢复正常
|
弹性计算
弹性计算Clouder认证:服务器迁移上云——课时10:实验练习与认证考试
弹性计算Clouder认证:服务器迁移上云——课时10:实验练习与认证考试
|
弹性计算 运维
弹性计算Clouder认证:ECS基础运维管理—课时12:实验练习与认证考试
弹性计算Clouder认证:ECS基础运维管理—课时12:实验练习与认证考试
|
弹性计算 运维 负载均衡
《阿里云认证的解析与实战-云计算ACP认证》——云计算ACP训练营第1天——二、云服务器ECS
《阿里云认证的解析与实战-云计算ACP认证》——云计算ACP训练营第1天——二、云服务器ECS
|
小程序 安全 定位技术
微信小程序学习实录4(开发前准备、认证必备资料、公众号关联小程序、小程序发布、开发配置、服务器域名、业务域名、位置接口设置)
微信小程序学习实录4(开发前准备、认证必备资料、公众号关联小程序、小程序发布、开发配置、服务器域名、业务域名、位置接口设置)
340 0
|
Linux 网络安全 数据安全/隐私保护
Linux 使用ssh密钥认证方式登陆另一台linux服务器
Linux 使用ssh密钥认证方式登陆另一台linux服务器
|
安全 JavaScript 小程序
Spring Cloud实战 | 第九篇:Spring Cloud整合Spring Security OAuth2认证服务器统一认证自定义异常处理
Spring Cloud实战 | 第九篇:Spring Cloud整合Spring Security OAuth2认证服务器统一认证自定义异常处理
|
SpringCloudAlibaba 前端开发 安全
SpringCloud Alibaba实战二十六 - Oauth2认证服务器自定义异常
SpringCloud Alibaba实战二十六 - Oauth2认证服务器自定义异常
407 0