Code Monkey home page Code Monkey logo

sso's Introduction

打造一个单点登录平台,其中包括以下子系统

  • CAS SERVER
  • 配置中心
  • 服务管理系统
  • 监控平台
  • 客户端集成(cas client、pac4j、shiro)

并且在博客中记录整个搭建过程以及注意事项,目前教程如下:

目前教程

监控系统

特性

  • Docker快速启动
  • GitHub授权登录
  • Cas Clint、Shiro Pac4j Client集成
  • jdbc用户密码加密
  • 自定义主题
  • 配置统一管理
  • 根据官网5.1.x新版本迭代
  • 各阶段发布博客教程
  • 密码管理
  • 一键启动
  • 第三方登录接入(QQ,WeChat,CSDN,GitHub)
  • 绑定用户
  • 验证码输出
  • 自定义校验器
  • 多属性返回
  • 验证码发送、校验(注册发送邮箱验证码)
  • 服务监控检测
  • 校验码登录
  • 单用户登录

Tutorial: Csdn Blog Tutorial

域名:localhost

用户:

用户名 密码 是否可登录 备注
admin 123
zhangsan 12345678
zhaosi 1234 × 禁用
wangwu 12345 需修改密码

目前仅部署了配置中心及cas服务到docker环境中

docker run -d --restart=always  -p 8443:8443 kawhii/sso

若采用docker启动,访问为:http://dockerip:8443/cas

注意

  • 由于修改密码功能目前是发送到笔者的邮箱,若调整,需要修改sso-server/src/main/resources/profile/dev/sql/data-dev.sql
  • 密码修改功能可以关闭问题回答功能

模块介绍

模块名 模块介绍 端口情况 必须https path 启动循序
sso-server cas服务 8443 cas 2
sso-config 配置中心 8888 × config 1
sso-management service管理 8081 × cas-management 3
sso-cas-client-demo cas-client-demo 8080 × /sample 4
sso-client-shiro-demo shiro-client-demo 8083 × / 5
sso-client-proxy-demo OAuth2代理转发客户端 8808 × / 6
sso-monitor 监控服务 8444 × / 7

代码下载 码云 Github

  1. 每一个阶段都会封版打一个tag,需要的进行下载
  2. 原始构建文件存在于original-files目录下

Development Dependency Status codebeat badge

  • jdk8
  • maven3

帮助

build.cmd help

输出以下帮助信息

"Usage: build.bat [help|sso-server|sso-management|sso-config|cas-client-demo|shiro-client-demo|run-all|hosts]"
1. sso-config: Config Server
2. sso-server: CAS Server
3. sso-management: Cas Management
4. cas-client-demo: CasClient Demo
5. shiro-client-demo: ShiroDemo
6. run: Run all server
7. init: set '127.0.0.1 passport.sso.cm' to HOSTS, import cert to D:\soft\work\java\jdk1.8-144\jre\lib\security\cacerts

初始化

build.cmd init

启动服务

由于启动服务多,开始占用CPU、内容稍高

build.cmd run
#server-id 为上面的各服务名称,
#如启动sso-management为,build.cmd sso-management

build.cmd [server-id]

联系方式

如果技术的交流或者疑问可以联系或者提出issue。

邮箱:[email protected]

QQ: 756884434 (请注明:SSO-github)

如果项目对你有技术上的提升、工作上的帮助或者一些启示,不妨请小编喝杯咖啡,小编更会满怀激情的为大家讲解和输出博文哦。

微信 支付宝

sso's People

Contributors

cabbage89 avatar kawhii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sso's Issues

[ 登出 ]是否可以修改发送登出时使用的方法

关于问题报告

当您有需求或者遇到棘手的问题甚至项目无法启动时,请打开博客看是否能找到解决方案

提出问题

需求

