SSO OAuth Csrf

1、sso单点登录
image.png
2、基本原理(解释上图)
用户访问website1

① 用户访问website1 系统,website1系统需要认证, 用户当前没有登陆
② website1给客户端返回302重定向响应, 客户端重定向到SSO服务页
交互过程确实是临时跳转,下面传参false, 返回302临时重定向响应,用户并没有登陆SSO系统,所以SSO系统会返回登陆界面
③ 用户在SSO登陆界面输出账户/密码
④ 登陆成功,SSO会在客户端写入一个 cookie for sso并产生一个301重定向响应,客户端将重定向到原website1地址,该请求附带了SSO给与这次认证成功的 ticket,http://www.website1.com?ticket=XXXX-OOOO-XXXX-OOOO
⑤ website1收到以上重定向请求,解析QueryString中的ticket, 向SSO做一次ticket验证;验证通过向客户端写入本站的 cookie for website
⑥ 上面第5步,浏览器地址会显示:http://www.website1.com?ticket=XXXX-OOOO-XXXX-OOOO, 在本站验证通过之后,最好再做一个重定向,返回业务首页:www.website1.com, 本步骤不是SSO登陆的标准流程。

用户访问website2

① 用户访问website2, 用户在website2并没得到认证;跳转回 SSO
② SSO服务检测到该 用户在SSO域下存在Cookie for sso, 认定该用户已经登陆,故跳转回website2, 如上也会携带认证ticket
③ 如上,website2收到 website2.com?ticket=XXXX-OOOO-XXXX-OOOO请求, 会做一次SSO验证;验证成功,写入本站cookie for website2

3、OAuth

OAuth是一个协议,是上面实现sso的约定的方式方法,sso是技术实现

4、Csrf(CSRF或者XSRF)

(CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造)


image.png
  • Web B挟持时,表单提交是在web b处,然后带上browser的cookie
  • 防止 CSRF 攻击
    步骤
    在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值
    在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token
    在用户点击提交的时候,会带上这两个值向后台发起请求
    后端接受到请求,以会以下几件事件:
    从 cookie中取出 csrf_token
    从 表单数据中取出来隐藏的 csrf_token 的值
    进行对比
    如果比较之后两值一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

你可能感兴趣的:(SSO OAuth Csrf)