sso单点登录原理及实现

author author     2022-09-19     150

关键词:

1.SSO分类

  根据实现的域不同,可以把SSO分为同域SSO、同父域SSO、跨域SSO三种类型。

2.SSO实现原理

a.打开统一的登录界面

b.登录,同时向服务器写入Cookie

c.进入其他应用

d.判断是否有对应的Cookie

  如果没有则进入统一的登录界面

  如果有则进入下一步验证

e.服务器验证Cookie的有效性

  如果有效则进入下一步

  如果无效则打开统一的登录界面

f.成功进入应用页面

 

3.同域SSO的实现

a.定义一个公共的登录页面

  登录页面是通过访问不同路径的action跳转而来。

  在页面中需要用户名、密码和跳转的url。根据不同的访问路径,确定需要跳转的不同地址,所以用myurl隐藏域来接收不同的跳转地址。

<body>
    <center>
        <h1>请登录</h1>
        <form action="/SSO/sso/doLogin.action" method="post">
            <span>用户名:</span><input type="text" name="username">
            <span>密码:</span><input type="password" name="password">
            <input type="hidden" name="myurl" value="${myurl }">
            <input type="submit" value="提交"/>
        </form>
    </center>
  </body>

b.定义公共登录后台

  进入方法后进行用户名密码的验证,如果用户名密码正确,则根据规则生成一个Cookie保存,并跳转到对应的myurl中。

public class SSOAction extends ActionSupport {
    
