JWT 생성

IBM® API ConnectAI Gateway 에서 JWT 생성 보안 정책을 사용하여 JWT (JSON Web Token) 를 생성하십시오.

게이트웨이 지원

표 1. 이 정책을 지원하는 게이트웨이와 해당 정책 버전을 보여주는 표
게이트웨이 정책 버전
DataPower® Gateway (v5 compatible) 1.0.0
DataPower API Gateway 2.1.0

이 항목에서는 어셈블리 사용자 인터페이스에서 정책을 구성하는 방법을 설명합니다. OpenAPI 소스에서 정책을 구성하는 방법에 대한 자세한 내용은 jwt-generate를 참조하십시오.

정보

JWT(JSON Web Token)는 두 당사자 사이에서 전송할 청구를 나타내는, 안전한 URL을 사용하는 압축된 방식입니다. JWT 생성 정책을 사용하면 청구를 생성하고 청구를 JWS (JSON Web Signature) 구조의 페이로드로 사용할지 또는 JWE (JSON Web Encryption) 구조의 일반 텍스트로 사용할지 여부를 구성할 수 있습니다. JWS 및 JWE 모두에 대한 암호 자료를 지정하면 둘 다 디지털 서명 및 암호화된, 중첩된 JWT를 생성합니다. 그런 다음 JWT는 Bearer 토큰 (기본 옵션) 으로 권한 부여 헤더에 지정되거나 JSON Web Token (JWT) 특성 (지정된 경우) 의 런타임 변수에 지정됩니다.

참고:
  • 알고리즘 유형 HS256, HS384, HS512의 경우 참조된 암호 오브젝트는 공유되는 비밀 키여야 합니다.
  • 알고리즘 유형 RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512의 경우 참조된 암호 오브젝트는 암호 키(개인 키)여야 합니다.
  • 암호 자료는 JWK(JSON Web Key)를 통해 제공할 수 있습니다.
  • 암호 오브젝트 및 JWK 모두 지정하면 JWT에 서명하는 데 암호 오브젝트를 사용합니다.

전제조건

다음 전제조건이 적용됩니다.
  • 하나 이상의 암호화 객체(crypto objects)를 사용하는 경우, 해당 객체들은 DataPower 어플라이언스의 API ConnectAI Gateway 도메인 내에 위치해야 합니다. 암호 오브젝트는 JWT 컨텐츠에 서명하거나 이를 암호화하는 데 필요한 공유되는 비밀 키 또는 인증서를 참조해야 합니다.
  • JWK(JSON Web Key)를 사용하는 경우 런타임 변수에서 참조해야 합니다.

특성

다음 표에서는 정책 특성을 나열하고, 특성이 필수인지 여부를 표시하며, 올바른 입력 값과 기본 입력 값을 지정하고, 값의 데이터 유형을 지정합니다.

표 2. JWT 정책 속성 생성
특성 레이블 필수 설명 데이터 유형
제목 아니오 해당 정책의 제목입니다.

기본값은 jwt-generate입니다.

문자열
설명 아니오 정책의 설명입니다. 문자열
JWT(JSON Web Token) 아니오 생성된 JWT를 배치할 런타임 변수입니다.

기본값은 generated.jwt입니다. 그러나 설정하지 않으면 생성된 JWT가 권한 부여 헤더에 전달자 토큰으로 배치됩니다.

문자열
JWT ID 청구 아니오 JTI(JWT ID) 청구를 JWT에 추가할지 여부를 표시합니다.

선택한 경우 특성은 true로 설정되고 UUID는 JTI 청구 값으로 설정됩니다.

부울
발행자 청구 발행자(iss) 청구 문자열을 검색할 수 있는 런타임 변수입니다. 이 청구는 JWT를 발행한 프린시펄을 나타냅니다.

기본값은 iss.claim입니다.

문자열
주제 청구 아니오 주제(sub) 청구 문자열을 검색할 수 있는 런타임 변수입니다. 문자열
대상 청구 아니오 대상(aud) 청구 문자열을 검색할 수 있는 런타임 변수입니다. 쉼표로 구분된 문자열을 사용하여 여러 변수를 설정합니다. 문자열
유효 기간 현재 날짜 및 시간에 추가된 시간 길이(초)로서, JWT가 유효한 것으로 간주되는 시간입니다.

기본값은 3600입니다.

