zl程序教程

您现在的位置是:首页 >  前端

当前栏目

鉴权和认证服务器

2023-09-14 08:59:45 时间

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

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

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

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

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

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


    public static boolean isLogined(GenericUser user2, String loginFlag) {           if (ValueWidget.isNullOrEmpty(user2) || ValueWidget.isNullOrEmpty(user2.getUsername())                   || (!Constant2.FLAG_LOGIN_SUCCESS.equalsIgnoreCase(loginFlag))) {               return false;           } else {               return true;           }       }       /***       * 判断是否已登录       *       * @param session       * @return       */       public static boolean isLogined(HttpSession session) {           String loginFlag = (String) session                   .getAttribute(Constant2.SESSION_KEY_LOGINED_FLAG);           GenericUser user2 = (GenericUser) session.getAttribute(Constant2.SESSION_KEY_LOGINED_USER);           return isLogined(user2, loginFlag);       }  

如果通过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 登录时,竟然使用明文密码:

 


超聚变服务器操作系统FusionOS与阿里云PolarDB数据库完成兼容性认证 近日,超聚变服务器操作系统FusionOS签署阿里巴巴开源CLA(Contribution License Agreement, 贡献许可协议), 正式与阿里云PolarDB 开源数据库社区牵手,并率先展开超聚变服务器操作系统FusionOS 22与阿里云PolarDB数据库管理软件兼容性适配认证。
【最简OAuth 2.0 教程】开发认证中心及资源服务器接入 背景: 网上很多讲配置 oauth2 ,配置方法 复杂纷繁对于初学者很不友好,让人望而却步 欢迎关注本系列博客 基于 spring cloud 最新版本 hoxton 完成oauth2 的实践
基于 Spring Cloud OAuth ,用简洁的方式搭建oauth的认证中心, 关于oauth2 的授权模式 请直接参考 [阮一峰 OAuth 2.
[教程]在CentOS7上配置 FTP服务器 Proftpd 支持 MySQL 虚拟用户加密认证以及磁盘限额(Quota) 本文软件采用 yum 安装,不需要编译,而且随时都可以跟随 CentOS 升级 Proftpd 到最新版本,以避免可能的漏洞攻击。利用 Proftpd 现成的配置以及设置好的各种模块,可以实现 sftp 和 ssh 的结合,完美的实现虚拟用户加密密码存放于数据库。
最近在开发一个 Android 程序,需要做用户登录和认证功能,另外服务器用的是 Laravel 框架搭建的。
黄威的世界 我是一个热衷IT技术的人,希望自己不断地设计开发出对别人非常有用的软件。有近7年的java开发经验(包括2年Android开发经验)和一年左右的linux使用经验。擅长Java Web后台开发 ,喜欢研究新的各种实用技术