zoukankan      html  css  js  c++  java
  • 不同web应用登录方案

    最近做新的web应用, 要求可以用其他系统的账号登录,如老系统的单点登录,第三方平台登录情况,于是我从新梳理一下从最简单服务器登录到复杂的情况:

    1.  单台服务器

    1         原始服务器自动做的

    浏览器第一次请求时,服务器端创建session,并把sessionid发给客户端存放在cookie中id为jssseionid。

    浏览器第二次请求时,服务器获取客户端的cookie中的jsessionid,根据jsessionid找到session对象。

    2         登录系统方案

    2.1         登录:,需要过滤所有请求,判断是否登录过, 登录则可以通过,否则返回登录页。

    2.2         在过滤器中,每次请求时,都获取session(request.getSession()),如果是第一次请求,此时session为新建的session,判断session中的用户信息是否存在(session.getAttrbute(“user”),登录时存放用户信息。)。如果不存在,则跳转到登录页面。

    2.3         用户登录页面确认登录的请求到服务器时(此时用户身份验证过滤器不过滤该请求),验证用户信息,然后获取用户信息并将其存放到session(session.setAttbute(“user”))中,之后跳转页面返回客户端。此时完成登录。

    2.4         再次请求时。同样获取session,判断session中的用户信息是否存在(session.getAttrbute(“user”),因为已经登录过,所以此时的user信息存在,则可以继续访问。

    总结:

             单台服务器的登录,只需要在session中记录用户的信息,再次请求时,判断session中信息是否存在来判断是否登录过即可。不需要在自己往客户端写cookie。

    2.  集群服务器

    集群服务器登录跟单台的登录类似,不同之处是:客户端登录一台机器后,之后的请求可能被分配到其他的机器中,如果其他机器没有相关处理,则在其他机器上找不到登录信息会跳转到登录页。处理方式一般有两种情况:1、集群机器之间session同步。2、不同机器每次过滤请求时,没有登录的让其自动登录,这种情况需要一个登录信息记录在客户端中用于表明用户身份。

             第一种处理方式在每个集群中的节点上都保持session,会占用一定资源,一般采用第二种处理方式,第二种方式主要做的就是记录登录信息到客户端,登录信息一般包括登录用户、登录时间(用于有效时间限制)、登录客户端ip,然后进行加密处理。在服务器中过滤请求时,如果判断session中登录信息不存在,则从cookie中去登录信息加密字符串。如果有字符串则进行解密,安全校验,通过后将用户信息记录在session中,完成自动登录功能。

    总结:需要将登录信息写到客户端cookie中,登录信息加密解密在每个集群中的节点中,加密可以用两个混淆值,一个系统的混淆值,和一个客户端没有的用户信息可变值做混淆值。

    3.  Sso登录

    单点登录和集群登录类似,不同之处在于登录信息的生成和校验是在SSO服务器中来做的,

    用户登录时请求sso服务器,sso校验用户信息通过后生产登录信息,然后sso将登录信息写到客户端cookie中,客户端在请求应用服务器时,服务器判断session中没有登录信息后获取cookie中的用户信息字符串,并请求SSO服务器验证该字符串是否正确,如果正确并返回用户信息,应用服务器将用户信息放到session中。

    总结:用户登录信息的生产和验证都要SSO服务器来做。应用服务器调用即可。

    4.  第三方开放平台登录

    第三方登录与单点登录类似,其实第三方就相当于一个SSO服务器。

  • 相关阅读:
    洛谷 P6851 【onu】贪心
    联赛模拟测试12 C. sum 莫队+组合数
    晚间测试4 哪一天她能重回我身边 神奇建图+基环树
    联赛模拟测试11 D. 甜圈 线段树维护哈希值
    CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 树上启发式合并(DSU ON TREE)
    CF788B Weird journey 题解
    联赛模拟测试10 C. 射手座之日
    晚间测试3 B. 单(single)
    CF538B Quasi Binary 思维题
    CF600E Lomsat gelral 树上启发式合并
  • 原文地址:https://www.cnblogs.com/liuqingsha3/p/4288750.html
Copyright © 2011-2022 走看看