提出需求时请囊括以下要素:

  • 业务场景
    在使用的过程中,我发现,在配置业务系统的登出url时,默认时通过Post请求发送的,我在想,是否可以修改这个发送的请求方法,比如修改成Get请求
  • 目前使用sso情况
    正在学习
  • 是否对外开放
  • Cas版本
    5.1.6
  • 集成客户端SDK(pac4j/cas-client)
    pac4j/cas-client

验证码

将验证码添加到loginform,会显示图片,但是不会验证,空或者错误,正确。均不会拦截。

初始化 jdk 报错

.\build.cmd init

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] sso-spring-dependencies ............................ SUCCESS [  0.402 s]
[INFO] sso-support ........................................ SUCCESS [  0.035 s]
[INFO] sso-support-custom-auth ............................ FAILURE [  1.914 s]
[INFO] sso-support-single-login ........................... SKIPPED
[INFO] sso-support-captcha ................................ SKIPPED
[INFO] sso ................................................ SKIPPED
[INFO] sso-server ......................................... SKIPPED
[INFO] sso-config ......................................... SKIPPED
[INFO] sso-management ..................................... SKIPPED
[INFO] sso-client-demo .................................... SKIPPED
[INFO] sso-cas-client-demo ................................ SKIPPED
[INFO] sso-client-shiro-demo .............................. SKIPPED
[INFO] sso-client-proxy-demo .............................. SKIPPED
[INFO] sso-support-validate ............................... SKIPPED
[INFO] sso-monitor ........................................ SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.245 s
[INFO] Finished at: 2017-12-18T17:57:15+08:00
[INFO] Final Memory: 41M/452M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project sso-support-custom-auth: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR]
[ERROR] -> [Help 1]

1.3.1文档补充

新增博客教程,包括

  • shiro的配置方案
  • rest的配置方案
  • rest client的注意事项

还是AuthenticationHandler的顺序问题

我这里只是改了下数据库为mysql,测试时发现先到QueryDatabaseAuthenticationHandler去验证,通过了就没有到UsernamePasswordSystemAuthenticationHandler,这是正常的吗?

初始化ValidateWebflowConfiguation时出现空指针异常

java.lang.NullPointerException: null
        at org.apereo.cas.web.flow.AbstractCasWebflowConfigurer.initialize(AbstractCasWebflowConfigurer.java:116) ~[cas-server-core-webflow-5.1.5.jar!/:5.1.5]
        at com.carl.sso.support.captcha.config.ValidateWebflowConfiguation.validateWebflowConfigurer(ValidateWebflowConfiguation.java:60) ~[sso-support-captcha-1.6.0-RC4-SNAPSHOT.jar!/:1.6.0-RC4-SNAPSHOT]
        at com.carl.sso.support.captcha.config.ValidateWebflowConfiguation$$EnhancerBySpringCGLIB$$bf33f3ec.CGLIB$validateWebflowConfigurer$2(<generated>) ~[sso-support-captcha-1.6.0-RC4-SNAPSHOT.jar!/:1.6.0-RC4-SNAPSHOT]
        at com.carl.sso.support.captcha.config.ValidateWebflowConfiguation$$EnhancerBySpringCGLIB$$bf33f3ec$$FastClassBySpringCGLIB$$ae0bdbcb.invoke(<generated>) ~[sso-support-captcha-1.6.0-RC4-SNAPSHOT.jar!/:1.6.0-RC4-SNAPSHOT]

        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at com.carl.sso.support.captcha.config.ValidateWebflowConfiguation$$EnhancerBySpringCGLIB$$bf33f3ec.validateWebflowConfigurer(<generated>) ~[sso-support-captcha-1.6.0-RC4-SNAPSHOT.jar!/:1.6.0-RC4-SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:345) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.getBean(GenericScope.java:359) ~[spring-cloud-context-1.2.0.RELEASE.jar!/:1.2.0.RELEASE]
        at org.springframework.cloud.context.scope.GenericScope.get(GenericScope.java:176) ~[spring-cloud-context-1.2.0.RELEASE.jar!/:1.2.0.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:340) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.cloud.context.scope.refresh.RefreshScope.start(RefreshScope.java:121) ~[spring-cloud-context-1.2.0.RELEASE.jar!/:1.2.0.RELEASE]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
        at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:256) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:177) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:140) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144) ~[spring-boot-1.5.3.RELEASE.jar!/:1.5.3.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-4.3.11.RELEASE.jar!/:4.3.11.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.3.RELEASE.jar!/:1.5.3.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) ~[spring-boot-1.5.3.RELEASE.jar!/:1.5.3.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) ~[spring-boot-1.5.3.RELEASE.jar!/:1.5.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-1.5.3.RELEASE.jar!/:1.5.3.RELEASE]
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134) ~[spring-boot-1.5.3.RELEASE.jar!/:1.5.3.RELEASE]
        at org.apereo.cas.web.CasWebApplication.main(CasWebApplication.java:77) ~[cas-server-webapp-init-5.1.5.jar!/:5.1.5]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_144]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_144]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_144]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_144]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) ~[cas.war:5.1.5]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) ~[cas.war:5.1.5]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) ~[cas.war:5.1.5]
        at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59) ~[cas.war:5.1.5]
