sso-core 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
sso-core 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
sso-core 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache-2.0
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 笨鸟菜
适用人群 未知
收录时间 2019-06-25

软件简介

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

非常简单,非常实用!

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(7)
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
7 评论
51 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部