정수
개인용 청구 아니오 JSON 청구의 올바른 JSON 세트를 검색할 수 있는 런타임 변수입니다. 이 청구는 이전에 지정된 청구 세트에 추가됩니다. 문자열
JWK 변수 이름 서명 아니오 JWT에 서명하는 데 사용되는 JWK를 포함하는 런타임 변수.1 문자열
암호화 알고리즘 아니오 사용할 암호화 알고리즘입니다. 유효값은 다음과 같습니다.
  • HS256
  • HS384
  • HS512
  • RS256
  • RS384
  • RS512
  • ES256
  • ES384
  • ES512
  • PS256
  • PS384
  • PS512
문자열
암호 오브젝트 서명 아니오 JWT에 서명하는 데 사용할 암호화 객체.1 문자열
KID 값의 부호 아니오 JWT 서명을 위한 사용자 지정 kid 값. 문자열
암호화 알고리즘 아니오 사용할 암호화 알고리즘입니다. 유효값은 다음과 같습니다.
  • A128CBC-HS256
  • A192CBC-HS384
  • A256CBC-HS512
문자열
JWK 변수 이름 암호화 아니오 JWT 암호화에 사용할 JWK가 포함된 런타임 변수입니다. 문자열
키 암호화 알고리즘 아니오 사용할 키 암호화 알고리즘입니다. 유효값은 다음과 같습니다.
  • RSA1_5
  • RSA-OAEP
  • RSA-OAEP-256
  • dir
  • A128KW
  • A192KW
  • A256KW
문자열
암호 오브젝트 암호화 아니오 청구 암호화에 사용할 암호 오브젝트입니다. 문자열
KID 값 암호화 아니오 JWT 암호화를 위한 사용자 지정 kid 값. 문자열

      - jwt-generate:
          version: 2.1.0
          title: jwt-generate
          description: New jwt-generate v2.1.0 policy.
          jwt: generated.jwt
          jti-claim: true
          iss-claim: iss.claim
          sub-claim: sub.claim
          aud-claim: aud.claim
          exp-claim: 3600
          private-claims: private.claims
          jws-jwk: jws.jwk
          jws-alg: HS256
          jws-crypto: jwsCryptoObjectName
          custom-kid-value-jws: jws.kid
          jwe-enc: A128CBC-HS256
          jwe-jwk: jwe.jwk
          jwe-alg: RSA1_5
          jwe-crypto: jweCryptoObjectName
          custom-kid-value-jwe: jwe.kid

오류

정책 실행 중에 다음 오류를 예외 처리할 수 있습니다.
  • RuntimeError - 정책 실행 중에 발생하는 모든 오류를 캡처하는 일반 오류입니다. 실패한 경우 기본 JOSE 모듈에서 수신된 자세한 오류 메시지는 오류 메시지로 기본 시스템 로그에 기록됩니다. 이 자세한 오류 메시지는 런타임 변수 jwt-generate.error-message에도 지정되므로, 발견을 통해 검색할 수 있습니다.
Invalid-JWT-Generate 캐치가 설정되지 않은 경우, 실패 시 JWT 생성 정책 은 500 오류 코드( HTTP )를 반환합니다. 기본 JOSE 모듈에서 자세한 오류 메시지는 시스템 로그에서 찾을 수 있습니다.
주의: API에 대한 고객 중 하나의 실패를 해결하는 API 개발자인 경우, 고객에게 로그 메시지의 정확한 컨텐츠를 보내기 전에 보안 위험을 고려하십시오. 고객에게 메시지에 대한 일반 정보만 보내어 로그 메시지에서 받은 정보를 기반으로 하여 누군가가 공격을 실행하는 것을 방지할 수 있습니다.
1 JWK및 암호 오브젝트는 모두 JWT에 서명하는 데 필요한 암호화 데이터를 제공하는 올바른 방법입니다. 그러나 두 데이터 유형을 지정하면 암호 오브젝트만 사용됩니다. 하나 이상의 암호화 객체(crypto objects)를 사용하는 경우, 해당 객체들은 DataPower 어플라이언스의 API ConnectAI Gateway 도메인 내에 위치해야 합니다. 암호 오브젝트는 JWT 컨텐츠에 서명하거나 이를 암호화하는 데 필요한 공유되는 비밀 키 또는 인증서를 참조해야 합니다.