2017-11-06 13:28:05,430 ERROR [org.apereo.cas.web.flow.AbstractCasWebflowConfigurer] - <null>
java.lang.NullPointerException: null

密码管理功能教程

  • 根据文档跑通正常流程
  • 输出教程到CSDN
  1. 打开重置密码
  2. 发送邮件
  3. 打开链接
  4. 回答问题
  5. 修改密码

验证码支持

支撑验证码

  • 访问输出验证码
  • 支撑验证码库更换
  • 支持接口获取校验码
  • 支持接口校验码自动删除

多属性返回

  • 用于登录成功返回自定义熟悉
  1. 权限
  2. 扩展数据

AuthenticationHandler验证顺序问题

请教一个问题,测试了下自定义认证UsernamePasswordSystemAuthenticationHandler会在QueryDatabaseAuthenticationHandler 之后,这样的话如果QueryDatabaseAuthenticationHandler 验证通过,就不会到UsernamePasswordSystemAuthenticationHandler 这个有办法处理吗?

service管理

  • json方式初始化,并且支持所有localhost
  • service的持久化

关于密码修改发送邮件的问题

按照博客上的配置配置好后,无法接收到邮件。
把发送邮箱改成我自己的邮箱后也不行。
请您看到后,帮我解决下可以吗?

发送校验码

验证模块接口说明文档

  • 信息发送者ISender(主导发送信息对象,例如发送校验码到手机,发送到邮箱)
  • 信息存储IStore(负责存储发送者发出的信息)
  • 信息生成器InformativeGenerator(负责生成发送者需要发送的信息)
  • 信息校验器IValidator(负责对数据进行校验)

流程

  1. 信息生成器负责生成数据提供给信息发送者
  2. 发送成功保存
  3. 校验成功删除

配置

#验证码发送邮箱
sso.validate.mail.enable=true
sso.validate.mail.from=${spring.mail.username}
sso.validate.mail.content=统一门户注册验证码为:%s
sso.validate.mail.subject=统一门户注册

程序发送

@Autowired
private DefaultValidateService validateService;

//验证
@PostMapping
public String registry(Model model, HttpServletRequest request, @Valid RegistryInfoVo registryInfoVo) {
        ValidateResult result = validateService.validate(
                new MailValidateCredential(request.getSession().getId(), registryInfoVo.getEmail(),
                        "registry", registryInfoVo.getValidateCode()));
    if (result == ValidateResult.FAIL) {
        model.addAttribute("validateError", "验证码错误");
    } else if (result == ValidateResult.EXPIRED) {
        model.addAttribute("validateError", "验证码已过期");
    }
    return "registryView";
}


