JWT(JSON Web Token)

JWT(JSON 웹 토큰)는 다음에서 정의된 개방형 표준입니다. JWT(JSON 웹 토큰) 사양 RFC 7519 . 그들은 안전하게 대표합니다 주장 두 당사자 사이. 클레임은 모든 비즈니스 프로세스와 관련될 수 있지만 일반적으로 ID 및 해당 연결을 나타내는 데 사용됩니다. 예를 들어, JWT가 나타내는 ID를 가진 사용자는 관리자 역할 또는 그룹에 속합니다.

JWT에 대한 소개는 다음을 참조하세요. JWT(RFC 7519) .

JWT의 클레임은 JSON 개체로 인코딩되며 일반적으로 메시지 인증 코드(MAC)를 사용하여 디지털 서명됩니다. JWT를 사용하는 가장 일반적인 시나리오는 인증입니다. 사용자가 로그인하면 각 후속 요청에는 사용자가 해당 토큰에서 허용하는 서비스에 액세스할 수 있게 해주는 JWT가 포함됩니다.

어느 것을 보려면CICS® 액세스 방법은 JWT를 지원합니다. 참조 어떤 인증 방법과 어떤 접근 방법을 함께 사용할 수 있나요? .

왜 JWT를 사용하나요?

JWT를 사용하면 다음과 같은 이점이 있습니다.
  • 모바일 애플리케이션과 같은 클라이언트 애플리케이션에서 가볍고 사용하기 쉽습니다.
  • 이는 자체 포함되어 있으며, 이는 Liberty JVM 서버가 토큰을 직접 소비하고 요청 실행을 위한 ID로 토큰의 청구를 사용할 수 있음을 의미합니다.
  • HMAC 알고리즘을 사용하여 공유 비밀로 대칭적으로 서명하거나 개인 키를 사용하여 비대칭적으로 서명할 수 있습니다.
  • 기본 제공 만기 메커니즘이 있습니다.
  • 사용자 정의 청구를 포함하도록 확장될 수 있습니다.
  • 이는 다양한 Single Sign-On 솔루션과 다음과 같은 잘 알려진 표준에서 널리 채택됩니다. 작동 방식:OpenID 연결하다 .

JWT의 구조

그림 1 JWT가 헤더, 페이로드, 서명의 세 부분으로 구성되어 있음을 보여줍니다.
헤더
헤더는 일반적으로 토큰 유형(JWT)과 사용되는 알고리즘(예: HMAC)의 두 부분으로 구성됩니다.SHA256 또는 RSASHA256 . 그것은Base64Url JWT의 첫 번째 부분을 구성하기 위해 인코딩되었습니다.
페이로드
페이로드에는 클레임이 포함되어 있습니다. 예를 들어, 등록된 청구범위 세트가 있습니다.iss (발행자),exp (만료 시간),sub (주제) 및aud (청중). 이러한 클레임은 필수는 아니지만 유용하고 상호 운용 가능한 클레임 집합을 제공하는 것이 좋습니다. 페이로드에는 직원 역할과 같은 사용자 정의 클레임을 정의하는 추가 속성도 포함될 수 있습니다. 일반적으로 주체 청구가 OpenID Connect 사용자 주체를 작성하는 데 사용됩니다. 그러나 대체 청구를 사용하도록 Liberty JVM 서버를 구성할 수 있습니다. 페이로드는Base64Url JWT의 두 번째 부분을 형성하기 위해 인코딩되었습니다.
서명
서명 부분을 생성하기 위해 헤더의 서명 알고리즘을 사용하여 인코딩된 헤더와 인코딩된 페이로드에 서명합니다. 서명은 JWT 발급자가 누구인지 확인하고 도중에 메시지가 변경되지 않았는지 확인하는 데 사용됩니다.
그림 1. JWT의 구조
JWT의 구조
그림 2 일반적인 JWT 인증 흐름을 보여줍니다.
  1. 사용자는 자격 증명을 사용하여 로그인합니다.
  2. 사용자가 인증되면 JWT가 생성되어 사용자에게 반환됩니다.
  3. 사용자가 보호된 리소스에 액세스하려고 하면 클라이언트 애플리케이션은 일반적으로 HTTP Authorization 헤더에 JWT를 보냅니다.
  4. 그런 다음 JWT는 다음과 같은 애플리케이션 서버에서 사용됩니다.CICS , 사용자를 식별하고 리소스에 대한 액세스를 허용합니다.
