SpringBoot SSO整合

本文介绍了如何在SpringBoot中整合SSO,旨在提供一种具有扩展性的登录授权解决方案。通过引入自定义SSO框架,详细讲解了从maven库引入到配置文件、接口实现、单元测试的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot整合SSO教程

提示:如有疑问请私信联系、下方有源代码地址,请自行拿取


前言

网上SSO的框架很多,此篇文章使用的是自写的SSO来实现简单的登录授权功能,目的在于扩展性,权限这方面,自写扩展性会好点。


提示:以下是本篇文章正文内容,下面案例可供参考

一、技术介绍

1.SSO是什么?

单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的。

二、使用步骤

1.引入maven库

代码如下(示例):

	 	<parent>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-parent</artifactId>
	        <version>2.4.1</version>
	        <relativePath/>
	    </parent>
     <dependencies>
       <dependencies>
        <dependency>
            <artifactId>hyh-boot-starter-redis</artifactId>
            <groupId>com.hyh.redis</groupId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>

2.具体使用示例

ILogin接口:

package com.hyh.sso;

import com.hyh.sso.po.LoginResult;

/**
 * 登录接口
 *
 * @Author: heyuhua
 * @Date: 2021/1/8 17:14
 */
public interface ILogin {
   

    /**
     * 登录
     *
     * @param account     用户名
     * @param password    密码
     * @param callbackUrl 用户验证回调URL
     * @return
     */
    LoginResult login(String account, String password, String callbackUrl);


}

登录状态枚举:

package com.hyh.sso;

/**
 * 登录状态枚举
 *
 * @Author: heyuhua
 * @Date: 2021/1/8 16:59
 */
public enum LoginStatus {
   

    SUCCESS(1, "登录成功"), ING(0, "登录中"), FAIL(-1, "登录失败"),
    ERROR(-2, "登录异常"), CALLBACK_ERROR(-3, "登录回调异常"), ACCOUNT_LOCK(-4, "账户被锁定"),
    EXPIRE(-5,"登录用户已过期");
    /**
     * 登录状态码
     */
    private int code;
    /**
     * 登录状态消息
     */
    private String message;


    private LoginStatus(int code, String message) {
   
        this.code = code;
        this.message = message;
    }


    public int getCode() {
   
        return code;
    }

    public void setCode(int code) {
   
        this.code = code;
    }

    public String getMessage() {
   
        return message;
    }

    public void setMessage(String message) {
   
        this.message = message;
    }
    }


登录类型枚举:

package com.hyh.sso;

/**
 * 登录类型
 *
 * @Author: heyuhua
 * @Date: 2021/1/8 17:16
 */
public enum LoginTypes {
   

    /**
     * 登入
     */
    IN,
    /**
     * 登出
     */
    OUT;

}

登录常规接口:

package com.hyh.sso;

package com.hyh.sso.service;

import com.hyh.sso.ILogin;

/**
 * 常规登录接口
 *
 * @Author: heyuhua
 * @Date: 2021/1/8 17:54
 */
public interface LoginService extends ILogin {
   

}

登录接口实现:

package com.hyh.sso.service.impl;

import com.alibaba.fastjson.JSON;
import com.hyh.sso.LoginStatus;
import com.hyh.sso.po.LoginResult;
import com.hyh.sso.po.LoginUser;
import com.hyh.sso.service.LoginService;
import org.slf4j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

消灭知识盲区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值