Tyk Feature - Request Headers 제어

Jun Hwang

방법1 - API 정의를 사용하여 요청 헤더 변환

Tyk를 사용하면 헤더 정보가 프록시를 떠나기 전에, 업스트림 API로 전달되거나 응답이 클라이언트로 다시 프록시될 때 헤더 정보를 수정할 수 있습니다. 이는 단일 인증 키가 있는 업스트림 API가 있을 때, 이를 수정하거나 새로운 사용자를 지원하기 위해 투박한 인증 방법을 추가하지 않고 해당 API에 대한 다중 사용자 액세스를 추가하려는 경우에 매우 유용할 수 있습니다.

[시나리오 예시]

액세스를 허용하기 위해 x-widgets-secret 헤더를 사용하는 WidgetsAPI라는 API가 있습니다. 이것은 팀에서 사용하는 내부 API이지만 고객에게 공개하고 액세스 비용을 청구하려고 합니다.

이 때, 여러분은;

  1. API를 수정하고 전체 사용자, 키 및 액세스 관리 시스템을 추가하거나
  2. Tyk를 사용하여 이 헤더를 삽입하도록 만들 수 있습니다.

API 정의 객체 (API definition object) 업데이트: Tyk를 사용하여 extended_paths.transform_headers 필드에 다음을 추가하여 API 정의를 설정할 수 있습니다.

extended_paths.transform_headers.png

이제, 이 API 및 버전으로 설정된 액세스 정의 규칙으로 생성한 Tyk 키에 기존 API에 새로운 코드나 기능을 추가할 필요 없이 할당량(quotas), 조절(throttling)및 액세스 검사를 적용할 수 있습니다.

방법2 - 대시보드를 사용하여 요청 헤더 변환

대시보드의 GUI를 사용하여 요청에 새 헤더를 삽입하려면 API 정의의 엔드포인트 디자이너 섹션에서 편집해야 합니다.

1단계: 엔드포인트 추가하고 헤더 수정 플러그인 선택합니다
또한, 매칭시킬 메소드와 요청 패턴을 설정해야만 합니다. 이러한 패턴은 중괄호, { }로 묶인 문자열 형식의 와일드카드를 포함할 수 있습니다. 이러한 와일드카드는 사람이 읽을 수 있도록 하고 변수명으로 변환하지 않습니다. 내부에서 와일드카드는 (.*)의 "모든 항목 일치" 정규식으로 변환됩니다.
API Designer_modifiying headers.png

2단계: “Request" 탭 선택 - 이렇게 하면 인바운드 요청에만 적용됩니다.
Modify headers.png

3단계: 헤더 수정 설정
제공된 필드를 사용하여 삭제 및 삽입할 헤더 설정을 선택합니다. 추가하는 모든 헤더는 카멜방식의 대문자로 표시됩니다. 즉. UI 또는 API 정의에 x-request-id를 추가하면 응답에서 호출자는 X-Request-Id를 받게 됩니다.

중요: Add 버튼을 클릭하여 목록에 추가되었는지 확인하십시오.

setup header modify.png

4단계: API 저장 - API가 저장되면 요청 경로 및 메서드가 패턴과 일치하면 엔드포인트에 도달하는 요청이 관련 수정됩니다.

방법3 - 전역적으로 요청 헤더 수정

전역적으로 헤더 주입 및 제거하기
어떤 경우에는 모든 아웃바운드 요청에 보안 헤더를 추가하고 싶을 수 있습니다(예: 트래픽이 게이트웨이에서 오는지 확인). 그렇게 하려면 API 정의의 버전 블록에 다음을 추가하십시오.
injecting and removing header globally.png <br></br>

방법4 - 대시보드를 통해 전역 인젝션 추가하기

Global Version Setting 메뉴를 선택하여 API 엔드포인트 디자이너를 통해 대시보드에서 이를 달성할 수도 있습니다. adding global injection.png

방법5 - 헤더에 사용자 지정 동적 데이터 삽입

사용자 세션 객체 내에서 전달되는 정보를 헤더 공간에도 주입할 수 있습니다. 각 토큰 또는 키에는 ‘meta_data’ 필드가 포함된 연결된 세션 개체가 있습니다. 이는 동적 미들웨어 및 기타 구성 요소가 인바운드 요청의 ID 정보를 노출하지 않고 지능적으로 작동할 수 있도록 하는 key/value 맵입니다.

헤더 변환에서 이 데이터를 사용하려면 특수 $tyk_meta 네임스페이스에 액세스하기만 하면 됩니다. 다음은 작업 예입니다.

세션 개체에 다음 메타데이터를 포함했다고 가정해 보겠습니다:

injecting custom dynamic data into header.png

헤더 변환에서 이것을 사용하려면 API 정의 경로는 다음과 같습니다.
transform headers.png

방법6 - 대시보드의 메타 데이터

변수 이름($tyk_meta)은 대시보드 필드에서도 사용할 수 있으며 동일한 방식으로 작동합니다.

방법7 - 헤더에 컨텍스트 변수 인젝팅

버전 2.2부터 Tyk에서는 $tyk_context. namespace를 사용하여 컨텍스트 변수를 헤더에 주입할 수 있습니다. 네임스페이스. 자세한 내용은 컨텍스트 변수를 참조하십시오.

Global Header 섹션 예시
example global header section.png