SSO 单点登录框架架构 sso-core

Apache-2.0
Java 查看源码»
跨平台
2019-06-25
SoXiaTea
sso-core 正在参加 2019 年度最受欢迎开源中国软件评选,请投票支持!
sso-core 在 2019 年度最受欢迎开源中国软件评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票赢奖品
已投票

【年终提升】2019尾声,来 OSC·年终盛典收割技术干货,get新技能!>>>

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

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

<dependency>
      <groupId>com.majiaxueyuan</groupId>
      <artifactId>sso-core</artifactId>
      <version>${version}</version>
</dependency>

完成 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是核心包提供的用户信息。可以得到除开加密盐之外用户传过来的所有信息。

非常简单,非常实用!

的码云指数为
超过 的项目
加载中

评论(6)

春风老街十里巷
token有刷新机制吗
木九天
木九天
有个问题,不管@NoToken(notNeedToken = true)还是@NoToken(notNeedToken = false),都不会拦截,除非不加这个注解才可以呢,解决一下?
SoXiaTea
SoXiaTea 软件作者
好的哈,谢谢提出问题,下个版本解决这个问题。
流星飞鱼
流星飞鱼
怎么实现单点退出?
SoXiaTea
SoXiaTea 软件作者
退出的时候清除记录的Token,现在还没有立马让Token失效的机制哦,下个版本这个功能我可以加上去
SoXiaTea
SoXiaTea 软件作者
集成简单,无需存储支持,快速开发,基于拦截器验证,轻松放开请求

暂无资讯

6
回答
公司要在.net做的系统和java做的系统之间搞一个单点登录,实现思路是什么
kakai 的回答 09/16 22:47
最佳答案
登录这块重构吧,独立出登录作为单点登录认证系统,java、.net作为子系统。

没有更多内容

加载失败,请刷新页面

没有更多内容

JEESZ-SSO解决方案

摘要: 提醒:文档只是作为一个基础的参考,愿意了解的朋友可以随时咨询。 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且只有一个登录入...

2018/07/18 09:28
8
0
SSO CAS+Shiro+springmvc单点登录解决方案

SSO CAS+Shiro+springmvc解决方案

2016/09/08 00:30
2.9K
2
JEESZ-SSO解决方案

提醒:文档只是作为一个基础的参考,愿意了解的朋友可以随时咨询。 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且只有一个登录入口. S...

2018/06/05 15:33
6
0
JEESZ-SSO解决方案

提醒:文档只是作为一个基础的参考,愿意了解的朋友可以随时咨询。 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且只有一个登录入口. S...

2018/07/03 17:08
2
0
JEESZ-SSO解决方案

第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且只有一个登录入口. SSO的体系中有下面三种角色: 1) User(多个) 2) Web应用(多个) 3) SSO认...

2018/10/30 09:01
3
0
JEESZ分布式框架--单点登录集成方案

JEESZ分布式框架单点登录集成方案 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS) ,并且只有一个登录入口. SSO的体系中有下面三种角色: 1) Us...

2018/07/17 15:37
6
0
JEESZ-SSO解决方案

第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且只有一个登录入口. SSO的体系中有下面三种角色: 1) User(多个) 2) Web应用(多个) 3) SSO认...

2018/08/03 09:16
3
0
分布式单点登录框架XXL-SSO

《分布式单点登录框架XXL-SSO》 一、简介 1.1 概述 XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、...

2018/04/04 18:09
1K
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部