集成单点登录

随着现在的系统越来越多(OA考勤,学生宿舍管理等等)。在使用中是不是还在为一次一次的登录而烦恼?或者忘了密码而尴尬,现在,有一个好东西来解决这个问题了。那就是单点登录。

单点登录

单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

单点登录的好处

  1. 提高用户的效率。 用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。

  2. 提高开发人员的效率。 SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。

  3. 简化管理。 如果应用程序加入了单点登录协议,管理用户帐号的负担就会减轻。简化的程度取决于应用程序,因为 SSO 只处理身份验证。所以,应用程序可能仍然需要设置用户的属性(比如访问特权)。
    单点登录的缺点

  4. 不利于重构 因为涉及到的系统很多,要重构必须要兼容所有的系统,可能很耗时。

  5. 容易出现安全问题。因为只需要登录一次,所有的授权的应用系统都可以访问,可能导致一些很重要的信息泄露。

cas 官方网址: https://www.apereo.org/projects/cas .
工程代码网址:https://github.com/Jasig/cas
阿里云cas:https://yq.aliyun.com/articles/636281

以上就是关于单点登录的介绍,下面要做的是对接:

举个栗子

看了,上面的材料,各位应该知道,现在要做的对接,就是我们这边登录成功了,和别人系统登录成功之后,效果是一样的。
所有,我们要做的就是给对面一个?service=http://xxx.xx.xx这个是我们重定向到别人的登录之后,返回的数据的URL没有这个,就不知道回来的路。
然后别人的系统在我们登录成功之后,要返回一个ticket和一个targetUrl
ticket是一个地址用来判断我们是不是要去别人的系统登录,targetURL是将我们需要的数据返回给我们。

// 
String targetUrl = CasUtils.getTargetUrl(request);
        if (CasUtils.isLogin(session)) {
            LoginUser loginUser = (LoginUser)session.getAttribute(Constants.LOGIN_USER_KEY);
            response.sendRedirect(targetUrl);
        } else {
            if (CasUtils.hasTicket(request)) {
                LoginUser loginUser = CasUtils.getLoginUser(request);
                if (loginUser.isLogin() && dologin(loginUser, request)) {
                    CasUtils.login(loginUser, session);
                    //从loginUser中拿到工号,然后自己处理登录逻辑
                    //response.sendRedirect(targetUrl);
                } else {

                    // TODO 可选:业务系统可根据实际情况进行处理
                    //response.sendRedirect(CasUtils.getErrorUrl(request));
                }
            } else {
                String loginUrl = CasUtils.getLoginUrl(request);
                response.sendRedirect(loginUrl);
            }
        }
/** 获取TargetUrl */
    public static String getTargetUrl(HttpServletRequest request) {

        String basePath = getBasePath(request);

        // 获取请求中的targetUrl
        String targetUrl = request.getParameter(Constants.TARGET_URL_KEY);

        if (StringUtils.isEmpty(targetUrl)) {
            // 若不存在,则使用默认页面作为targetUrl
            targetUrl = basePath + Constants.DEF_TARGET_URI;
        } else {
            // 判断target是否编码
            if (targetUrl.startsWith(Constants.BASE64_PREFIX)) {
                targetUrl = targetUrl.substring(Constants.BASE64_PREFIX.length());
                targetUrl = Base64Utils.decodeBase64Str(targetUrl);
            }
        }
        return targetUrl;
    }
 /** 判断是否已经登录过 */
    public static boolean isLogin(HttpSession session) {
        Object isLogin = session.getAttribute(Constants.LOGIN_KEY);
        return BooleanUtils.toBoolean(String.valueOf(isLogin));
    }
/** 判断票据是否存在 */
    public static boolean hasTicket(HttpServletRequest request) {
        Object ticket = request.getParameter(Constants.TICKET_KEY);

        System.out.println("ticket = " + ticket);
        return ticket != null
                && !StringUtils.isEmpty(String.valueOf(ticket));
    }

UML 图表

这将产生一个流程图。:

service和ticket
targetUrl和ticket
我的系统
别人的系统

