@startuml skinparam Shadowing false skinparam class { BackgroundColor White } hide empty members package org.springframework.security.core { package context { class SecurityContextHolder { -{static} SecurityContextHolderStrategy strategy -{static} int initilizeCount -{static} void initilize() +{static} void clearContext() +{static} SecurityContext getContext() +{static} int getInitilizeCount() +{static} void setContext(SecurityContext context) +{static} void setStrategyName(String strategyName) +{static} SecurityContextHolderStrategy getContextHolderStrategy() +{static} SecurityContext createEmptyContext() } interface SecurityContextHolderStrategy { + void clearContext() + SecurityContext getContext() + void setContext(SecurityContext context) + SecurityContext createEmptyContext() } class ThreadLocalSecurityContextHolderStrategy { -{static} ThreadLocal contextHolder } class GlobalSecurityContextHolderStrategy { -{static} SecurityContext contextHolder } class InheritableThreadLocalSecurityContextHolderStrategy { -{static} ThreadLocal contextHolder } class ReactiveSecurityContextHolder { +{static} Mono getContext() -{static} boolean hasSecurityContext(Context context) -{static} Mono getSecurityContext(Context context) +{static} Function clearContext() +{static} Context withSecurityContext(Mono securityContext) +{static} Context withAuthentication(Authentication authntication) } class SecurityContext { + Authentication getAuthentication() + void setAuthentication(Authentication authentication) } } interface Authentication { + Collection getAuthorities() + Object getCredentials() + Object getDetails() + Object getPrincipal() + boolean isAuthticated() + setAuthenticated(boolean isAuthenticated) } interface GrantedAuthority { + String getAuthority() } } package java.security { interface Principal { + String getName() + boolean implies(Subject subject) } } SecurityContextHolderStrategy --* SecurityContextHolder ThreadLocalSecurityContextHolderStrategy ..|> SecurityContextHolderStrategy GlobalSecurityContextHolderStrategy ..|> SecurityContextHolderStrategy InheritableThreadLocalSecurityContextHolderStrategy ...|> SecurityContextHolderStrategy SecurityContext --* SecurityContextHolderStrategy SecurityContext -* ReactiveSecurityContextHolder SecurityContext --* ThreadLocalSecurityContextHolderStrategy SecurityContext --* InheritableThreadLocalSecurityContextHolderStrategy SecurityContext --* GlobalSecurityContextHolderStrategy Authentication --* SecurityContext GrantedAuthority -* Authentication Authentication -|> Principal @enduml