//发送
validateService.send(new MailCredential(request.getSession().getId(), mail, "registry"));
           

单用户登录

所谓“单用户单账户登录”是指:在同一系统中,一个用户名不能在两个地方同时登录

Docker构建

项目支持Docker构建,上传到docker hub

  • 各服务可以配置指定端口进行访问
  • package之后采用Dockerfile进行build
  • 自定义端口
  • 发布到docker hub

看到blog里面有配置jwt的,没有明白jwt client为什么要注入到cas里面,按照理解jwt无非就是将cas的结果(casRestFormClient)生成token 返回到用户端

关于问题报告

当您有需求或者遇到棘手的问题甚至项目无法启动时,请打开博客看是否能找到解决方案

提出问题

需求

提出需求时请囊括以下要素:

  • 业务场景
  • 目前使用sso情况
  • 是否对外开放
  • Cas版本
  • 集成客户端SDK(pac4j/cas-client)

Bug

若是bug问题,请包括以下要素:

  • bug出现场景
  • 配置文件源码
  • Cas版本
  • bug紧急情况

HSQLDB数据库认证

  1. HSQLDB文件数据库存储在sso-server进行加载用户数据
  2. 密码策略为MD5+盐进行测试
  3. 新增单元测试对数据库进行测试

HDSQL集成验证,数据初始化用sql文件,并且存在内存

自定义主题

  • 图标改变
  • 背景颜色改变
  • 部分字体改变
  • 输出博文

主题名称为:light

remember me功能

#记住我功能
cas.ticket.tgt.rememberMe.enabled = true
cas.ticket.tgt.rememberMe.timeToKillInSeconds = 28800
记住我功能开启,但是不生效问题

sso-management 模块启动后访问一直返回404页面

问题

按照博客文章 http://blog.csdn.net/u010475041/article/details/78028658 所描述,直接利用工程里面的代码,编译后启动,弹出浏览器后访问报错,一直没法正常使用sso-management
启动顺序
sso-config
sso-server
sso-management

启动完最后一个模块,弹出浏览器,直接定向到地址 http://passport.sso.com:8443/cas/login?service=http%3A%2F%2Flocalhost%3A8081%2Fmanage.html
返回的是404页面

直接访问 http://localhost:8081/cas-management 也是返回此404页面

  • 环境参数
    CAS Version: 5.1.6
    CAS Commit Id: d10c36f0e326e911082bebe74d288c1af9b946ae
    CAS Build Date/Time: 2017-11-19T14:01:38Z
    Spring Boot Version: 1.5.3.RELEASE

System Date/Time: 2018-01-05T20:26:00.232
System Temp Directory: /data/apps/opt/tomcat88/temp

Java Home: /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre
Java Vendor: Oracle Corporation
Java Version: 1.8.0_77
JCE Installed: no

OS Architecture: x86_64
OS Name: Mac OS X
OS Version: 10.12.6

求助博主

文档补充

  1. 嵌入式数据库问题,cas的默认数据库问题
  2. 嵌入数据库开发时需要注意的问题,默认是cas-hsql-database
  3. 提供mysql的版本说明

第三方登录绑定

当时第三方登录是,查找用户未登录是,先调整到绑定页,绑定完成才调整到业务系统

github登录集成

  • 通过github进行登录
  • 若通过github进行登录,用户未绑定跳转到绑定页

系统间安全

测试环境需要增加以下安全

  • cas服务仪表增加用户鉴权
  • admin-server接入用户鉴权
  • admin-server登录授权

搭建监控模块

采用 spring-admin进行搭建监控模块,并且让各服务连接监控系统

关于jwt执行完成后登陆shiro的问题

我在配置中增加了jwt的client,SecurityFilter执行完成client后,是在哪里进行登陆shiro的,我计划改造shiro为stateless,无法下手.希望能提供具体的位置,万分感谢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.