트랜잭션 토큰
트랜잭션 토큰은 신뢰 도메인 내에서 서비스 간 통신에 대한 안전한 인증을 제공하도록 설계된, 유효 기간이 제한된 특수한 OAuth 2.0 토큰입니다. IETF 사양 초안( draft-ietf-oauth-transaction-tokens )에 따르면, 이러한 토큰은 특정 트랜잭션에 대한 변경 불가능한 컨텍스트 및 인증 정보를 포함하는 서명된 JWT입니다.
참고: 트랜잭션 토큰은 요청을 통해 사용할 수 있는 기능입니다. VDEV-186514: AI 에이전트 보안. 이 기능을 요청하려면 IBM 영업 담당자나 IBM 담당자에게 연락하여 해당 기능 활성화에 대한 의사를 밝혀 주시기 바랍니다. 권한이 있다면 기능 번호를 기재하여 지원 티켓을 생성할 수도 있습니다. IBM® Verify 체험판 구독자는 지원 티켓을 생성할 수 없습니다.
트랜잭션 토큰에 대하여
현대적인 마이크로서비스 아키텍처에서는 단일 외부 요청이 종종 여러 서비스가 연동되는 내부 워크플로를 촉발합니다. 트랜잭션 토큰은 다음 기능을 제공함으로써 이러한 시나리오에서 발생하는 보안 문제를 해결합니다:
tctx불변 트랜잭션 컨텍스트 : (트랜잭션 컨텍스트) 클레임에는 호출 체인 전반에 걸쳐 수정될 수 없는 트랜잭션별 정보가 포함되어 있어, 매개변수 변조를 방지합니다.- 완벽한 추적성 : 각 트랜잭션 토큰에는 고유한 트랜잭션 식별자(
txn클레임)가 포함되어 있어, 요청 처리에 관여하는 모든 서비스 전반에 걸쳐 종단 간 추적이 가능합니다. - 워크로드 승인 : (요청자 워크로드) 클레임은
req_wl해당 트랜잭션을 처리한 모든 워크로드의 체인을 유지하여, 호출 경로를 기반으로 정확한 승인 결정을 내릴 수 있도록 합니다. - 컨텍스트 보존 : 트랜잭션 토큰이 후속 토큰 교환(대체 토큰)에서 주체 토큰으로 사용될 때, 트랜잭션 컨텍스트와 식별자가 보존되어 전체 워크플로우에 걸쳐 일관성이 보장됩니다.
에서 트랜잭션 토큰 구성 IBM Verify
트랜잭션 토큰은 표준 OAuth 2.0 토큰 교환 절차를 통해 요청할 수 있으며, STS 클라이언트 또는 OpenID Connect 애플리케이션을 사용하여 구성할 수 있습니다.
- STS 고객 여러분께
- 관리 콘솔로 이동한 후 ]를 선택합니다. “STS 클라이언트 추가”를 클릭합니다.
- '토큰 교환 설정 ' 단계에서 '요청된 토큰 '의 드롭다운 메뉴에서 '거래 토큰'을 선택하십시오.참고: 사용 사례에 따라 트랜잭션 토큰을 주체 토큰 또는 행위자 토큰으로 구성할 수도 있습니다.
- '요청된 토큰 설정' 단계에서 트랜잭션 컨 텍스트를 구성할 수 있는 옵션을 찾을 수 있습니다. 이 필드는 출력이 결과 트랜잭션 토큰의 클레임에
tctx직접 매핑되는 CELx 표현식을 허용합니다. 이 표현식은 유효한 JSON 객체로 평가되어야 합니다. 예를 들면 다음과 같습니다.{ "amount": "100.00", "currency": "USD", "merchant_id": "requestContext.subject_token.email" }참고: ‘트랜잭션 컨텍스트’ 필드는 ‘요청된 토큰’이 ‘트랜잭션 토큰’으로 설정된 경우에만 표시됩니다. 이 필드는 다른 토큰 유형에는 적용되지 않습니다. - 나머지 필수 속성을 구성한 다음 ‘저장’을 클릭하여 STS 클라이언트를 생성합니다.
- 지원서 제출 시
- 관리 콘솔로 이동한 후 선택합니다. ‘애플리케이션 추가’를 클릭한 다음, ‘ OpenID Connect’와 관련된 애플리케이션 중 하나를 선택하세요.
- [ Sign-on] 탭에서 [ Token exchange] 섹션으로 이동합니다. “요청된 토큰 ”의 드롭다운 메뉴에서 “트랜잭션 토큰”을 선택하십시오.참고: 사용 사례에 따라 트랜잭션 토큰을 주체 토큰 또는 행위자 토큰으로 구성할 수도 있습니다.
- 트랜잭션 컨텍스트 를 유효한 JSON 객체로 평가되는 CELx 표현식으로 구성하십시오. 이는 결과 트랜잭션 토큰 내의 청구 항목과
tctx직접적으로 대응됩니다.참고: ‘트랜잭션 컨텍스트’ 필드는 ‘요청된 토큰’이 ‘트랜잭션 토큰’으로 설정된 경우에만 표시됩니다. 이 필드는 다른 토큰 유형에는 적용되지 않습니다. - 나머지 필수 속성을 설정하고 ‘저장’을 클릭하여 애플리케이션을 생성합니다.
트랜잭션 컨텍스트 매핑
트랜잭션 토큰의 특징 중 하나는 (트랜잭션 컨텍스트) 클레임으로 tctx , 이는 수행 중인 트랜잭션의 컨텍스트를 정의하는 불변 클레임입니다. 거래 토큰이 후속 토큰 교환 흐름에서 주체 토큰으로 사용될 경우, 생성된 토큰은 동일한 tctx 클레임을 유지하므로 거래 수명 주기 전반에 걸쳐 완벽한 추적성을 보장합니다.
트랜잭션 컨텍스트 생성 로직
IBM Verify 다음 우선순위 규칙을 사용하여 트랜잭션 토큰에 대한 청구권을
tctx 결정합니다:- CELx 표현식 정의 : (앞서 설명한 4단계에 따라) 트랜잭션 컨텍스트 CELx 표현식이 구성된 경우, 해당 표현식이 평가되고 그 결과가 클레임으로
tctx사용됩니다. - 제공된 요청 세부 정보 : CELx 표현식이 구성되지 않은 상태에서 토큰 교환 요청에 매개변수가
request_details포함된 경우, 의request_details값이 클레임으로tctx사용됩니다. - 사용 가능한 컨텍스트가 없음 : CELx 표현식이나
request_details가 모두 제공되지 않은 경우, 해당tctx클레임은 트랜잭션 토큰 에서 생략됩니다.
CELx 발현 예시
다음 예제는 일반적인 시나리오에 대한 트랜잭션 컨텍스트 매핑 CELx 표현식을 보여줍니다:
- 시나리오 1: 완전한 트랜잭션 컨텍스트 정의
- 이 예제는 tctx 클레임에 대한 완전한 JSON 페이로드를 정의합니다. 주체 및 행위자 토큰 클레임은 CELx에서 각각 requestContext.subjectToken 및 requestContext.actorToken 에서 확인할 수 있습니다:
{ "amount": "100.00", "currency": "USD", "merchant_id": "requestContext.subject_token.email" } - 시나리오 2: 런타임 값을 사용하여 요청 세부 정보 보강하기
requestContext.tctx토큰 교환 요청에서 전달된 매개변수는request_detailsCELx 표현식에서 로 사용할 수 있습니다. 실행 시점에 계산된 값을 추가하여 이 컨텍스트를 보강할 수 있습니다:
CELx 구문에 대한 자세한 내용은 ‘속성 함수 가이드’를 참조하십시오.requestContext.tctx.put("requestingUserName", user.userName)