|
Cookie的secure属性引起循环登录问题分析及解决方案
服务器团队
vivo互联网技术
vivo互联网技术 维沃移动通信有限公司 分享 vivo 互联网技术干货与沙龙活动,推荐最新行业动态与热门会议。 436篇内容
2024年09月04日 20:00
广东
作者:来自 vivo 互联网服务器团队- Wang Fei单点登录作为公共组件,在各个公司内部被各个系统所广泛使用,但是在使用过程中我们会遇到各种各样的问题,其中循环登录问题就是一个比较经典的问题。本文主要分析单点登录和权限系统设计的基本原理,然后结合实际案例来分析循环登录的原因,并给出具体的解决办法。一、单点登录简单介绍1.1 基本概念一个公司内部可能存在多个系统,如果每一个人在使用不同系统的时候都需要重新登录,那么会做大量系统登录切换、耗费比较多的精力去管理账号和密码,那么有没有办法在一个公司内部的所有系统只需要一次登录验证,后续使用其他系统的时候不用重复登录就可以直接使用呢,这就是单点登录要解决的问题。单点登录英文全称 Single Sign On(SSO),允许用户一次登录即可访问多个应用程序或系统,无需为每个应用程序或系统分别输入认证凭据,便可在其他所有系统中得到授权,无需再次登录。1.2 基本实现原理用户登录:用户在任何一个应用程序或系统中进行身份验证,并提供他们的凭据。认证系统验证:该凭据被发送到认证系统进行验证。如果凭据有效,则认证系统会为用户生成数字签名的令牌(如 Token 或 Ticket)。令牌分发:认证系统将令牌返回给应用程序或子系统。应用程序或系统授权:应用程序或系统使用令牌验证用户的身份,并授权其访问相应资源或服务。跨域系统访问:用户可以通过同一令牌访问多个跨域应用程序或系统,而无需重复进行身份验证。 二、循环登录问题在某一天我们登录一个内部系统时,突然出现了循环登录问题,前端页面不断刷新,提示“重定向次数过多问题”。打开前端调试功能, 我们会发现确实存在大量重定向请求的问题:那么平时登录没问题的系统为什么突然间就循环登录呢并在页面上提示的解决方法“尝试删除您的 Cookie 操作”,按照这个操作以后,确实系统又可以跳转到登录页面正常进行登录了,这又是什么原因?下面我们将逐一分析。三、从一次正常登录流程说起上述是一个通用的系统权限管控和单点系统认证的标准流程:用户第一次访问时,在浏览器输入 https://aaa.x.y回车权限系统进行拦截,判断用户是否登录,这里主要是通过是否有登录信息判断,如果没有登录,权限系统会帮我们跳转到单点登录系统,弹出用户登录页。用户填写用户名、密码,单点登录系统进行认证后,将登录状态写入 SSO 的 session。SSO 系统登录完成后会给我们的系统生成一个 Token ,然后跳转到我们的系统,同时将 Token 作为参数传递给我们的系统。我们系统拿到 Token 后,从后台向 SSO 发送请求,验证 Token 是否有效。验证通过后,我们系统将记录顶级域下的 Cookie 信息。Connection: keep-aliveContent-Length: 0Date: Wed, 25 Oct 2023 08:29:43 GMTLocation: http://aaa.x.y/console/login/authredirectUrl=http://aaa.x.y/optrace: xx.xx.xx.xx:80/302
|
|