    private String username;
    private String password;
    private String myurl;
    public String doLogin(){
        boolean result= Check.checkLogon(username,password);
        if(result){
            Cookie cookie = new Cookie("ssocookie","sso");
            cookie.setPath("/");
            HttpServletResponse response = ServletActionContext.getResponse();
            response.addCookie(cookie);
            
            return SUCCESS;
        }
        return null;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getMyurl() {
        return myurl;
    }
    public void setMyurl(String myurl) {
        this.myurl = myurl;
    }

配置文件如下:

    <package name="sso" namespace="/sso" extends="struts-default">
        <action name="doLogin" class="com.imooc.sso.SSOAction" method="doLogin">
            <result name="success" type="redirect">${myurl}</result>
        </action>
    </package>

 

c.定义两个同域下的不同访问路径

  如demo1和demo2两个访问路径,需要跳转的myurl不同。进入访问路径后,先判断Cookie的有效性,如果Cookie有效则直接进入访问页面,如果Cookie无效则跳转到公共的登录页面。

Demo1Action:

public class Demo1Action extends ActionSupport {
    private String myurl;
    public String main(){
        HttpServletRequest request = ServletActionContext.getRequest();
        if(Check.checkCookie(request)){
            return SUCCESS;
        }
        myurl = "/demo1/main.action";
        return LOGIN;
    }
    public String getMyurl() {
        return myurl;
    }
    public void setMyurl(String myurl) {
        this.myurl = myurl;
    }

Demo2Action:

private String myurl;
    public String main(){
        HttpServletRequest request = ServletActionContext.getRequest();
        if(Check.checkCookie(request)){
            return SUCCESS;
        }
        myurl = "/demo2/main.action";
        return LOGIN;
    }
    public String getMyurl() {
        return myurl;
    }
    public void setMyurl(String myurl) {
        this.myurl = myurl;
    }

配置文件如下:

<package name="demo1" namespace="/demo1" extends="struts-default">
        <action name="main" class="com.imooc.demo1.Demo1Action" method="main">
            <result name="success" >/demo1.jsp</result>
            <result name="login" >/login.jsp</result>
        </action>
    </package>
    
    
    <package name="demo2" namespace="/demo2" extends="struts-default">
        <action name="main" class="com.imooc.demo2.Demo2Action" method="main">
            <result name="success" >/demo2.jsp</result>
            <result name="login" >/login.jsp</result>
        </action>
    </package>

demo1.jsp与demo2.jsp为两个不同路径最终登录成功需要访问的页面。

到此,一个简单的同域SSO单点登录功能就已经实现。

根据demo1的访问路径第一次访问时,没有对应的Cookie,则跳转到公共的登录页面进行登录。公共登录页面验证账号有效性后,生成Cookie,并跳转到demo1的访问页面(demo1.jsp);此时根据demo2的访问路径进行访问时,判断Cookie生效,则直接进入demo2的访问页面(demo2.jsp)。

 

cas实现sso单点登录原理

1.      CAS 简介1.1.  WhatisCAS ?CAS ( CentralAuthenticationService )是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录 查看详情

单点登录sso的实现原理

单点登录SSO(SingleSignOn)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴... 查看详情

单点登录sso的实现原理(转)

单点登录SSO(SingleSignOn)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴... 查看详情

第十篇单点登录原理和jwt实现(代码片段)

单点登录原理及JWT实现波波烤鸭一、单点登录效果  首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=gitee_search把案例代码直接导入到IDEA中  然后分别修改下server... 查看详情

第十篇单点登录原理和jwt实现(代码片段)

单点登录原理及JWT实现波波烤鸭一、单点登录效果  首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=gitee_search把案例代码直接导入到IDEA中  然后分别修改下server... 查看详情

sso单点登录

 单点登录SSO的实现原理单点登录SSOSSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析 查看详情

单点登录实现方案

单点登陆实现方案设计整体流程:设计思路:单点登录涉及?sso?认证中心与众子系统,子系统与?sso?认证中心需要通信以交换令牌、校验令牌及发起注销请求,因而子系统必须集成?sso?的客户端,sso?认证中心则是?sso?服务端,整个... 查看详情

sso单点登录的原理详解,及shiro同时支持session和jwttoken两种认证方式,和session和jwt整合方案

1.   单点登录是什么?单点登录全称SingleSignOn(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分。 2.   单点登录... 查看详情

sso单点登录的发展由来以及实现原理

单点登录以及权限,在很早之前都有写过,不过都比较简单,今天就具体说一下,以及下一步要做的1、web单系统应用早期我们开发web应用都是所有的包放在一起打成一个war包放入tomcat容器来运行的,所有的功能,所有的业务,... 查看详情

sso单点登录,单点登录原理图,单点登录图解,单点登录

sso单点登录,单点登录原理图,单点登录图解,单点登录 ==============================?Copyright 蕃薯耀2017年11月20日http://www.cnblogs.com/fanshuyao/  ==============================?Copyright 蕃薯耀2017年11月20日ht 查看详情

sso单点登录实现方案

最近打算做个项目,需要用到单点登录,搜了看了一下资料找到一种单点登录方案,特此记录。一、实现原理    将登录系统单独摘出来,做成一个登录子系统。请求登陆时候访问这个子系统,当登陆验证通过的时... 查看详情

单点登录基本原理

...可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。单点登录英文全称SingleSignOn,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。 image如... 查看详情

单点登录实现原理和单点登录服务器设计

sso单点登录是什么java实现SSO什么是SSOSSO(SingleSignOn)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了... 查看详情

springsecurity基于oauth2的sso单点登录怎样做?一个注解搞定

参考技术A单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼。本文主要介绍同域和跨域两种不同场景单点登录的实现原理,并使用SpringSecurity来实现一个最简... 查看详情

单点登录实现原理和单点登录服务器设计

sso单点登录是什么java实现SSO什么是SSOSSO(SingleSignOn)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了... 查看详情

cas实现单点登录sso

一CAS是什么?为Web应用系统提供一种可靠的单点登录解决方法的一个项目,是通过共享cookie实现的。二CAS原理 CAS是由CASServer和CASClient组成:1.架构图: TGC:存放用户身份认证凭证的cookieST:服务票据,... 查看详情

ebs单点登录sso

参考技术A单点登录是指在多个业务应用系统中,用户只需要登陆一次,就可以访问所有有权限的业务应用系统。在企业内部使用单点登录还是挺常见的,记录一下单点登录是什么主要是发现OracleEBS也能单点登录,抽空特意了解... 查看详情

单点登录(sso)原理(代码片段)

在整个SSO流程当,有两个流程非常重要:  第一个是用户没有登录系统到登录系统的过程;  第二是用户在一个系统当中已经登录(例如在OA系统中登录了),但又想进入另一个系统(例如进入PRO系统)的过程一、用户没有... 查看详情