Mam backend napisany w Springu oraz frontned napisany w Angularze i staram się napisać logowanie do systemu.
Zamysł jest taki, wystawiam REST API które przyjmuje login i hasło użytkownika i po poprawnej walidacji zwraca access oraz refresh token w postaci HttpCookie. Do każdego następnego requestu dołączam te tokeny i je waliduje przed wpuszczeniem użytkownika do systemu.

W każdym razie, nie działa to dokładnie tak jak myślałem.
Po stronie backendu dla celów testowych mam coś takiego:

    @PostMapping("/sign-in")
    fun signIn(@RequestBody request: SignInRequest, response: HttpServletResponse): ResponseEntity<Void> {
        val accessTokenCookie = Cookie("access_token", "access_token_value")
        accessTokenCookie.isHttpOnly = true
        response.addCookie(accessTokenCookie)
        return ResponseEntity(HttpStatus.OK)
    }

Oraz filtr, który każdy sprawdza każdy przychodzący request, którego faktycznie implementacja również jest zbędna, póki co po prostu loguje to co przychodzi

request.cookies?.forEach { println(it.name + " : " + it.value) } ?: print("no cookies")

No i po stronie frontu, mam takie dwie metody

httpOptions = {
    headers: new HttpHeaders({ 'Content-Type': 'application/json' }),

    withCredentials: true,
    observe: 'response' as 'response'
  };

  signIn() {
    this.httpClient.post("http://localhost:8081/api/auth/sign-in", {
      email: "[email protected]",
      password: "user",
    },
      this.httpOptions
    ).subscribe()
  }

  testCall() {
    this.httpClient.get(
      "http://localhost:8081/api/test",
      this.httpOptions
    ).subscribe()
  }

Po pierwszym strzale do sign-in w network widzę ustawione cookies
screenshot-20210514230623.png

Każdy kolejny strzał do tego endpointu pokazuje mi też wspomniane cookie załączone do requestu.

Problem jednak pojawia się gdy wywołuje testCall(), żadne cookies nie są wtedy dołączone do requestu

Pozostaje więc pytanie - czemu?