Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
이 문서는 Linked Web Storage (LWS) 프로토콜을 위한 인증 스위트를 정의하여, 자체 신원 토큰에 서명할 수 있는 클라이언트가 LWS와 통합할 수 있도록 합니다.
이 절은 이 문서가 공개된 시점의 상태를 설명합니다. 현재 W3C 간행물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 찾을 수 있습니다.
이는 비공식 제안입니다.
이 문서는 Linked Web Storage 워킹 그룹이 권고안 트랙을 사용하여 작업 초안으로 공개했습니다.
작업 초안으로 공개되었다고 해서 W3C와 그 회원들의 승인을 의미하지는 않습니다.
이는 초안 문서이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업이 아닌 것으로 인용하는 것은 적절하지 않습니다.
이 문서는 W3C 특허 정책에 따라 운영되는 그룹에 의해 작성되었습니다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지합니다. 그 페이지에는 특허 공개를 위한 지침도 포함되어 있습니다. 개인이 자신이 실제로 알고 있는 특허가 필수 청구항을 포함한다고 믿는 경우, 그 개인은 W3C 특허 정책 6절에 따라 해당 정보를 공개해야 합니다.
이 문서는 2025년 8월 18일 W3C 프로세스 문서의 적용을 받습니다.
자체 발행 신원은 애플리케이션이 스스로를 대신하여 동작하는 경우에 중요합니다. 여기에는 자율 봇뿐 아니라 서버 측 스크립트 등이 포함됩니다. 이러한 경우 에이전트는 키 쌍의 개인 부분을 안전하게 관리할 수 있으며, 이를 사용하여 서명된 JSON Web Token (JWT)을 생성합니다. 이 명세는 이러한 유형의 에이전트가 Linked Web Storage와 함께 사용할 수 있는 인증 자격 증명을 생성하는 방법을 설명합니다.
비규범으로 표시된 절뿐 아니라, 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고는 비규범입니다. 이 명세의 그 밖의 모든 내용은 규범입니다.
이 문서에서 핵심 단어 MAY, MUST, 및 MUST NOT은 여기에 표시된 것처럼 모두 대문자로 나타나는 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 합니다.
"authorization server"와 "client"라는 용어는 The OAuth 2.0 Authorization Framework [RFC6749]에서 정의됩니다.
"controlled identifier document"와 "verification method"라는 용어는 W3C Controlled Identifiers 1.0 [CID-1.0]에서 정의됩니다.
"JSON Web Token (JWT)"와 "claim"이라는 용어는 JSON Web Token [RFC7519]에서 정의됩니다.
"agent", "authentication credential", 및 "authentication suite"라는 용어는 Linked Web Storage Protocol [LWS10-CORE]에서 정의됩니다.
자체 발행 인증 자격 증명은 서명된 JSON Web Token (JWT)으로 직렬화됩니다. JWT를 LWS 인증 자격 증명으로 사용하려면, 다음 추가 요구사항이 적용됩니다.
JWT는 서명 알고리즘으로 "none"을 사용해서는 MUST NOT 됩니다.
JWT는 LWS 주체 식별자에 sub (subject) 클레임을 사용해야 MUST 합니다.
JWT는 LWS 발급자 식별자에 iss (issuer) 클레임을 사용해야 MUST 합니다.
JWT는 LWS 클라이언트 식별자에 client_id (client ID) 클레임을 사용해야 MUST 합니다.
sub, iss, 및 client_id 클레임은 모두
동일한 URI 값을 사용해야 MUST 합니다.
ID Token의 모든 대상 제한은 aud (audience)
클레임을 사용해야 MUST 합니다. aud 클레임은 대상 권한 부여 서버를
포함해야 MUST 합니다.
JWT는 토큰이 만료되는 시간을 나타내는 exp (expiration) 클레임을
포함해야 MUST 합니다.
JWT는 토큰이 발급된 시간을 나타내는 iat (issued at) 클레임을 포함해야
MUST 합니다.
LWS 인증 자격 증명이기도 한 예제 JWT가 아래에 포함되어 있습니다.
{
"kid": "c1f52577",
"kty": "EC",
"alg": "ES256",
"typ": "JWT",
"crv": "P-256"
}
.
{
"sub": "https://id.example/agent",
"iss": "https://id.example/agent",
"client_id": "https://id.example/agent",
"aud": ["https://as.example"],
"iat": 1761313600,
"exp": 1761313900
}
.
signature
JWT를 LWS 인증 자격 증명으로 검증하려면, 검증자와 발급 당사자 사이에 신뢰 관계가 있어야 합니다.
기존 신뢰 관계가 없는 경우, 검증자는 인증 자격 증명의
sub (subject) 클레임을 역참조해야 MUST 합니다.
그 결과 리소스는 주체 식별자와 동일한 id 값을 가진 유효한 controlled identifier document
[CID-1.0]로 형식화되어야
MUST 합니다.
검증자는 "none"과 같은 alg 헤더 매개변수를 사용하는 모든 토큰을
거부해야 MUST 합니다.
검증자는 인증 자격 증명 데이터 모델에서 설명한 모든 클레임을 검증해야 MUST 합니다.
검증자는 서명된 JWT 헤더의 kid (key id) 값을 사용하여 주체의 controlled identifier document에서
verification method를 식별해야 MUST 합니다.
이 과정은 [CID-1.0] 3.3절에 설명되어 있습니다.
controlled identifier document에서 선택한 verification method를 사용하여, JWT의 서명은 [RFC7515]
5.2절에 설명된 대로
검증되어야 MUST 합니다.
검증자는 현재 시간이 exp 클레임이 나타내는 시간보다 이전인지 확인해야
MUST 합니다. 구현자는 시계 오차를 고려하기 위해 약간의 여유를 제공할 수
MAY 있습니다.
예제 Controlled Identifier Document가 아래에 포함되어 있습니다.
{
"@context": [
"https://www.w3.org/ns/cid/v1" ],
"id": "https://id.example/agent",
"authentication": [{
"id": "https://id.example/agent#c1f52577",
"type": "JsonWebKey",
"controller": "https://id.example/agent",
"publicKeyJwk": {
"kid": "c1f52577",
"kty": "EC",
"crv": "P-256",
"alg": "ES256",
"x": "f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
"y": "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0"
}
}]
}
인증 자격
증명으로 사용되는
자체 발행 JSON Web Token은 권한 부여 서버와 상호작용할 때 urn:ietf:params:oauth:token-type:jwt URI를
사용해야 MUST 합니다.
이 절은 비규범입니다.
"Best Current Practice for OAuth 2.0 Security" [RFC9700] 및 "OpenID Connect Core 1.0" 16절 [OPENID-CONNECT-CORE]에서 설명한 모든 보안 고려사항이 이 명세에 적용됩니다.
이 절은 비규범입니다.
이 절은 완성되어야 합니다.