그림 2. JWT 인증 흐름
JWT 인증 흐름

JWT 지원CICS 자유

JWT는 ID 전파에 사용될 수 있습니다.CICS 자유. 주체 클레임에 분산 ID가 포함된 경우 다음을 구성할 수 있습니다.CICS 분산 ID를RACF® 사용자 ID. 다양한 방법으로 Liberty JVM 서버를 사용하여 JWT 인증을 구성할 수 있으며 그 중 가장 일반적인 방법은 다음과 같습니다.
  • OpenID 연결 클라이언트(OIDC) 기능

    CICS 리버티는 지원합니다OpenID 연결하다1.0 . 당신은 사용할 수 있습니다openidConnectClient-1.0 JWT를 인증 토큰으로 허용하도록 Liberty JVM 서버를 구성하는 기능입니다. 자세한 내용은 다음을 참조하세요. 작동 방식:OpenID 연결하다 .

  • JWT 기능

    자유의 여신jwt-1.0 기능은 JWT 작업에 사용할 수 있는 API 세트를 제공합니다. 이 기능을 사용하여 JWT를 빌드하거나 사용할 수 있습니다.

  • 엔터프라이즈 자바™Security API

    엔터프라이즈 자바Security API 인증 메커니즘과 ID 저장소를 Enterprise Java 웹 애플리케이션에 구현할 수 있게 해주는 Enterprise Java 표준 서비스 공급자 API입니다. JWT를 사용하는 요청을 인증하는 사용자 정의 HTTP 인증 메커니즘을 개발할 수 있습니다.

  • JASPIC(Java Authentication Service Provider Interface for Containers)

    JASPIC은 Enterprise Java 웹 애플리케이션에 인증 메커니즘을 구현할 수 있는 Enterprise Java 표준 서비스 제공자 API입니다. JWT를 사용하는 요청을 인증하는 사용자 정의 JASPIC 인증 제공자를 개발할 수 있습니다.

  • TAI(Trust Association Interceptor)

    TAI(Trust Association Interceptor)는 다음과 같습니다.WebSphere® 타사 보안 서비스 통합을 가능하게 하는 독점 서비스 공급자 API입니다. 특정 보안 토큰(예: JWT)에 대한 HTTP 요청을 검사하고 유효성을 검사하는 TAI를 구현할 수 있습니다. 그만큼CICS 구현된 TAI를 사용하려면 Liberty 서버를 구성해야 합니다.

권장사항: 암호화되지 않은 JWT를 사용하는 경우 HTTPS를 사용하여 JWT가 포함된 요청을 전송하는 것이 좋습니다.

JWT 지원CICS

CICS 다음에 의해 생성된 JWT만 지원합니다.RACF . 이 기능을 사용하면 사용자의 기본 인증 자격 증명을 시간 제한이 있는 보안 세션 토큰으로 사용되는 JWT로 변환할 수 있습니다. 다음을 사용하여 후속 요청에서 이 보안 토큰의 유효성을 검사할 수 있습니다.CICS API 명령,VERIFY TOKEN . 이 지원은 자격 증명을 캐시하는 상태 비저장 요청에서 MFA 토큰 사용을 지원하기 위해 MFA 토큰을 JWT로 변환하는 데에도 사용될 수 있습니다. 암호, 패스프레이즈, MFA 토큰 및PassTickets 모두 지원되는 자격 증명입니다.

다음에 의해 생성된 JWT를 수락하기 위해 HTTPS 또는 SOAP 요청이 필요한 경우RACF , 사용자 정의 헤더를 작성해야 합니다.

다음 다이어그램은 후속 요청을 위해 기본 인증 자격 증명이 JWT로 변환되는 시나리오를 보여줍니다.user 는 사용자 ID이고pw 비밀번호입니다.

그림 3. 기본 인증 자격 증명을 JWT로 변환
이 다이어그램은 첫 번째 요청에 기본 인증 자격 증명이 사용되는 JWT의 사용 사례를 보여줍니다. 후속 요청에서는 기본 인증 자격 증명에서 변환된 JWT가 사용됩니다.