JWT 베어러 토큰 생성

JWT 전달자 플로우에서 사용되는 JWT 전달자 토큰을 작성하려면 이 주제의 정보를 사용하십시오.

JWT 전달자 페이로드 청구

JWT 전달자 페이로드에는 다음 청구가 포함되어야 합니다.
표 1. MUST의 주장
청구 이름 설명 유효값
iss JWT를 발행한 엔티티의 고유 ID JWT 발행자의 유효한 URI입니다.
sub 프린시펄 주제 ID 사용자의 고유 ID입니다.
aud 호출 중인 OIDC 엔드포인트 https://<tenantId>/oidc/endpoint/default/token
exp JWT 만료 시간 UTC로 측정된 1970-01-01T0:0:0Z부터의 시간(초)입니다.
참고: JWT의 만료 시간은 86,400초를 초과할 수 없습니다.
jti JWT ID 임의로 생성된 opaque 문자열입니다.
JWT 전달자 페이로드에는 다음 청구가 포함될 수 있습니다.
표 2. MAY의 주장
청구 이름 설명 유효값
nbf JWT 이전 시간이 아님 UTC로 측정된 1970-01-01T0:0:0Z부터의 시간(초)입니다.
iat JWT 작성 시간 UTC로 측정된 1970-01-01T0:0:0Z부터의 시간(초)입니다.
참고: JWT 만료 시간은 과거 86,400초를 초과할 수 없습니다.
범위 프린시펄 주제 범위 `sub`가 속한 ID 소스 범위입니다.

JWT 전달자 페이로드 예제

```
{
  "iss": "https://www.relyingparty.com",
  "sub": "user@idsource.com",
  "aud": "https://sometenant.ice.com/oidc/endpoint/default/token",
  "exp": 1324298520,
  "jti": "araiov8werli2awerlj"
}
```

지원되는 알고리즘

표 3. 지원되는 알고리즘
용도 지원되는 알고리즘
서명을 위한 JWS 'alg' 'RS256', 'RS384', 'RS512', 'HS256', 'HS384', 'HS512', 'PS256', 'PS384', 'PS512'
키 관리를 위한 JWE 'alg' 'RSA1_5', 'RSA-OAEP', 'RSA-OAEP-256', 'A128KW', 'A192KW', 'A256KW', 'A128GCMKW', 'A192GCMKW', 'A256GCMKW'
컨텐츠 암호화를 위한 JWE 'enc' 'A128GCM', 'A192GCM', 'A256GCM'
참고: JWT 베어러가 서명 및 암호화 모두 적용된 경우, 외부 JWT인 JWE 헤더는 콘텐츠 유형 헤더를 'JWT'로 설정하여 중첩된 JWT임을 명시해야 합니다. 예를 들어, 'cty':'JWT'입니다.
JWT 전달자는 서명되거나 암호화되거나 둘 다여야 합니다. JWT에 서명하는 데 사용되는 키가 jwks_uri에서 게시되어 있는지 확인하십시오. jwks_uri를 사용할 수 없으면 공용 인증서를 시스템에 추가하십시오. ‘인증서 관리’를 참조하십시오.

JWT 베어러가 암호화되어 있고 비대칭 알고리즘이 사용되는 경우, OpenID Connect Provider의 jwks 엔드포인트에 https://<tenantId>/v1.0/endpoint/default/jwks 게시된 공개 키를 사용할 수 있습니다. 서명되거나 또는 암호화된 JWT에 사용되는 키를 식별하기 위해 `kid` 헤더가 포함되어 있는지 확인하십시오.

요청 예제

JWT 전달자 토큰이 작성된 후 요청을 토큰 엔드포인트에 제출하여 JWT 전달자 토큰을 액세스 토큰과 교환할 수 있습니다.
```
curl -ki https://<tenantId>/v1.0/endpoint/default/token
 -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt
-bearer&client_secret=<secret>&client_id=<clientId>
&scope=openid+email&assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi..."
```