首页 > 安全资讯 >

一套系统多套用户安全系统该怎么办

22-05-18

一套系统多套用户安全系统该怎么办

在业务系统中很可能遇到两个或许用户系统,比方后台办理用户和前台APP用户。很多时候这两种用户走的仍是两种不同的系统,比方后台用户用有状况的Session,而前台用户用盛行的无状况JWT,总之它们是两种完全不同的阻隔系统。这种需求该怎么完成呢?其中有哪些坑要踩呢?本文将告知你怎么做。

QQ截图20220518135638.jpg

途径阻拦战略

在Spring Security中当然是依照不同的恳求途径规矩界说专门的过滤器链,你可以经过三种方法来完成途径阻拦。然后依照战略界说过滤器链即可:

这三种战略介绍如下。

依照正则过滤

你可以经过提供的过滤器过滤URI,例如阻拦恳求中在query参数而且包含的URI:

这种常用来匹配一些带参数的URL。

依照Ant规矩过滤

这种是我们常见的方法,例如阻拦最初的所有途径:

关于这种方法这儿不再赘述,具体可以经过Ant规矩详解这一篇来了解。

依照RequestMatcher过滤

一些杂乱的组合可以经过界说接口来组合,例如这种杂乱的规矩:

满意三个途径中的一个就行,这种组合方法可以完成最杂乱的阻拦战略。

装备阻隔的一些要点

这儿还要留意装备之间的阻隔。

Session会话

默许情况下的Session依赖于cookie中设定的, 假如你使用会话模式,必须阻隔多个过滤器链的会话存储,这样可以完成一个多个过滤器在同一个会话下不同的登录状况,否则它们同享装备就会产生错乱。

这是由于在一个会话下,默许的特点Key是,当在同一个会话下(同一个浏览器不同的tab页)获取当时上下文都是这样的:

这样登录一个,其它都认为是登录状况,这明显不符合预期。你需求在不同的过滤器中界说不同的会话特点Key。

无状况Token

无状况Token相对简略一些,前端根据途径分开存储即可,而且Token中应该包含校验过滤器链的信息以便利后端校验,避免Token混用。

UserDetailsService

假如你的不同端的用户是独立的,你需求完成不同的,可是存在多个的话,

必定不要将它们直接注册到Spring IoC中!

必定不要将它们直接注册到Spring IoC中!

必定不要将它们直接注册到Spring IoC中!

假如你必定要注册到Spring IoC,你需求界说独立的接口,就像这样:

然后完成该接口再注入Spring IoC,每个过滤器链装备的时候就可以这样写:

可是Spring IoC中必须有一个,你得这样写:

为啥不可用,由于注入Spring IoC的是一个兜底的完成,假如你只有一个完成,放入Spring IoC无可厚非,假如你想让多个各自走各自的就必须这样写最安全,否则还有一个默许的也会生效成为兜底的。

其它

其它装备依照各自的装备就行了,现在我还没有发现有抵触的地方。上面所讲的东西,在Id Server授权服务器中便是这样完成授权服务器过滤、后台办理用户和前台授权用户三者之间阻隔的:

你可以经过下载源码进行改造学习,欢迎Star。

OAuth2教程可经过订阅。

相关文章
最新文章
热点推荐