AWS WAF 모바일 SDK 작동 방식
이 섹션에서는 AWS WAF 모바일 SDK 클래스, 속성 및 작업이 함께 작동하는 방식을 설명합니다.
모바일 SDK는 토큰 검색 및 사용에 사용할 수 있는 구성 가능한 토큰 공급자를 제공합니다. 토큰 공급자는 허용한 요청이 합법적인 고객의 요청인지 확인합니다. AWS WAF로 보호하는 AWS 리소스에 요청을 보낼 때는 토큰을 쿠키에 포함시켜 요청을 검증합니다. 토큰 쿠키는 수동으로 처리하거나 토큰 공급자에게 대신 처리하도록 할 수 있습니다.
이 섹션에서는 모바일 SDK에 포함된 클래스, 속성 및 메서드 간의 상호 작용을 다룹니다. SDK 사양에 대한 내용은 AWS WAF 모바일 SDK 사양 섹션을 참조하세요.
토큰 검색 및 캐싱
모바일 앱에서 토큰 공급자 인스턴스를 생성할 때 토큰 및 토큰 검색을 관리하는 방법을 구성합니다. 앱의 웹 요청에 사용할 수 있도록 유효하고 만료되지 않은 토큰을 유지하는 방법을 선택하는 것이 가장 좋습니다.
-
백그라운드 새로 고침이 활성화됨 – 기본값입니다. 토큰 공급자는 백그라운드에서 토큰을 자동으로 새로 고쳐 캐시합니다. 백그라운드 새로 고침이 활성화된 상태에서
getToken()
을 호출하면 캐시된 토큰이 검색됩니다.토큰 공급자는 구성 가능한 간격으로 토큰 새로 고침을 수행하므로 애플리케이션이 활성 상태인 동안 만료되지 않은 토큰을 캐시에서 항상 사용할 수 있습니다. 애플리케이션이 비활성 상태인 동안에는 백그라운드 새로 고침이 일시 중지됩니다. 이에 대한 자세한 내용은 앱 비활성 이후 토큰 검색 섹션을 참조하세요.
-
백그라운드 새로 고침 비활성화 - 백그라운드 토큰 새로 고침을 비활성화하고 나서, 온디맨드로만 토큰을 검색할 수 있습니다. 온디멘드 검색 토큰은 캐시되지 않으며 원하는 경우 두 개 이상을 검색할 수 있습니다. 각 토큰은 검색하는 다른 토큰과 독립적이며 각 토큰에는 만료를 계산하는 데 사용되는 고유한 타임스탬프가 있습니다.
백그라운드 새로 고침이 비활성화된 경우 다음과 같은 토큰 검색 옵션을 선택할 수 있습니다.
-
getToken()
- 백그라운드 새로 고침이 비활성화된 상태에서getToken()
을 호출하면 AWS WAF의 새 토큰이 동기적으로 검색됩니다. 이 호출은 메인 스레드에서 호출할 경우 앱 응답성에 영향을 줄 수 있는 잠재적으로 차단된 호출입니다. -
onTokenReady(WAFTokenResultCallback)
- 이 호출은 새 토큰을 비동기적으로 검색한 다음 토큰이 준비되면 백그라운드 스레드에서 제공된 결과 콜백을 호출합니다.
-
토큰 공급자가 실패한 토큰 검색을 재시도하는 방법
토큰 공급자는 검색에 실패하면 자동으로 토큰 검색을 다시 시도합니다. 재시도는 처음에 지수 백오프를 사용하여 수행되며 시작 재시도 대기 시간은 100ms입니다. 지수 재시도에 대한 자세한 내용은 AWS의 오류 재시도 및 지수 백오프 섹션을 참조하세요.
재시도 횟수가 구성된 maxRetryCount
회에 도달하면 토큰 공급자는 토큰 검색 유형에 따라 시도를 중단하거나 maxErrorTokenRefreshDelayMsec
밀리초마다 시도하도록 전환합니다.
-
onTokenReady()
- 토큰 공급자는 각 시도 사이 대기(maxErrorTokenRefreshDelayMsec
밀리초)로 전환하고 토큰 검색을 계속 시도합니다. -
백그라운드 새로 고침 - 토큰 공급자는 각 시도 사이 대기(
maxErrorTokenRefreshDelayMsec
밀리초)로 전환하고 토큰 검색을 계속 시도합니다. -
백그라운드 새로 고침이 비활성화되었을 때 온디맨드
getToken()
호출 - 토큰 공급자가 토큰 검색 시도를 중단하고 이전 토큰 값을 반환하거나, 이전 토큰이 없는 경우 null 값을 반환합니다.
앱 비활성 이후 토큰 검색
앱이 해당 앱 유형에 맞게 활성화된 것으로 간주되는 경우에만 백그라운드 새로 고침이 수행됩니다.
-
iOS - 앱이 포그라운드에 있을 때 백그라운드 새로 고침이 수행됩니다.
-
Android - 앱이 포그라운드 또는 백그라운드에 있는지 여부와 관계없이 앱이 닫히지 않은 경우 백그라운드 새로 고침이 수행됩니다.
앱이 구성된 tokenRefreshDelaySec
초보다 더 긴 시간 동안 백그라운드 새로 고침을 지원하지 않는 상태로 유지되는 경우 토큰 공급자는 백그라운드 새로 고침을 일시 중지합니다. 예를 들어 iOS 앱의 경우 tokenRefreshDelaySec
는 300이고 앱이 종료되거나 300초 넘게 백그라운드에 있으면 토큰 공급자는 토큰 새로 고침을 중단합니다. 앱이 활성 상태로 돌아오면 토큰 공급자는 백그라운드 새로 고침을 자동으로 다시 시작합니다.
앱이 다시 활성 상태로 복원되면 토큰 공급자가 새 토큰을 검색하고 캐시했을 때 알림을 받을 수 있도록 onTokenReady()
을 호출합니다. 캐시에 현재 유효한 토큰이 아직 포함되어 있지 않을 수 있으므로 무작정 getToken()
을 호출해서는 안 됩니다.