Add the service-to-service module
This commit is contained in:
17
README.md
17
README.md
@@ -11,6 +11,7 @@ by that module's `scripts/run-all.sh`, never typed by hand.
|
||||
| [`method-security/`](method-security/README.md) | [Method Security in Spring Security 7: `@PreAuthorize`, `@PostAuthorize` and the Proxy Traps](https://ankurm.com/spring-security-7-method-security-proxy-traps/) | What the method-security annotations do, the full SpEL surface, and the cases where the check silently does not run |
|
||||
| [`filter-chain/`](filter-chain/README.md) | [The Spring Security Filter Chain Explained](https://ankurm.com/spring-security-filter-chain-explained/) | Every filter in the default chain and its order number, where a custom filter actually lands, and how to read the TRACE log |
|
||||
| [`cors-csrf/`](cors-csrf/README.md) | [CORS, CSRF and SameSite in Spring Boot 4](https://ankurm.com/spring-boot-4-cors-csrf-samesite/) | Why MVC-layer CORS does not fix a security-layer preflight rejection, what `csrf.spa()` assigns, and the cookie a browser silently refuses to store |
|
||||
| [`service-to-service/`](service-to-service/README.md) | [Securing Spring Boot Microservices: Token Relay, Service-to-Service JWT and mTLS](https://ankurm.com/spring-boot-microservices-token-relay-mtls/) | Whose identity arrives at the last service under relay, client credentials and token exchange — and what a resource server does not check by default |
|
||||
|
||||
They are related more closely than they look. `filter-chain` is about how an `Authentication`
|
||||
gets into `SecurityContextHolder` in the first place and in what order; `context-propagation` is
|
||||
@@ -20,6 +21,12 @@ thread it ends up on. An `@Async` method carrying `@PreAuthorize` fails with
|
||||
the third — and a custom authentication filter that never populated the context in the first
|
||||
place fails the same way, for reasons that belong to the first.
|
||||
|
||||
`service-to-service` is the same question one process further out: `cors-csrf` and
|
||||
`context-propagation` ask whether an identity survives a thread or a browser boundary, and this
|
||||
one asks whether it survives an HTTP boundary — and what the service on the far side bothers to
|
||||
verify about it. Its `/edge/relay-async` endpoint fails for exactly the reason
|
||||
`context-propagation` documents.
|
||||
|
||||
`cors-csrf` is where those order numbers stop being trivia. `CorsFilter` at 1000 and `CsrfFilter`
|
||||
at 1100 both sit far above `AuthorizationFilter` at 4200, and almost every confusing symptom in
|
||||
that module is a consequence of one of those three positions — including a 403 that arrives as a
|
||||
@@ -33,14 +40,16 @@ manages. Versions were taken from `maven-metadata.xml` on Maven Central rather t
|
||||
release announcements.
|
||||
|
||||
`context-propagation` additionally needs `--enable-preview`, because `StructuredTaskScope` is
|
||||
still a preview API on JDK 25. `method-security` does not. `filter-chain` and `cors-csrf` are
|
||||
real servlet applications: they inherit `spring-boot-starter-parent` and run on Tomcat, because
|
||||
the things they demonstrate only exist inside a servlet container.
|
||||
still a preview API on JDK 25. `method-security` does not. `filter-chain`, `cors-csrf` and
|
||||
`service-to-service` are real servlet applications: they inherit `spring-boot-starter-parent`
|
||||
and run on Tomcat, because the things they demonstrate only exist inside a servlet container.
|
||||
`service-to-service` runs five of them at once, and is the only module that also pulls in
|
||||
Spring Cloud — a separate release train, built against Boot 4.0.8 rather than 4.1.1.
|
||||
|
||||
## Running a module
|
||||
|
||||
```bash
|
||||
cd cors-csrf # or context-propagation, method-security, filter-chain
|
||||
cd cors-csrf # or context-propagation, method-security, filter-chain, service-to-service
|
||||
./scripts/run-all.sh # every demo plus the test suite, regenerating docs/output/
|
||||
mvn test # just the assertions
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user