sso-core

SSO 单点登录框架架构
授权协议 Apache-2.0
开发语言 Java
所属分类 Web应用开发、 单点登录框架
软件类型 开源软件
地区 国产
投 递 者 谢涵煦
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

非常简单,非常实用!

  • 本地搭建两个客户端 打开开发工具idea,创建两个maven项目名称分别为:clientOne、clientTwo;默认创建一个maven web app 因为是测试应用暂且只需要修改web.xml。方法如下: idea创建maven web app 命名为clientOne 该clientOne对于之前篇幅中说的client1.huzd.com pom.xml 中加入cas sso client

 相关资料
  • 本文向大家介绍Yii框架登录流程分析,包括了Yii框架登录流程分析的使用技巧和注意事项,需要的朋友参考一下 本文详细分析了Yii框架的登录流程。分享给大家供大家参考。具体分析如下: Yii对于新手来说上手有点难度,特别是关于session,cookie和用户验证。现在我们就Yii中登录流程,来讲讲Yii开发中如何设置session,cookie和用户验证方面的一些通用知识 1. 概述 Yii是一个

  • 问题内容: 我想使用Django为我们当前使用的多个应用程序实现单一登录(SSO)。如何使用Django实现SSO?是否有可用于实施SSO的Django软件包? 请帮忙谢谢 问题答案: 我们正在使用OpenAM。 http://forgerock.com/openam.html OpenAM Cookie表示用户已通过身份验证。 为此的身份验证后端非常简单。少于50行代码。 https://doc

  • 我正试着绕着SSO转。据我所知,SSO允许您登录一次并访问多个应用程序(如果您有权限的话)。因此,我登录到应用程序A。我建立了一个令牌。应用程序B如何使用该令牌,以便我不必再次登录应用程序B(假设用户拥有A和B的权限)?我的应用程序是AngularJs应用程序。我可以访问。Net WebAPI以获取数据。 我可以查看我是否登录到应用程序A并检索令牌,然后通过将令牌传递给应用程序B从应用程序A启动应

  • 本文向大家介绍golang实现单点登录系统(go-sso),包括了golang实现单点登录系统(go-sso)的使用技巧和注意事项,需要的朋友参考一下 这是一个基于Go语言开发的单点登录系统,实现手机号注册、手机号+验证码登录、手机号+密码登录、账号登出等功能,用户认证采用cookie和jwt两种方式。收发短信相关方法已提供,仅需根据短信通道提供商提供的接口做相应的参数配置即可使用。 环境介绍 g

  • 本文向大家介绍asp.net简单实现单点登录(SSO)的方法,包括了asp.net简单实现单点登录(SSO)的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net简单实现单点登录(SSO)的方法。分享给大家供大家参考,具体如下: 单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只

  • 首先介绍一下 herosphp/framework 的框架结构 herophp/framework 是 herosphp/app 的依赖,使用 composer 安装就好了 安装最新版 composer require 'herosphp/framework:*@latest' src 框架根目录 |---- api API 服务模块 |---- bean bean模块

  • 注意 所有OAuth2 SSO和资源服务器功能在版本1.3中移动到Spring Boot。您可以在Spring Boot用户指南中找到文档 。 该项目提供从CloudFoundry服务凭据到Spring Boot功能的自动绑定。如果您有一个称为“sso”的CloudFoundry服务,例如,使用包含“client_id”,“client_secret”和“auth_domain”的凭据,它将自动绑

  • 地址URL https://api.es.xiaojukeji.com/river/Login/getLoginEncryptStr 返回数据格式 JSON 请求方式 GET 是否需要登录 是 关于登录授权,参见 如何登录授权 访问授权限制 暂无 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分配的AppKey access_token string yes