其中,targetUrl: 里面是你要的数据。ticket:返回的是一个票用来免登录的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SpringBoot是一种Java框架,可以简化Java应用程序的开发。单点登录(SSO)是一种身份验证技术,允许用户通过一次登录访问多个应用程序。SpringBoot支持单点登录,可以为用户提供更方便的访问体验。 要集成单点登录,您需要选择一个适合您的SSO解决方案。一些流行的选择包括CAS和OAuth。在此之后,您需要将SSO客户端库集成到SpringBoot应用程序中。 一旦SSO客户端库到位,您需要配置客户端库以与SSO服务器通信并验证用户凭据。然后,您需要设置SpringBoot应用程序以编写受保护的端点,这些端点要求用户进行身份验证才能访问。 最后,您需要配置SpringBoot应用程序将用户重定向到SSO服务器进行身份验证。如果身份验证成功,则用户将被重定向回您的SpringBoot应用程序,可以访问他们所请求的受保护端点。 总之,SpringBoot可以集成单点登录,这能够提升用户访问体验,让他们更方便地访问多个应用程序。要集成单点登录,您需要选择SSO解决方案,集成SSO客户端库,配置受保护的端点以及重定向用户到SSO服务器进行身份验证。 ### 回答2: Spring Boot 是目前非常流行的一种 Java 应用程序开发框架,它非常便捷、简单,同时它支持集成多种类型的单点登录框架。单点登录(SSO)可以让用户在登录以后即可访问多个应用,而且不需要重复登录,这样可以减轻用户的负担,增强应用程序的易用性。 要在 Spring Boot 中集成单点登录,可以使用Spring Security,它是专门用于处理安全性问题的框架。它提供的多种单点登录机制包括 CAS(Central Authentication Service)、OAuth(开放授权)、SAML(Security Assertion Markup Language)等等,可以根据需求选择相应的方案。 在集成 Spring Security 后,需要进行一些必要的配置,例如配置安全拦截器、设置认证提供器、定义用户、角色以及权限等等。一旦完成配置后,这个单点登录框架就可以和其他应用程序集成,从而实现给用户提供统一的登录入口,同时可以方便地管理用户身份认证和访问权限控制。 总结来说,Spring Boot 集成单点登录可以让用户在多个应用程序间实现方便的访问,同时还可以增强应用程序的安全性,提高管理效率。而实现它需要配置 Spring Security,并选择相应的单点登录机制。 ### 回答3: Spring Boot 是一个快速开发框架,而单点登录是在Web应用系统中实现用户重用身份认证的方法。在Spring Boot中,搭建单点登录系统可以使用spring-security模块。Spring Security 是一个安全框架,主要为 Web 应用程序提供身份认证和授权、攻击防御等安全功能。 在Spring Security中,可以使用OAuth2.0或JWT(JSON Web Token)实现单点登录。OAuth2.0 是一种进行授权的标准协议,它允许用户让第三方应用(不包括密码)获取 limited access tokens 而不是提供他们的密码。这意味着只要用户已经登录了一个 OAuth2.0 应用程序,他们将能够无需再次登录即可访问其他应用程序。 另一种方式是使用JWT,JWT是一种安全的身份验证和授权方法,采用JSON格式传输信息,而且JWT token可以被多个应用程序使用,从而实现单点登录。使用Spring Boot集成JWT可以使用Spring Security,在使用JWT时需要对token进行签发、验签和鉴权等步骤进行验证。 另外,如果企业内部使用的是不同的身份认证服务,可以使用Shiro实现单点登录。 Shiro 是一个领先的框架,支持多种身份认证和授权方式,如LDAP、Kerberos和Active Directory等。在Shiro中,我们可以使用SSO集成身份认证服务,从而实现单点登录。 总而言之,在Spring Boot中集成单点登录,可以根据不同需求选择OAuth2.0、JWT或Shiro等多种方式来实现。而且Spring Security 和 Shiro 都支持多种身份认证和授权方式, 特别适合提供多个角色和权限的企业级应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值