SpringBoot系列-SSO整合
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