精华内容
下载资源
问答
  • shiro多系统单点登录

    万次阅读 多人点赞 2016-12-07 15:06:01
    shiro多系统单点登录最近做项目遇到了个系统权限用的是shiro框架,需要做成单点登录,虽然shiro为单点登录提供了shiro-cas的方案,但是不太符合我们现有项目的框架,现在和大家分享一下我是如何实现单点登录。...

    最近做项目遇到了多个系统权限用的是shiro框架,需要做成单点登录,虽然shiro为单点登录提供了shiro-cas的方案,但是不太符合我们现有项目的框架,现在和大家分享一下我是如何实现单点登录。整体思路是参考cas。

    框架图:
    这里写图片描述

    流程介绍

    • 用户第一次访问系统A
    • 系统A的ssoFilter发现当前session没有用户信息就重定向到登录服务器http://loginservice/login?redirecturl=url
    • 登录服务器判断当前用户是否登录如果该用户登录则重定向到用户访问http://redirecturl?sessionid=sessionidg否则调到登录页面
    • 系统A的ssoFilter发现当前session没有用户信息但是有参数sessionid,说明该请求是从单点登录服务器跳转过来的并且该用户是已经登录。在ssoFilter中为response添加addcookie(sessionid),且为response写入输出流,该输出流为一个html页面其中有一段js代码是访问系统A中用户访问的url
    • 浏览器执行步骤4中返回js,此时访问系统A时携带的cookie中的sessionid是在单点登录系统登录的sessionid,A系统ssoFilter发现该用户已登录允许访问本系统资源。
    源码
     - 登录服务器login.jsp中的一段代码
    <shiro:authenticated>
            <%
                String redirectUrl = (String) request.getAttribute("redirectUrl");
                if (redirectUrl != null && redirectUrl != "") {
                   response.sendRedirect(redirectUrl+"?SHAREJSESSIONID="+request.getSession().getId());
                } else {
                    response.sendRedirect(request.getContextPath() + "/perm/main/home.do");
                }
            %>
        </shiro:authenticated>

    业务系统A中的SSOFilter

    public class SSOFilter implements Filter {
        private String serverLoginUrl;
    
    
        public void init(FilterConfig filterConfig) throws ServletException {
        }
    
    
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
            HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
            String reqUrl = httpServletRequest.getScheme() + "://" + httpServletRequest.getServerName() + ":" + httpServletRequest.getServerPort() + httpServletRequest.getContextPath() + httpServletRequest.getRequestURI();
            Object username = httpServletRequest.getSession().getAttribute("username");
            if (username != null) {
                filterChain.doFilter(httpServletRequest, httpServletResponse);
                return;
            }
            String sid = httpServletRequest.getParameter("SHAREJSESSIONID");
            if (StringUtils.isNotEmpty(sid)) {
                Cookie cookie = new Cookie("SHAREJSESSIONID", sid);
                cookie.setPath("/");
                httpServletResponse.addCookie(cookie);
                String html = "<html><head><script type=\"text/javascript\">location.href='" + reqUrl + "'</script></head><body></body></html>";
                byte[] bytes = html.getBytes();
                httpServletResponse.setHeader("Content-Type", "text/html;charset=UTF-8");
                httpServletResponse.getOutputStream().write(bytes);
                httpServletResponse.getOutputStream().flush();
                httpServletResponse.getOutputStream().close();
                return;
            }
    
            httpServletResponse.sendRedirect(serverLoginUrl + "?redirectUrl=" + reqUrl);
        }
    
    
        public void destroy() {
    
        }
    
        public String getServerLoginUrl() {
            return serverLoginUrl;
        }
    
        public void setServerLoginUrl(String serverLoginUrl) {
            this.serverLoginUrl = serverLoginUrl;
        }
    }
     - 业务系统A中的shiro SSOFilter配置
    <!-- Shiro主过滤器 -->
        <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
            <!-- Shiro的核心安全接口,这个属性是必须的 -->
            <property name="securityManager" ref="securityManager"/>
            <property name="loginUrl" value="${permisisonPath}/perm/common/login.do"/>
            <property name="unauthorizedUrl" value="${permisisonPath}/perm/common/unauth.do"/>
            <property name="filters">
                <map>
                    <entry key="SSO" value-ref="SSOFilter"/>
                </map>
            </property>
        </bean>
    <bean id="SSOFilter" class="com.xinhe99.permission.sso.SSOFilter">
            <property name="serverLoginUrl" value="${permisisonPath}/perm/common/login.do"/>
        </bean>
        <!-- 权限资源配置 -->
        <bean id="filterChainDefinitionsService"
              class="com.XXXX.XXX.XXXX.shiro.filterchaindefinitions.SimpleFilterChainDefinitionsService">
            <property name="definitions">
                <value>
                    /static/**=anon
                    /需要登录的请求路径/**=SSO,authc
                </value>
            </property>
        </bean>
    展开全文
  • 多系统单点登录(sso)设计

    千次阅读 2018-11-29 21:05:53
    单点登录 sso 淘宝天猫sso 设计

    问题提出

    • 多个系统中,如何做到其中一个系统登录了,在浏览器中打开其他系统也会成登录状态?比如在淘宝登陆了,打开天猫网页,也会显示已登录
    • 网上有一种设计方案是通过二级域名来共享登录状态,本设计是针对不同域名下登录状态的信息共享。

    登录信息共享机制设计

    简单实现

    实现原理:

    通过在sso系统域名下存储信息,其他系统通过获取sso域下的cookie信息来获取登录信息
    不过有个问题:出于安全的原因,当前域不能获取其他域的cookie信息,所以只能通过跨域访问sso系统,然后返回登录信息

    在开始前我们设定两个变量:

    • t_token 这个浏览器的一个标志,在同一个浏览器中,所有相关系统内的网站共享同一个t_token
    • access_token 用户真正的token

    要实现上述功能,我们可以使用跨域机制来实现共享token。这里我们设置三个系统,两个客户端系统,一个sso系统。如图:
    在这里插入图片描述

    流程如下:
    在这里插入图片描述
    以上就是通过跨域来同步token的流程。

    在上面的流程中,会存在一个跨域访问的问题,一般来说有两种解决方法:

    • 使用jsonp来获取
    • 使用CORS机制跨域获取数据

    具体的可以看这两篇文章:

    CORS详解
    跨域访问数据

    淘宝天猫登录信息共享(简化版)

    淘宝天猫token的获取原理是一样的,但是流程要稍复杂一些。主要是多了几个重定向的步骤。废话不多说,直接看时序图,咱们看图说话:
    注:图中设计的网址并非是实际的,我只是写来做例子
    在这里插入图片描述

    可以看到,流程中经过多次的重定向最终使天猫中的cookie中有了t_tokenaccess_token的值

    重定向的意义:
    实际上我们完全可以通过跨域一次请求就可以把token拿到,就像我们的第一个例子一样,为什么要经过这么多次重定向呢。个人认为有以下几点:

    1. 获取token的值完全由服务器设置到对应域名的cookie中,在安全方面更有保障
    2. 在请求过程中,服务器可以检测该域名下的请求是否允许重定向,可以进一步保障安全

    登录流程

    登录流程相对来说大家比较熟悉,在此就简单的写下流程就行了。在登录之后可以通过上面的设计共享token
    流程如下:
    在这里插入图片描述

    登录完成后再sso.com和a.com都有t_token,access_token。如果此时打开网页b.com,跨域获取访问sso系统,然后获得登录信息

    以上讲了多系统单点登录的原理和流程图,其中需要注意的点是跨域访问,如果不懂前端的,比如我一开始看到请求被拒绝访问,也是一脸懵逼。我在文中也放了两篇优秀的文章,不懂的可以看看。

    展开全文
  • 单点登录 ( SSO )的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了 单点登录 的需求和应用领域;从技术本身的角度分析了 单点登录 技术的内部机制和实现手段,并且给出Web- SSO 和桌面 ...

    单点登录  SSO  )的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了 单点登录  的需求和应用领域;从技术本身的角度分析了 单点登录  技术的内部机制和实现手段,并且给出Web- SSO  和桌面 SSO  的实现、源代码和详细讲解;还从安全和性能的角度对现有的实现技术进行进一步分析,指出相应的风险和需要改进的方面。本文除了从多个方面和角度给出了对 单点登录  SSO  )的全面分析,还并且讨论了如何将现有的应用和 SSO  服务结合起来,能够帮助应用架构师和系统分析人员从本质上认识 单点登录  ,从而更好地设计出符合需要的安全架构。

    单点登录是什么?

    单点登录 (Single Sign On),简称为  SSO  ,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。所以你会看到很多域名直接是sso.domain.com,也就是用来做单点登录 的。

    如上图,一个用户请求N个系统,给用户的感觉是一个系统的感觉,而不要重复登录。

    单点登录 是一个概念性东西,既然是概念,那么就有很多实现方式。

    实现方案

    根据不同的业务场景来不同的实现方式。下面来罗列一下对应的场景以及实现单点登录 的方式。

    一、方案一。

            域名:a.sojson.com 、b.sojson.com、c.sojson.com、n.sojson.com

            描述:N个系统,但是 一级域名  是一致的。如果不懂 一级域名  二级域名  是什么意思先查看这篇博客。《单个项目多个二级域名简单实现思路》。这个案例实现相对简单,如下图:

    PS:这个方案比较简单,只要提供公共的 SDK  即可,不需要第三个系统的出现,这个 SDK  的工作需要管理 Cookie  和用户信息。

    原理:其实质这里就是利用了 二级域名  一级域名  Cookie 

    优点:轻量级、可插拔、效率非常高。

    缺点:局限性限于一级域名是一样的。

     

    二、方案二

    域名www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

    描述:域名比较乱,有同一个一级域名的(www.sojson.com、a.sojson.com),也有不同域名的。

    这个稍微复杂一点,如下图:

    原理:通过SSO 系统(登录、退出), Iframe  引用的方式引入Cookie.domain.com的方式,利用 Javascript  操作(写入 / 删除 / 修改)  cookie  ,而这个cookie.domain.com 域名是放入 CDN  上 ,获取用户信息当前系统直接通过 Redis  (只读)获取。

    优点:因为是采用压力分化,Cookie.domain.com  部署在CDN上,这样的话,对各个系统造成的压力是 0 ,用第三方系统(SSO)维护,权限更大,操作性更强,但又Cookie 信息在当前域名的一级域下,获取简单,大量减少对 sso 的访问量。

    缺点:如果浏览器安全性过高,Iframe 的方式操作 Cookie 将会失败。比如IE浏览器,目前正在攻克IE浏览器。

     

    三、方案三

    域名www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

    描述:域名比较乱,有同一个一级域名的(www.sojson.com、a.sojson.com),也有不同域名的。

    (条件和方案二一样),实现思路如下图:

    原理:所有的请求(登录、退出、获取用户信息、当前用户状态)都请求sso 系统,sso 系统维护用户信息, Session  UserInfo

    优点:实现较为简单。

    缺点SSO 压力非常大。

     

    四、方案四

    域名www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

    描述:域名比较乱,有同一个一级域名的(www.sojson.com、a.sojson.com),也有不同域名的。

    (条件和方案二一样),实现采用 CAS  方式,这里就不做介绍了,资料非常多。

    原理:和方案三类似。

    优点:现成的,资料较多。

    缺点:繁重、灵活性差。

    展开全文
  • 多系统单点登录(CAS整合)

    千次阅读 2016-08-31 21:06:59
    声明:本文章仅是本人记录作以后备用,不建议作为学习cas的参考文章,毕竟每人的思路不一样,此文章会有好多地方写得过于简单,网路上很关于cas的文章写得比此文好好。 首先CAS有服务器端(本人用4.0.0版本)和...

    声明:本文章仅是本人记录作以后备用,不建议作为学习cas的参考文章,毕竟每人的思路不一样,此文章会有好多地方写得过于简单,网路上很多关于cas的文章写得比此文好好多。

    首先CAS有服务器端(本人用4.0.0版本)和客户端(3.3.3版本)

    服务器端:

    服务器端作为统一认证的地方,所以各个系统的用户要统一。

    认证的方式有3种,本人采用JDBC的认证方式(AbstractJdbcUsernamePasswordAuthenticationHandler),把配置文件deployerConfigContext.xml里的默认认证方式修改,代码如下:

    旧的认证方式:

    <bean id="primaryAuthenticationHandler"
              class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
            <property name="users">
                <map>
                    <entry key="casuser" value="Mellon"/>
                </map>
            </property>
      </bean>

    说明:casuser为用户名,Mellon为密码

    jdbc认证方式:

    <bean id="primaryAuthenticationHandler"
    class="cas.filter.MyQueryDatabaseAuthenticationHandler">
    <property name="dataSource" ref="dataSource"></property>
    <property name="sql" value="SELECT password FROM t_user WHERE username=?"></property>
    <property name="passwordEncoder" ref="MD5PasswordEncoder"></property>
    </bean>

    说明:class的值为重写认证方式,代码下面会给出,dataSource为在此配置文件配置的数据源,passwordEncoder为密码的加密方式。

    数据源配置略,passwordEncoder加密方式配置如下:

    <bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
    <constructor-arg index="0">
    <value>MD5</value>
    </constructor-arg>
    </bean> 

    以下配置是返回用户的个人信息,供客户端使用:

    <bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
            <constructor-arg index="0" ref="dataSource"/>
            <constructor-arg index="1" value="SELECT u.username as username,u.uid as userUUID FROM t_user u  WHERE {0}"/> 
            <!-- 组装sql用的查询条件属性 -->
            <property name="queryAttributeMapping">
                <map>
                    <!-- 这里的key需写username,value对应数据库用户名字段 -->
                    <entry key="username" value="u.username"/>
                </map>
            </property>
            <!-- 如果要组装多个查询条件,需要加上下面这个,默认为AND 
            <property name="queryType">
               <value>OR</value>
            </property>-->  
    <!-- 要获取的属性在这里配置 -->
    <property name="resultAttributeMapping">
    <map>
    <!--key为对应的数据库字段名称,value为提供给客户端获取的属性名字 -->
                    <entry key="userName" value="username"/>
                    <entry key="userUUID" value="userUUID"/> 
    </map>
    </property>
        </bean> 

    文件deployerConfigContext.xml配置至此结束。


    实现认证的javabean:

    public class MyQueryDatabaseAuthenticationHandler extends AbstractJdbcUsernamePasswordAuthenticationHandler{
       
    private String sql;

     protected final HandlerResult authenticateUsernamePasswordInternal(UsernamePasswordCredential credential)
       throws GeneralSecurityException, PreventedException
     {
       String username = credential.getUsername();
       String encryptedPassword = getPasswordEncoder().encode(getPasswordEncoder().encode(credential.getPassword()));
          
       try {
       
         String dbPassword = (String)getJdbcTemplate().queryForObject(this.sql, String.class, new Object[] { username });
         if (!dbPassword.equals(encryptedPassword))
           throw new FailedLoginException("Password does not match value on record.");
       }
       catch (IncorrectResultSizeDataAccessException e) {
         if (e.getActualSize() == 0) {
           throw new AccountNotFoundException(username + " not found with SQL query");
         }
         throw new FailedLoginException("Multiple records found for " + username);
       }
       catch (DataAccessException e) {
       
         throw new PreventedException("SQL exception while executing query for " + username, e);
       }
       return createHandlerResult(credential, new SimplePrincipal(username), null);
     }

     public void setSql(String sql){
       this.sql = sql;
     }
    }


    配置文件cas.properties修改的地方:

    server.name=http://localhost:8080
    server.prefix=${server.name}/cas

    只修改server.name,把此值改成自己cas服务的访问路径。


    客户端:

    javaweb项目就是客户端,引入jar包后只需在web.xml文件下配置客户端即可:

    <filter>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      <listener>
        <listener-class>
           org.jasig.cas.client.session.SingleSignOutHttpSessionListener
        </listener-class>
      </listener>
      <filter>
        <filter-name>CAS Validation Filter</filter-name>
        <filter-class>
        org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
       </filter-class>
        <init-param>

     <!-- cas服务器的访问地址-->
          <param-name>casServerUrlPrefix</param-name>
          <param-value>http://localhost:8080/cas/</param-value>
        </init-param>
        <init-param>
          <param-name>serverName</param-name>

    <!-- 此地址为客户端部署所在的服务器地址-->
          <param-value>http://localhost:8080/</param-value>
        </init-param>
        <init-param>
          <param-name>useSession</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>redirectAfterValidation</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
      </filter>
      <filter>
        <filter-name>CAS Authentication Filter</filter-name>
        <filter-class>
         <!--   org.jasig.cas.client.authentication.AuthenticationFilter -->
         com.zhanneng.jxhd.servlet.AuthenticationFilterWithExcludeUrl
       </filter-class>
        <init-param>

    <!-- 此地址为cas认证的登录地址-->
          <param-name>casServerLoginUrl</param-name>
          <param-value>
        http://localhost:8080/cas/login
        </param-value>
        </init-param>
        <init-param>
          <param-name>gateway</param-name>
          <param-value>false</param-value>
        </init-param>
        <init-param>

    <!-- 此地址为客户端部署所在的服务器地址-->
          <param-name>serverName</param-name>
          <param-value>http://localhost:8080/</param-value>
        </init-param>
        
      </filter>
      <filter>
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
        <filter-class>
        org.jasig.cas.client.util.HttpServletRequestWrapperFilter
       </filter-class>
      </filter>
      <filter>
        <filter-name>CAS Assertion Thread Local Filter</filter-name>
        <filter-class>
        org.jasig.cas.client.util.AssertionThreadLocalFilter
       </filter-class>
      </filter>
      <filter-mapping>
        <filter-name>CAS Authentication Filter</filter-name>
        <url-pattern>*.do</url-pattern>
        
      </filter-mapping>
      <filter-mapping>
        <filter-name>CAS Authentication Filter</filter-name>
        <url-pattern>/webpage/login/login.jsp</url-pattern>
      </filter-mapping>
      <filter-mapping>
        <filter-name>CAS Validation Filter</filter-name>
        <url-pattern>*.do</url-pattern>
      </filter-mapping>
      <filter-mapping>
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
        <url-pattern>*.do</url-pattern>
      </filter-mapping>
      <filter-mapping>
        <filter-name>CAS Assertion Thread Local Filter</filter-name>
        <url-pattern>*.do</url-pattern>
      </filter-mapping>


    客户端获取用户个人信息的方法:

    Map attribute=(Map) request.getUserPrincipal();
    String username=(String) attribute.get("username");
    String uuid=(String)attribute.get("userUUID");

    如果使用的是springsecurity框架,则获取用户个人信息的方法:

    public UserDetails loadUserDetails(Assertion assertion) throws UsernameNotFoundException{
    String username =  assertion.getPrincipal().getName();
    Map attributes = assertion.getPrincipal().getAttributes();

     String uuid=(String)attribute.get("userUUID");

    }

    username、userUUID为在配置文件deployerConfigContext.xml中配置返回的列。

    服务端jar包:


    客户端jar包:


    到此为止。


    展开全文
  • 单点登录 --> org.apache.shiro shiro-cas 1.4.0 org.jasig.cas.client cas-client-core 3.5.0 参考资料: 【Pac4j初探】 http://blog.csdn.net/hxm_code/article/details/79181218...
  • 单点登录系统完整版

    2018-01-06 21:47:36
    单点登录系统完整版,包含权限管理+ActiveMQ+dubbo+部署文档+系统架构图,可以直接部署运行。。。。。
  • windows系统下部署单点登录系统

    千次阅读 2017-11-29 00:57:03
    windows系统单点登录
  • 单点登录系统

    千次阅读 2016-04-29 15:43:20
    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 通常情况下运维内控审计系统、4A系统...
  • JuCheap单点登录系统

    千次阅读 2016-04-28 21:28:00
    最近由于系统改造,需要做一个统一的登陆系统,于是乎花了一周时间,做了一个单点系统;需要了解的知识点: openid owin 先上图,有图有真相: 有兴趣的,可以登录http://sso.jucheap.com注册,...
  • web单点登录系统例子

    热门讨论 2010-10-10 10:18:07
    简单的单点登录系统,可以用于参考 。
  • 分布式多系统SSO单点登录

    万次阅读 2018-07-24 11:59:26
    而第一种是在SSO服务端只完成登录接口,返回是否登录成功的标识和数据,每个SSO客户端都需要独立的登录页面和登录接口(这个登录接口去调用SSO服务端的登录接口返回数据),而第二种则是整个登录系统(接口,页面)...
  • 单点登录系统(CS程序)

    热门讨论 2010-12-06 14:59:20
    基于portal的单点登录系统系统由CS服务端和BS服务系统组成,一般用户可以通过IE来访问单点登录系统,附件内包含了readme.txt有本系统说明。 备注: 这里只有CS程序及说明,BS程序可以找资源名称:单点登录系统...
  • 单点登录系统(bs程序)

    热门讨论 2010-12-06 14:45:21
    基于portal的单点登录系统系统由CS服务端和BS服务系统组成,一般用户可以通过IE来访问单点登录系统,附件内包含了readme.txt有本系统说明。 备注: 这里只有BS程序(除rt.jar),CS程序可以找资源名称:单点登录...
  • 金蝶EAS通过第三方系统单点登录

    千次阅读 2019-07-11 16:40:44
    这里写自定义目录标题金蝶EAS通过第三方系统单点登录操作步骤第三方系统代码示例示例jsp代码如下:示例java代码如下: 金蝶EAS通过第三方系统单点登录 操作步骤 1、需要有LtpaTokenManager.jar包 2、从EAS服务器...
  • 单点登录系统怎么实现的 单点登录系统就是指在一个系统登录,在与其相关联的系统就不用登录无非就是session共享的问题。 Session共享问题你们是如何解决的?  其实seesion的共享问题分为集群的session共享和...
  • 单点登录系统设计分析

    千次阅读 2018-04-10 20:33:36
    SSO英文全称Single Sign On,单点登录。SSO是在个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的...
  • 单点登录系统开发

    万次阅读 2017-06-02 19:41:06
    单点登录SSO(Single Sign On)就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴...
  • SSO单点登录教程(一)多系统的复杂性

    千次阅读 2018-06-22 14:29:36
    作者:蓝雄威 叩丁狼教育高级讲师版权所有,转载请注明出处一、学习大纲1....自己动手写单点登录的服务端和客户端,通过这个案例加深对单点登录的理解.4.学习使用开源的单点登录框架CAS,我们使用cas-ov...
  • 什么是单点登录单点登录的三种实现方式

    万次阅读 多人点赞 2018-06-07 21:18:22
    单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像...
  • Java Web 系统单点登录的实现

    千次阅读 2013-05-30 15:31:27
    在“CAS单点登录(SSO)服务器配置”这篇文章中我介绍了单点登录的概念和原理,以及单点登录服务器的配置... 下面我们将介绍JAVA开发的Web系统单点登录的实现:  要实现单点登录,首先要有单点登录服务器(SSO_S
  • 单点登录和多点登录

    千次阅读 2020-11-02 11:39:01
    SSO(单点登录)的概念:在一个多系统共存的环境下,用户在一处登录后,就不用再其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。 SSO(单点登录)的应用场景:单点登录在大型网站使用非常频繁,...
  • 单点登录

    千次阅读 2019-01-18 09:01:26
    什么是单点登录? SSO是指在多系统应用中登录一个系统,便可在其他所有系统中得到授权而无需再次登录, 包括单点登录与单点注销两部分。跟redis做的tomcat集群的session共享不是一回事。 单点登录原理 相比于单...
  • 单点登录系统流程

    千次阅读 2016-09-09 21:36:48
    什么是单点登录系统 (Single Sign On)? 在个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统
  • 单点登录系统原理与接入

    万次阅读 多人点赞 2018-03-12 16:15:18
    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。以下是个人查询资料的借鉴及对接某...
  • 单点登录简单原理(应用多系统

    千次阅读 2017-11-22 11:40:51
    单点登录原理与简单实现 1、http无状态协议  web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图...
  • OA系统整合与单点登录(SSO)的区别

    千次阅读 2019-09-19 16:52:51
    单点登录(SSO)英文全称Single Sign On,在个应用系统中用户只需要在任何一个应用中登录,就可以访问所有相互信任的应用系统系统整合和单点登录都只需要用户进行一次登录认证就可以访问不同的模块/系统,但二者...
  • 外部系统单点登录NC57

    千次阅读 2018-02-28 14:05:13
    //单点登录NC系统的方法 function openNC() { doRequestUsingGET(usercode); //通过用户名获取key值 var url = ncurlIExplorer + "/login.jsp?clienttype=portal&key=" + key; location.href = url; } //...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 252,002
精华内容 100,800
关键字:

多系统单点登录