a466350665 / smart-sso

SpringBoot SSO 单点登录 权限认证,OAuth2实现,支持跨域、前后端分离、分布式部署
MIT License
2.17k stars 1.2k forks source link

应用系统检验token时,为什么没有从cookie取值 #37

Open lizhengjun1982 opened 6 years ago

lizhengjun1982 commented 6 years ago

单点登录系统验证通过后,是有把token写入到cookie中,但应用系统检验token时,并没有从cookie取值,而是从queryString中取值,而且还再次做了一次跳转,以消除url中的token参数,如此一来,同时把所有的queryString参数都消除了。

单点登录系统验证通过后,往cookie中写入了token,跳转回应用系统页面时,其实不需要在url中携带token参数了,而且在应用系统这边检验token时,直接从cookie中取值即可,也无需再次跳转。如此不是很简单,很方便吗?

牵涉代码:com.smart.sso.client.SsoFilter类的isAccessAllowed方法。

ybbbzZ commented 5 years ago

其实这里我也一直不理解,不知道您现在有没有搞懂,搞懂的话可以解释下吗? image

其实这里的代码逻辑对应的sso校验流程图里的-->本地token不存在,要去服务端去校验<--这一步的吧,就是下图的这部分逻辑,但为什么这里却没有走rpc调用去检测服务端是否存在token,而是从request里直接取值,百思不得其解。看到作者说request.getParameter(SSO_TOKEN_NAME)里的SSO_TOKEN_NAME是sso授权回调的参数token名称,但在哪里回调的代码又找不到,实在费解,您现在懂得话,还请指点一下。 image

ybbbzZ commented 5 years ago

@a466350665

a466350665 commented 5 years ago

登录成功后,redirect回调时传的参数

------------------ 原始邮件 ------------------ 发件人: "ybbbzZ"notifications@github.com; 发送时间: 2019年9月5日(星期四) 中午11:57 收件人: "a466350665/smart"smart@noreply.github.com; 抄送: "Subscribed"subscribed@noreply.github.com; 主题: Re: [a466350665/smart] 应用系统检验token时,为什么没有从cookie取值 (#37)

其实这里我也一直不理解,不知道您现在有没有搞懂,搞懂的话可以解释下吗?

其实这里的代码逻辑对应的sso校验流程图里的-->本地token不存在,要去服务端去校验<--这一步的吧,就是下图的这部分逻辑,但为什么这里却没有走rpc调用去检测服务端是否存在token,而是从request里直接取值,百思不得其解。看到作者说request.getParameter(SSO_TOKEN_NAME)里的SSO_TOKEN_NAME是sso授权回调的参数token名称,但在哪里回调的代码又找不到,实在费解,您现在懂得话,还请指点一下。

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

lizhengjun1982 commented 5 years ago

我的实现方式有所不同。

Gahon1995 commented 5 years ago

登录时返回写入的cookie只是对应登录页面域名的cookie,并没有保存到当前client端对应域名下的cookie,所以只能通过url携带token,通过拦截验证再次跳转的方式来将token写到当前域名的cookie中