APP下载

sso-core单点登入框架架构

消息来源:baojiabao.com 作者: 发布时间:2026-05-30

报价宝综合消息sso-core单点登入框架架构

sso-core ,是码家学院自研 SSO 单点登入框架架构,利用轻量级 JWT 作为 Token 生成方式,JSON 携带使用者资讯,使用者可以自定义 JWT 加密盐,在前后端分离上有着非常实用的功效,注解控制认证管理。

直接引入 core 核心包使用(最新版本1.2.2)

com.majiaxueyuan

sso-core

${version}

完成 SSO 单点登入只需要两步:

第一步:搭建统一认证中心(只需要做个登入,登入成功授权 token )

当用户在数据库认证成功过后,只需要呼叫下面程式码,去生成Token就行

生成Token时需要传递四个引数,使用者唯一ID,使用者名称,其他资讯(建议JSON,每次请求原样携带),加密盐

生成成功过后,返回Result,判断code=200时,data就是Token

Result loginSuccess = TokenLoginHelper.loginSuccess(id, username, otherJsonInfo, "pwd_salt");

String token = loginSuccess.getData().toString();

第二步:整合专案完成 SSO 认证(新增过滤器)

在分散式服务中我们只需要新增一个拦截器就行,新增时需要设定加密盐与认证服务器一致。

如果有多个服务米个服务都需要新增一个拦截,就实现了SSO单点登入的机制。

认证时在请求头中Authorization中携带token资讯用于验证。

@Configuration

public class MaJiaSsoConfig extends WebMvcConfigurerAdapter {

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(ssoIntercepter()).addPathPatterns("/**");

}

@Bean

public MaJiaSSOIntercepter ssoIntercepter() {

return new MaJiaSSOIntercepter().setTokenSalt("pwd_salt");

}

}

我们提供了基于注解形式的认证控制,当有Mapping不需要认证时,加上注解@NoToken就行

@RequestMapping("/hi")

@NoToken(notNeedToken = true)

public String wei() {

return "hi,no token!";

}

我们会携带上使用者传过来的所有资讯(除去加密盐),使用者在请求中可以用如下程式码获取资讯

SSOUser user = (SSOUser) request.getAttribute("ssoUser");

SSOUser是核心包提供的使用者资讯。可以得到除开加密盐之外使用者传过来的所有资讯。

git地址:https://gitee.com/lxmajia/sso-core

非常简单,非常实用!

2019-07-17 03:50:00

相关文章