Files

1.6 KiB
Raw Permalink Blame History

AP2는 refresh custody와 API caller를 서로 다른 경계에 둔다

Alternative text

브라우저가 Spring mediator에서 access token만 받아 Resource Server를 직접 호출하고 refresh token은 authorized-client store에 남기는 AP2 split-custody 아키텍처.

Long description

브라우저는 AP2_SESSION으로 confidential Spring mediator의 login state를 사용한다. Mediator는 code를 교환한 뒤 access와 refresh token을 server-side authorized-client service에 저장한다. 현재 access token의 값, type, expiry만 브라우저로 전달되고 refresh token은 server 경계에 남는다. 브라우저는 memory에 있는 access token으로 Resource Server용 Bearer header를 만든다.

Elements and evidence

  • Browser (actor): AP2_SESSION을 사용하고 전달받은 access token으로 API를 직접 호출하는 주체. Evidence: L156L160.
  • Spring mediator (service): Confidential OAuth client로 code를 교환하고 browser에 access-only 응답을 제공한다. Evidence: L156L158.
  • Authorized-client store (database): Access와 refresh token을 server-side state로 보관한다. Evidence: L156L160.
  • Resource Server (service): 브라우저가 만든 Bearer header를 직접 받으며 downstream audience를 검증하는 API. Evidence: L156L160.

Relationships

  • Browser → Resource Server: Bearer header. Evidence: L158L160.
  • Browser → Spring mediator: AP2_SESSION. Evidence: L158L160.
  • Spring mediator → Browser: access_token · type · expiry. Evidence: L158L158.
  • Spring mediator → Authorized-client store: 보관 · 조회. Evidence: L156L160.