LWS 1.0 인증 스위트: 제어 식별자를 사용하는 자체 서명 신원

W3C 작업 초안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/WD-lws10-authn-ssi-cid-20260609/
최신 발행 버전:
https://www.w3.org/TR/lws10-authn-ssi-cid/
최신 편집자 초안:
https://w3c.github.io/lws-protocol/lws10-authn-ssi-cid/
이력:
https://www.w3.org/standards/history/lws10-authn-ssi-cid/
커밋 이력
편집자:
Jesse Wright (옥스퍼드 대학교)
저자:
Aaron Coburn (Inrupt Inc.)
피드백:
GitHub w3c/lws-protocol (풀 리퀘스트, 새 이슈, 열린 이슈)

초록

이 문서는 Linked Web Storage (LWS) 프로토콜을 위한 인증 스위트를 정의하여, 자체 신원 토큰에 서명할 수 있는 클라이언트가 LWS와 통합할 수 있도록 합니다.

이 문서의 상태

이 절은 이 문서가 공개된 시점의 상태를 설명합니다. 현재 W3C 간행물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 찾을 수 있습니다.

이는 비공식 제안입니다.

이 문서는 Linked Web Storage 워킹 그룹권고안 트랙을 사용하여 작업 초안으로 공개했습니다.

작업 초안으로 공개되었다고 해서 W3C와 그 회원들의 승인을 의미하지는 않습니다.

이는 초안 문서이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업이 아닌 것으로 인용하는 것은 적절하지 않습니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에 의해 작성되었습니다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지합니다. 그 페이지에는 특허 공개를 위한 지침도 포함되어 있습니다. 개인이 자신이 실제로 알고 있는 특허가 필수 청구항을 포함한다고 믿는 경우, 그 개인은 W3C 특허 정책 6절에 따라 해당 정보를 공개해야 합니다.

이 문서는 2025년 8월 18일 W3C 프로세스 문서의 적용을 받습니다.

1. 소개

자체 발행 신원은 애플리케이션이 스스로를 대신하여 동작하는 경우에 중요합니다. 여기에는 자율 봇뿐 아니라 서버 측 스크립트 등이 포함됩니다. 이러한 경우 에이전트는 키 쌍의 개인 부분을 안전하게 관리할 수 있으며, 이를 사용하여 서명된 JSON Web Token (JWT)을 생성합니다. 이 명세는 이러한 유형의 에이전트가 Linked Web Storage와 함께 사용할 수 있는 인증 자격 증명을 생성하는 방법을 설명합니다.

2. 준수

비규범으로 표시된 절뿐 아니라, 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고는 비규범입니다. 이 명세의 그 밖의 모든 내용은 규범입니다.

이 문서에서 핵심 단어 MAY, MUST, 및 MUST NOT은 여기에 표시된 것처럼 모두 대문자로 나타나는 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 합니다.

3. 용어

"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]에서 정의됩니다.

4. 인증 자격 증명 직렬화

자체 발행 인증 자격 증명은 서명된 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

5. 인증 자격 증명 검증

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"
        }
    }]
}

6. 토큰 유형 식별자

인증 자격 증명으로 사용되는 자체 발행 JSON Web Token은 권한 부여 서버와 상호작용할 때 urn:ietf:params:oauth:token-type:jwt URI를 사용해야 MUST 합니다.

7. 보안 고려사항

이 절은 비규범입니다.

"Best Current Practice for OAuth 2.0 Security" [RFC9700] 및 "OpenID Connect Core 1.0" 16절 [OPENID-CONNECT-CORE]에서 설명한 모든 보안 고려사항이 이 명세에 적용됩니다.

8. 프라이버시 고려사항

이 절은 비규범입니다.

이슈 119: 인증 스위트에 프라이버시 고려사항 절 추가

이 절은 완성되어야 합니다.

A. 참고문헌

A.1 규범 참고문헌

[CID-1.0]
Controlled Identifiers v1.0. Michael Jones; Manu Sporny. W3C. 2025년 5월 15일. W3C 권고안. URL: https://www.w3.org/TR/cid-1.0/
[LWS10-CORE]
Linked Web Storage Protocol 1.0. W3C. FPWD. URL: https://www.w3.org/TR/lws10-core/
[RFC2119]
RFC에서 요구 수준을 나타내기 위해 사용하는 핵심 단어. S. Bradner. IETF. 1997년 3월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC6749]
The OAuth 2.0 Authorization Framework. D. Hardt, Ed. IETF. 2012년 10월. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6749
[RFC7515]
JSON Web Signature (JWS). M. Jones; J. Bradley; N. Sakimura. IETF. 2015년 5월. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7515
[RFC7519]
JSON Web Token (JWT). M. Jones; J. Bradley; N. Sakimura. IETF. 2015년 5월. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc7519
[RFC8174]
RFC 2119 핵심 단어에서 대문자와 소문자의 모호성. B. Leiba. IETF. 2017년 5월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174

A.2 정보 참고문헌

[OPENID-CONNECT-CORE]
OpenID Connect Core 1.0 incorporating errata set 2. N. Sakimura; J. Bradley; M. Jones; B. de Medeiros; C. Mortimore. OpenID Foundation. 2023년 12월 15일. Final. URL: https://openid.net/specs/openid-connect-core-1_0.html
[RFC9700]
OAuth 2.0 보안에 대한 최신 모범 사례. T. Lodderstedt; J. Bradley; A. Labunets; D. Fett. IETF. 2025년 1월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc9700