We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cookie原理解析
就是浏览器独有的一个特性,即每次发送请求都会在header中带上cookie这个请求头,所以可以用来保存一些信息,后端通过设置 Set-Cookie 请求头来给客户端设置cookie。
Set-Cookie
缺点:
代码实现:https://github.com/chaijinsong/node-study/tree/master/auth/cookie
session原理
由于cookie不能放敏感信息,并且存储空间不够大。所以可以考虑在后端存储,那么在cookie中存储的其实是一个key,后端接收到请求后通过cookie拿到key,然后去session对象中去拿对应的值。这样就在服务端保存了用户的状态信息,并且客户端也拿不到敏感信息。
代码实现:https://github.com/chaijinsong/node-study/tree/master/auth/session
过程回顾 用户登录的时候,服务端生成一个token返回给客户端 客户端后续的请求都带上这个token 服务端解析token获取用户信息,并响应用户的请求 token会有过期时间,客户端登出的时候也会废弃token,但是服务端不需要任何操作
过程回顾
代码实现:https://github.com/chaijinsong/node-study/tree/master/auth/token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoidGVzdCIsImV4cCI6MTU4NTQ5NjY0NCwiaWF0IjoxNTg1NDkzMDQ0fQ.Y2Vst5n9-wFXx_UhvEIsjRuMiDFOZF-ZqxdAICmA13I
其中令牌头和 payload 是固定的内容,后面的哈希值则是根据``令牌头 和 payload+secret `生成的hash,所以在鉴权的时候,如果令牌头和 payload 被修改,那么和最后的hash值是不对应的,算是鉴权失败
+
过程: 用户访问app系统,app系统需要登录,此时用户没有登录 跳转到 sso 登录系统,sso登录系统也没有登录,此时弹出用户登录页面 用户填写用户名密码,sso系统认证后,将登录状态写入sso的session中,浏览器中写入sso域名下的cookie sso系统登录完成后生成一个 token,然后跳转到 app 系统。将token作为参数传给 app 系统 app系统拿到 token 后,从后台向sso系统发送请求,验证 token 是否有效 验证通过后,app系统将登录状态写入session,并设置app域名下的cookie 至此,跨域单点登录就完成了,以后我们再次访问app系统时,app就是登录的。接下来看访问 app2系统时的流程 用户访问 app2 系统,app2 系统没有登录,跳转到 sso 系统进行登录 跳转到 sso 登录页面后,发现sso系统域名下存在cookie,说明sso系统已经处于登录状态了,不需要重新登录认证 sso系统生成 token,浏览器跳转到 app2 系统,并将token作为参数传递给app2 app2拿到token,后台访问 sso 验证token是否有效 验证成功后,app2将登录状态写入session,并且在app2域名下设置cookie 这样app2系统不需要走登录流程,就已经是登录状态了。
过程:
至此,跨域单点登录就完成了,以后我们再次访问app系统时,app就是登录的。接下来看访问 app2系统时的流程
这样app2系统不需要走登录流程,就已经是登录状态了。
代码实现:https://github.com/chaijinsong/node-study/tree/master/auth/sso
The text was updated successfully, but these errors were encountered:
No branches or pull requests
鉴权-登录认证
文章目标
session-cookie方式
cookie原理解析
就是浏览器独有的一个特性,即每次发送请求都会在header中带上cookie这个请求头,所以可以用来保存一些信息,后端通过设置
Set-Cookie
请求头来给客户端设置cookie。缺点:
代码实现:https://github.com/chaijinsong/node-study/tree/master/auth/cookie
session原理
由于cookie不能放敏感信息,并且存储空间不够大。所以可以考虑在后端存储,那么在cookie中存储的其实是一个key,后端接收到请求后通过cookie拿到key,然后去session对象中去拿对应的值。这样就在服务端保存了用户的状态信息,并且客户端也拿不到敏感信息。
缺点:
代码实现:https://github.com/chaijinsong/node-study/tree/master/auth/session
Token
代码实现:https://github.com/chaijinsong/node-study/tree/master/auth/token
JWT(JSON WEB TOKEN) 原理解析
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoidGVzdCIsImV4cCI6MTU4NTQ5NjY0NCwiaWF0IjoxNTg1NDkzMDQ0fQ.Y2Vst5n9-wFXx_UhvEIsjRuMiDFOZF-ZqxdAICmA13I
其中令牌头和 payload 是固定的内容,后面的哈希值则是根据``令牌头 和 payload
+
secret `生成的hash,所以在鉴权的时候,如果令牌头和 payload 被修改,那么和最后的hash值是不对应的,算是鉴权失败SSO 单点登录
代码实现:https://github.com/chaijinsong/node-study/tree/master/auth/sso
The text was updated successfully, but these errors were encountered: