1.7 KiB
1.7 KiB
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: L156–L160.
- Spring mediator (service): Confidential OAuth client로 code를 교환하고 browser에 access-only 응답을 제공한다. Evidence: L156–L158.
- Authorized-client store (database): Access와 refresh token을 server-side state로 보관한다. Evidence: L156–L160.
- Resource Server (service): 브라우저가 만든 Bearer header를 직접 받으며 downstream audience를 검증하는 API. Evidence: L156–L160.
Relationships
- Browser → Resource Server: Bearer header. Evidence: L158–L160.
- Browser → Spring mediator: AP2_SESSION. Evidence: L158–L160.
- Spring mediator → Browser: access_token · type · expiry. Evidence: L158–L158.
- Spring mediator → Authorized-client store: 보관 · 현재 access 조회. Evidence: L156–L160.