https://www.gravatar.com/avatar/8613a75479af50c38344107afb4e9a1f?s=240&d=mp

无糖拿铁

Spring Security ACL 核心概念和组件

Spring Security 提供了一个 ACL 模块,也就是 Access Control List,用来做访问控制。 目的是解决 什么资源什么权限 的问题。 这里的重点是具体的资源。

面临的问题

我们通过 Spring Security 的 WebSecurityConfigurerAdapter.configure(HttpSecurity) 方法, 对 HttpSecurity 对象进行配置,只能精确到 API 层面,决定拥有哪些权限的用户可以访问哪些 API, 但是对于哪些用户对一个具体的资源有访问权限却无能为力。

你的 docker stop,它优雅吗?

我们平时在使用 Docker 的时候,一般会使用 ctrl+c 或者 docker stop 的方式关闭容器。 但有时候我们可能会遇到 ctrl+c 不生效,或者 docker stop 之后要等待 10s 的情况,就像这样:

docker stop 10s

也许你会觉得 10s 是一个可以忍受的时间, 但这样的问题真的只有 10s 这么简单吗? 为什么有的时候不能立即关闭容器呢?

Spring Security 的权限验证

在前面的文章里,我们对 Spring Security 进行权限验证的组件有了大致的了解,我们首先来回顾并探究一下细节。

spring authorization
Figure 1. 本文涉及到的组件

FilterSecurityInterceptor

这是 AbstractSecurityInterceptor 的一个子类,并且实现了 Filter 接口,负责调用父类的 beforeInvocation()afterInvocatio()finallyInvocation() 方法以及一些 Servlet 相关的工作。 真正处理权限验证的代码,其实在父类中。 它存在的意义就是为了能在 Filter 中进行权限验证。

Spring Security 中的身份认证

本文介绍 Spring Security 的身份认证的内容,研究 Spring Security 自带的身份认证方式和添加自己的身份认证方式的方法。

身份认证相关组件

上一篇文章中,我们了解到了 Spring Security 会将 DelegatingFilterProxy 插入到 Servlet Filter Chain 中,然后将要过滤的请求通过 FilterChainProxy 代理给匹配的 SecurityFilterChain;这些 SecurityFilterChain 中包含着真正做安全相关工作的 Filter

Spring Security Servlet 概览

Spring Security 是 Spring 框架中用于实现 Security 相关需求的项目。我们可以通过使用这个框架来实现项目中的安全需求。

今天这篇文章将会讨论 Spring Security Servlet 是如何工作的。

之所以将内容限定到 Servlet,是因为现在 Spring Security 已经开始支持 Reactive Web Server,因为底层的技术不同,当然需要分开讨论。