Postman에서 AWS Cognito 로그인 시뮬레이션하는 방법

발행: (2026년 3월 11일 오후 08:33 GMT+9)
12 분 소요
원문: Dev.to

I’m happy to translate the article for you, but I’ll need the full text of the post (the content after the source line) in order to do so. Could you please paste the article’s text here? Once I have it, I’ll provide a Korean translation while preserving the original formatting, markdown, and any code blocks.

Cognito‑보호 백엔드 테스트 with Postman

프론트엔드를 사용하지 않고 유효한 인증 토큰이 필요할 때는 Cognito Identity Provider (IDP)를 직접 호출할 수 있습니다. 이 가이드에서는 IAM 자격 증명부터 AccessToken을 포함한 200 OK 성공 응답을 받을 때까지의 정확한 단계들을 보여줍니다.

사전 요구 사항

요구 사항
1CognitoIAM을 볼 수 있는 권한이 있는 AWS 콘솔에 대한 액세스
2Cognito 사용자 풀이 배포된 AWS region (예: us-east-2)
3프로그래밍 액세스가 가능한 IAM 사용자Access Key IDSecret Access Key가 필요합니다
4Cognito App Client ID (User Pool → App clients 아래에서 찾을 수 있음)
5User Pool에 있는 테스트 사용자 (사용자 이름 + 비밀번호)
6App Client에서 USER_PASSWORD_AUTH가 활성화됨 (아래 참조)

1️⃣ USER_PASSWORD_AUTH 활성화

Cognito는 여러 인증 흐름을 지원합니다.

  • USER_PASSWORD_AUTH – 단일 요청으로 평문 사용자 이름 및 비밀번호를 받아들입니다 (직접 API 테스트에 이상적).
  • USER_SRP_AUTH – 챌린지 기반 SRP 흐름; 전송 중에 자격 증명을 노출하지 않습니다.

⚠️ USER_PASSWORD_AUTH개발 / 스테이징 환경에서만 활성화하십시오. 프로덕션에서는 USER_SRP_AUTH 또는 토큰 기반 흐름을 사용하는 것이 좋습니다.

활성화 방법

  1. AWS 콘솔을 열고 → CognitoUser PoolsYour PoolApp clients.
  2. 클라이언트를 선택하고 → Authentication flows까지 스크롤합니다.
  3. **ALLOW_USER_PASSWORD_AUTH**를 체크합니다 (이미 체크되어 있지 않은 경우).
  4. Save changes를 클릭합니다.

2️⃣ IAM 자격 증명을 안전하게 저장하기 (Postman Vault)

