使用Spring Security在入口点后面保护微服务

LG87

任何人都知道保护入口点后面的微服务体系结构的简单方法是什么?

情况是,我们需要一个采用TCP套接字连接的服务器。已经实现了在此应用程序上对用户进行身份验证的实现,并且该实现基本上将Spring Security与UserDetailsS​​ervice结合使用,并为套接字连接分配了特定的TCP连接。

但是现在我们正在考虑采用更多的微服务体系结构,但是在寻找一种很好的方式将用户传播到不同的服务方面存在问题。

例如:用户连接到TCP套接字服务器,进行身份验证。用户通过套接字发送请求,服务器将呼叫传播到另一个支持服务(例如,Spring Data REST存储库),但是客户端发出的呼叫(例如,对一组数据的更改请求)需要特定的用户角色。如何检查这个角色?

因此,基本上,TCP服务器代表用户发出服务请求。

塞尔吉·巴莱斯塔(Serge Ballesta)

这取决于身份验证过程。如果您已经使用了具有单点登录功能的身份验证(例如CAS 2),则可以使用CAS的代理功能在您的微服务上添加Spring Security。

如果您将微服务隐藏在前端应用程序的后面,也就是说,如果没有用户可以直接联系它们,则只需在前端和微服务之间的请求中传递用户ID。由于只能从受信任的应用程序中访问微服务,因此您可以直接使用用户ID。

如果要使用微服务中的高级spring-security功能(@PreAuthorize@PostFilter...)PreAuthenticatedAuthenticationFilter,无论身份验证过程如何,都可以在微服务的spring安全配置中使用自定义该过滤器将仅使用在请求中传递的用户ID来设置用户身份验证令牌。

所有这些解决方案都不允许在前端应用程序中缓存密码,这始终是可能的(在session属性中),但是这似乎是一种不良的安全做法。

无论如何,您可以为微服务部分使用无状态安全性,因为前端将始终发送用户ID。根据Spring Security Reference Manual,这就像将属性添加到http config一样简单:(< http create-session=stateless>此参数自3.0版开始存在)

如果您使用Java配置,则可以从进行相同的操作WebSecurityConfigurerAdapter

class SecurityConf extends WebSecurityConfigurerAdapter {
    ...
    @Override
    protected void  configure(HttpSecurity http) {
        http.sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        ...
    }
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Spring Security保护Grails Web服务

Spring security java配置和多个http入口点

微服务和Spring Security OAuth2

会话验证-具有微服务的Spring Security

使用Spring Security保护REST端点

使用Spring Security保护REST API

如何使用Spring Security Oauth来保护Struts2 Rest服务

如何使用Spring Boot和Spring Security保护REST API?

无法使用kubernetes入口部署具有不同端点模式的微服务

Spring Boot 2 + Oauth2-保护微服务中的其余调用

从Android调用受Spring Security保护的REST Web服务

使用Spring Boot微服务架构实现执行器

使用Spring Cloud从微服务中获取外部IP

使用Config Server干净地部署Spring Boot微服务

哪个是使用Spring的微服务的最佳API网关?

将Spring Security 3.x配置为具有多个入口点

我们不能使用SAML来保护微服务吗?

保护资源连接数据/字符串以供Azure中的微服务使用

使用Spring Security的PasswordEncoder

使用用户角色和Spring Security保护URL

如何使用spring security同时保护2条路径?

Spring Security:方法未使用@PreAuthorize注释保护

使用Spring Security保护应用程序无效

无法使用Spring-Security保护HTML文件

具有两个入口点的Spring Boot应用程序:CLI和Web服务

如何使用Spring RESTful Web服务处理CSRF保护?

使用 keycloak - JWT 令牌保护 Spring Boot 服务

Spring Security是否可以保护服务层,Web服务层或两者?

traefik v2.2帮助仅使用docker-compose路由器服务入口点