blog/drawings/spring-security-servlet-flow.puml

34 lines
2.0 KiB
Plaintext

@startdot spring-security-servlet-flow
digraph servlet {
rankdir=TB
edge [color="#A60738"]
node [color="#A60738"]
client [shape=box, label="客户端"]
servlet [shape=box, label="Servlet"]
tokenStorage [shape=box, label="令牌缓存"]
{ rank=same; tokenStorage; RememberMeServices }
client -> FilterChain [label="原始请求"]
FilterChain -> SecurityFilterChain [label="经过中转的请求"]
SecurityFilterChain -> UsernamePasswordAuthenticationProviderFilter [label="携带有用户名和密码的请求"]
UsernamePasswordAuthenticationProviderFilter -> AuthenticationManager [label="UsernamePasswordAuthenticationToken"]
AuthenticationManager -> SecurityContext [label="认证后的Authentication"]
SecurityFilterChain -> BearerTokenAuthenticationFilter [label="携带有Authorization头的请求"]
BearerTokenAuthenticationFilter -> AuthenticationManager [label="BearerTokenAuthenticationToken"]
AuthenticationManager -> DaoAuthenticationProvider [label="UsernamePasswordAuthenticationToken"]
DaoAuthenticationProvider -> UserDetailsService [label="UserDetails"]
UserDetailsService -> DaoAuthenticationProvider [label="认证后的UserDetails"]
DaoAuthenticationProvider -> PasswordEncoder [label="用户认证密码"]
PasswordEncoder -> DaoAuthenticationProvider [label="经过加密的密码"]
DaoAuthenticationProvider -> SecurityContext [label="认证后的Authentication"]
SecurityFilterChain -> RememberMeAuthenticationFilter [label="携带RememberMe认证的请求"]
RememberMeAuthenticationFilter -> RememberMeServices [label="RememberMeAuthenticationToken"]
RememberMeServices -> tokenStorage [label="认证令牌信息"]
RememberMeServices -> SecurityContext [label="认证后的Authentication"]
SecurityFilterChain -> AnonymousAuthenticationFilter [label="不携带任何认证信息请求"]
AnonymousAuthenticationFilter -> SecurityContext [label="匿名Authentication"]
SecurityContext -> servlet [label="已经加入认证信息的请求"]
}
@enddot