Cognito IDP 엔드포인트(https://cognito-idp..amazonaws.com/)는 SigV4 서명이 필요하므로 유효한 AWS 자격 증명이 필요합니다.

  1. AWS 콘솔에서 IAMUsersYour UserSecurity credentials 로 이동합니다.
  2. Access keys 아래에서 Access Key IDSecret Access Key를 생성하거나 복사합니다.

공유 Postman 환경에 이러한 값을 절대 하드코딩하지 마세요.
대신 Postman Vault(로컬 전용 저장소)를 사용합니다:

Vault entryValue
access_keyYour IAM Access Key ID
secret_keyYour IAM Secret Access Key

요청에서는 {{vault:access_key}}{{vault:secret_key}} 로 참조합니다.

Source:

3️⃣ Postman에서 AWS Signature 인증 구성하기

  1. 새 POST 요청 만들기

    POST https://cognito-idp..amazonaws.com/
  2. Authorization 탭Auth Type: AWS Signature

    필드
    Add auth toRequest Headers
    AccessKey{{vault:access_key}}
    SecretKey{{vault:secret_key}}
    AWS Region예: us-east-2
    Service Namecognito-idp
    Session Token(STS를 사용하는 경우가 아니라면 비워 둡니다)

    Postman이 Authorization 헤더와 모든 필수 X‑Amz‑* 헤더를 자동으로 생성합니다.

  3. Headers 탭 – 필수 정적 헤더 추가

    Content-Typeapplication/x-amz-json-1.1
    X-Amz-TargetAWSCognitoIdentityProviderService.InitiateAuth
    X-Amz-User-Agentaws-amplify/5.0.4 auth framework/5
  4. Body 탭rawJSON

    {
      "AuthFlow": "USER_PASSWORD_AUTH",
      "ClientId": "your_app_client_id_here",
      "AuthParameters": {
        "USERNAME": "testuser@yourdomain.com",
        "PASSWORD": "YourTestPassword"
      }
    }

    ClientId, USERNAME, PASSWORD를 실제 값으로 교체하세요.

  5. Send 버튼을 클릭합니다.

4️⃣ 예상 성공 응답

{
  "AuthenticationResult": {
    "AccessToken": "eyJraW...",
    "ExpiresIn": 3600,
    "IdToken": "eyJraW...",
    "RefreshToken": "eyJjb...",
    "TokenType": "Bearer"
  },
  "ChallengeParameters": {}
}
  • 이후 API 호출 시 Authorization 헤더에 Bearer 토큰으로 AccessToken(또는 백엔드에 따라 IdToken)을 사용하십시오.

5️⃣ 일반적인 오류 응답 및 해결 방법

오류가능한 원인해결 방법
UnrecognizedClientException / InvalidSignatureException잘못되었거나 만료된 IAM 자격 증명, 잘못된 리전, 또는 잘못된 서비스 이름(cognito-idp)Vault 값, AWS 리전 및 서비스 이름 필드를 확인하십시오
InvalidParameterException: USER_PASSWORD_AUTH flow not enabled앱 클라이언트에 ALLOW_USER_PASSWORD_AUTH가 없음Cognito 앱 클라이언트 설정에서 해당 흐름을 다시 활성화하십시오
NotAuthorizedException: Incorrect username or password잘못된 테스트 자격 증명 또는 사용자가 존재하지 않음Cognito 콘솔에서 사용자의 아이디/비밀번호를 확인하십시오
**400 Bad Request (no body)누락되었거나 잘못된 X-Amz-Target 헤더X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth가 포함되어 있는지 확인하십시오
MissingAuthenticationToken요청이 서명되지 않음(AUTH 유형이 AWS Signature로 설정되지 않음)AWS Signature 인증 구성을 다시 적용하십시오

TL;DR 체크리스트

  1. 활성화 USER_PASSWORD_AUTH on the App client.
  2. 생성 IAM access key & store it in Postman Vault.
  3. 설정 a POST request to https://cognito-idp..amazonaws.com/.
  4. 구성 AWS Signature auth (Vault variables, region, service).
  5. 추가 required headers (Content-Type, X‑Amz‑Target, X‑Amz‑User-Agent).
  6. 전송 the JSON payload with AuthFlow: USER_PASSWORD_AUTH.
  7. 추출 the AccessToken (or IdToken) for downstream API calls.

이제 Postman에서 직접 Cognito 토큰을 얻는 재현 가능하고 완전하게 문서화된 방법을 갖게 되었습니다—백엔드 테스트, CI 파이프라인, 인증 문제 디버깅에 이상적입니다. 즐거운 테스트 되세요!

일반적인 Cognito IDP 오류

오류설명해결 방법
MissingAuthenticationTokenExceptionSigV4 서명이 구성되지 않았거나 자격 증명이 비어 있습니다.Postman Vault 값이 올바르게 해석되는지 확인하십시오 – Authorization 탭에서 빨간색으로 강조된 Vault 참조는 비밀이 해석되지 않았음을 나타냅니다.
UserNotConfirmedException테스트 사용자 계정이 확인되지 않았습니다.이메일/SMS 인증을 통해 사용자를 확인하거나, AWS 콘솔 → CognitoUsers[User]Confirm 에서 수동으로 사용자를 확인하십시오.

Cognito 인증 엔드포인트를 직접 테스트하는 이유

테스트 엔드포인트를 호출하면 토큰을 얻는 것 이상의 이점을 제공합니다. 전체 인증 파이프라인이 정상 동작하는지 검증할 수 있습니다:

  • App Client ID가 올바르고 인증 흐름이 제대로 구성되어 있습니다.
  • IAM 권한이 테스트 환경에 맞게 올바르게 범위가 지정되었습니다.
  • 테스트 사용자가 확인된(active) 상태에 있습니다.
  • Token expiry (ExpiresIn: 3600)가 세션 관리 기대치와 일치합니다.
  • Response structure가 프런트엔드 또는 API 소비자가 기대하는 형태와 일치합니다.

하위 API가 IdToken을 사용해 클레임 기반 권한 부여(예: cognito:groups 또는 사용자 정의 속성 확인)에 의존한다면, jwt.io와 같은 도구를 사용해 JWT를 로컬에서 디코딩하여 추가 호출 없이 페이로드를 검사할 수 있습니다.

수동 Postman 테스트 → 자동화 JMeter 테스트

  1. Manual step – Get the token in Postman.
    수동 단계 – Postman에서 토큰을 가져옵니다.

  2. Automation step – In JMeter, use an HTTP Sampler to perform the same InitiateAuth call, then extract AccessToken with a JSON Extractor and pass it to subsequent samplers as a variable.
    자동화 단계 – JMeter에서 HTTP Sampler를 사용해 동일한 InitiateAuth 호출을 수행하고, JSON ExtractorAccessToken을 추출한 뒤 변수로서 이후 샘플러에 전달합니다.

Tip: For CI/CD‑integrated test suites, store test credentials in AWS Secrets Manager or Parameter Store and fetch them at runtime instead of embedding them in scripts or collection files.
팁: CI/CD와 통합된 테스트 스위트의 경우, 테스트 자격 증명을 AWS Secrets Manager 또는 Parameter Store에 저장하고, 스크립트나 컬렉션 파일에 직접 포함하는 대신 런타임에 가져오세요.

Step‑by‑Step Action List

StepAction
1USER_PASSWORD_AUTH가 Cognito App Client에서 활성화되어 있는지 확인합니다.
2IAM Access KeySecret Key를 가져옵니다.
3자격 증명을 Postman Vault에 저장합니다.
4Authorization 탭에서 AWS Signature 인증을 설정합니다.
5필요한 헤더를 추가합니다: Content-Type, X-Amz-Target, X-Amz-User-Agent.
6AuthFlow, ClientId, AuthParameters를 포함한 JSON 본문을 작성합니다.
7요청을 전송하고 AuthenticationResult에서 토큰을 추출합니다.

샘플 요청 (JSON 본문)

{
  "AuthFlow": "USER_PASSWORD_AUTH",
  "ClientId": "",
  "AuthParameters": {
    "USERNAME": "",
    "PASSWORD": ""
  }
}

마무리 생각

Direct Cognito API 테스트는 AWS 기반 시스템을 다루는 모든 사람에게 기본적인 기술입니다. 그것은:

  • 실행 중인 프런트엔드에 대한 의존성을 제거합니다.
  • 테스트 설정 중 토큰 획득 속도를 높입니다.
  • 프로토콜 수준에서 인증 레이어가 어떻게 동작하는지 명확하게 확인할 수 있습니다.

이 워크플로우를 마스터하면 디버깅, 성능 테스트 및 CI/CD 파이프라인이 훨씬 더 신뢰할 수 있게 됩니다.

0 조회
Back to Blog

관련 글

더 보기 »