{
  "title": "에이전트를 위한 OpenID Connect (OIDC-A) 1.0 제안",
  "excerpt": "OAuth 2.0 생태계 내에서 LLM 기반 에이전트를 표현하고, 인증하며, 권한을 부여하기 위한 프레임워크를 제공하도록 OpenID Connect Core 1.0을 확장하는 기술 제안입니다.",
  "content_html": "<p><em>이 문서는 LLM 기반 에이전트의 신원을 표현하고 검증하기 위한 OpenID Connect의 표준 확장을 제안합니다. 검증, 증명, 위임 체인에 대한 상세한 프레임워크와 핵심 제안을 통합합니다.</em></p>\n\n<h2>초록</h2>\n\n<p>OpenID Connect for Agents (OIDC-A) 1.0은 OAuth 2.0 생태계 내에서 LLM 기반 에이전트를 표현하고, 인증하며, 권한을 부여하기 위한 프레임워크를 제공하는 OpenID Connect Core 1.0의 확장입니다. 이 명세는 에이전트 신원 확립, 에이전트 증명 검증, 위임 체인 표현, 에이전트 속성 기반의 세밀한 권한 부여를 가능하게 하는 표준 클레임, 엔드포인트 및 프로토콜을 정의합니다.</p>\n\n<h2>1. 소개</h2>\n\n<h3>1.1 근거</h3>\n\n<p>LLM 기반 에이전트가 디지털 생태계에서 점점 더 보편화됨에 따라, 이들의 신원을 표현하고 권한을 관리하기 위한 표준화된 방법에 대한 필요성이 증가하고 있습니다. 전통적인 OAuth 2.0 및 OpenID Connect 프로토콜은 주로 인간 사용자와 기존 애플리케이션을 위해 설계되었으며, 다음과 같은 자율 에이전트의 고유한 특성을 표현하는 데 필요한 구조가 부족합니다:</p>\n\n<ul>\n<li>다양한 수준의 자율성으로 사용자를 대신하여 행동</li>\n<li>위임 체인 내에서 작동</li>\n<li>기본 모델에 기반한 동적 기능 보유</li>\n<li>무결성과 출처에 대한 증명 요구</li>\n</ul>\n\n<p>이 명세는 에이전트 신원 및 권한 부여를 위한 포괄적인 프레임워크를 제공하도록 OpenID Connect를 확장하여 이러한 격차를 해결합니다.</p>\n\n<h3>1.2 용어</h3>\n\n<p>이 명세는 OAuth 2.0 [RFC6749], OpenID Connect Core 1.0에 정의된 용어와 다음의 추가 용어를 사용합니다:</p>\n\n<ul>\n<li><strong>Agent</strong>: 자연어 지시에 기반하여 자율적 또는 반자율적 행동이 가능한 LLM 기반 소프트웨어 엔티티.</li>\n<li><strong>Agent Provider</strong>: 에이전트를 생성, 훈련 및/또는 호스팅하는 책임이 있는 조직.</li>\n<li><strong>Agent Model</strong>: 에이전트를 구동하는 특정 LLM 모델 (예: GPT-4, Claude 3).</li>\n<li><strong>Agent Instance</strong>: 일반적으로 특정 작업이나 대화와 연관된 에이전트의 특정 실행 인스턴스.</li>\n<li><strong>Delegator</strong>: 에이전트가 자신을 대신하여 행동하도록 권한을 위임하는 엔티티 (일반적으로 인간 사용자).</li>\n<li><strong>Delegation Chain</strong>: 원래 사용자로부터 잠재적으로 여러 에이전트를 거치는 위임 단계의 순서.</li>\n<li><strong>Attestation</strong>: 에이전트의 무결성, 출처 및/또는 속성에 대한 암호화 증명.</li>\n<li><strong>Attestation Evidence</strong>: 증명에 사용되는 증거를 포함하는 데이터 구조.</li>\n<li><strong>Relying Party (RP)</strong>: 이 맥락에서 에이전트의 신원과 권한을 검증해야 하는 리소스 서버 또는 클라이언트 애플리케이션.</li>\n</ul>\n\n<h3>1.3 개요</h3>\n\n<p>OIDC-A는 다음을 통해 OpenID Connect를 확장합니다:</p>\n\n<ol>\n<li>에이전트 신원, 위임 및 기능을 표현하기 위한 새로운 표준 클레임 정의.</li>\n<li>에이전트 증명 증거를 위한 메커니즘 및 형식 지정.</li>\n<li>위임 체인을 표현하고 검증하기 위한 프로토콜 확립.</li>\n<li>에이전트 기능 및 증명 지원을 위한 발견 메커니즘 제공.</li>\n<li>에이전트 특정 사용 사례에 적합한 권한 부여 프레임워크 정의.</li>\n<li>증명 검증 및 기능 발견을 위한 엔드포인트 도입.</li>\n</ol>\n\n<h2>2. 에이전트 신원 클레임</h2>\n\n<h3>2.1 핵심 에이전트 신원 클레임</h3>\n\n<p>다음 클레임은 에이전트에게 또는 에이전트에 대해 발급된 ID 토큰에 반드시 또는 포함되어야 합니다:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>클레임</th>\n            <th>타입</th>\n            <th>설명</th>\n            <th>요구사항</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_type</code></td>\n            <td>string</td>\n            <td>에이전트의 유형/클래스 식별 (예: \"assistant\", \"retrieval\", \"coding\")</td>\n            <td>REQUIRED</td>\n        </tr>\n        <tr>\n            <td><code>agent_model</code></td>\n            <td>string</td>\n            <td>특정 모델 식별 (예: \"gpt-4\", \"claude-3-opus\", \"gemini-pro\")</td>\n            <td>REQUIRED</td>\n        </tr>\n        <tr>\n            <td><code>agent_version</code></td>\n            <td>string</td>\n            <td>에이전트 모델의 버전 식별자</td>\n            <td>RECOMMENDED</td>\n        </tr>\n        <tr>\n            <td><code>agent_provider</code></td>\n            <td>string</td>\n            <td>에이전트를 제공/호스팅하는 조직 (예: \"openai.com\", \"anthropic.com\")</td>\n            <td>REQUIRED</td>\n        </tr>\n        <tr>\n            <td><code>agent_instance_id</code></td>\n            <td>string</td>\n            <td>이 특정 에이전트 인스턴스의 고유 식별자</td>\n            <td>REQUIRED</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.2 위임 및 권한 클레임</h3>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>클레임</th>\n            <th>타입</th>\n            <th>설명</th>\n            <th>요구사항</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>delegator_sub</code></td>\n            <td>string</td>\n            <td>이 에이전트에게 가장 최근에 권한을 위임한 엔티티의 주체 식별자</td>\n            <td>REQUIRED</td>\n        </tr>\n        <tr>\n            <td><code>delegation_chain</code></td>\n            <td>array</td>\n            <td>위임 단계의 순서 배열 (섹션 2.4.2 참조)</td>\n            <td>OPTIONAL</td>\n        </tr>\n        <tr>\n            <td><code>delegation_purpose</code></td>\n            <td>string</td>\n            <td>권한이 위임된 목적/의도에 대한 설명</td>\n            <td>RECOMMENDED</td>\n        </tr>\n        <tr>\n            <td><code>delegation_constraints</code></td>\n            <td>object</td>\n            <td>위임자가 에이전트에 부과한 제약 조건</td>\n            <td>OPTIONAL</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.3 기능, 신뢰 및 증명 클레임</h3>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>클레임</th>\n            <th>타입</th>\n            <th>설명</th>\n            <th>요구사항</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_capabilities</code></td>\n            <td>array</td>\n            <td>에이전트가 수행할 수 있는 작업을 나타내는 기능 식별자 배열</td>\n            <td>RECOMMENDED</td>\n        </tr>\n        <tr>\n            <td><code>agent_trust_level</code></td>\n            <td>string</td>\n            <td>에이전트의 신뢰 분류 (예: \"verified\", \"experimental\")</td>\n            <td>OPTIONAL</td>\n        </tr>\n        <tr>\n            <td><code>agent_attestation</code></td>\n            <td>object</td>\n            <td>증명 증거 또는 참조 (섹션 2.4.4 참조)</td>\n            <td>RECOMMENDED</td>\n        </tr>\n        <tr>\n            <td><code>agent_context_id</code></td>\n            <td>string</td>\n            <td>대화/작업 컨텍스트의 식별자</td>\n            <td>RECOMMENDED</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>2.4 클레임 형식 및 검증</h3>\n\n<h4>2.4.1 <code>agent_type</code></h4>\n<p>정의된 에이전트 유형 집합의 문자열 값. 구현자는 해당되는 경우 다음 값 중 하나를 사용해야 합니다:</p>\n<ul>\n<li><code>assistant</code>: 범용 어시스턴트 에이전트</li>\n<li><code>retrieval</code>: 정보 검색 전문 에이전트</li>\n<li><code>coding</code>: 코드 생성 또는 분석 전문 에이전트</li>\n<li><code>domain_specific</code>: 특정 도메인 전문 에이전트</li>\n<li><code>autonomous</code>: 높은 수준의 자율성을 가진 에이전트</li>\n<li><code>supervised</code>: 주요 작업에 대해 인간 감독이 필요한 에이전트</li>\n</ul>\n\n<p>사용자 정의 유형을 사용할 수 있지만 <code>vendor:type</code> 형식을 따라야 합니다 (예: <code>acme:financial_advisor</code>).</p>\n\n<h4>2.4.2 <code>delegation_chain</code></h4>\n<p>원래 사용자로부터 현재 에이전트까지 위임 체인의 각 단계를 나타내는 객체를 포함하는 JSON 배열. 각 객체는 다음을 포함해야 합니다:</p>\n<ul>\n<li><code>iss</code>: REQUIRED. 이 위임 단계를 발급/검증한 인증 서버 또는 엔티티를 식별하는 문자열.</li>\n<li><code>sub</code>: REQUIRED. 위임자(권한을 부여하는 엔티티)를 식별하는 문자열.</li>\n<li><code>aud</code>: REQUIRED. 피위임자(권한을 받는 에이전트)를 식별하는 문자열.</li>\n<li><code>delegated_at</code>: REQUIRED. 위임이 발생한 시간을 나타내는 NumericDate.</li>\n<li><code>scope</code>: REQUIRED. 이 위임 단계에서 부여된 권한을 나타내는 공백으로 구분된 OAuth 스코프 문자열. 위임자(<code>sub</code>)가 보유한 스코프의 하위 집합이어야 합니다.</li>\n<li><code>purpose</code>: OPTIONAL. 이 위임 단계의 의도된 목적을 설명하는 문자열.</li>\n<li><code>constraints</code>: OPTIONAL. 위임에 대한 제약 조건을 지정하는 JSON 객체 (예: <code>{\"max_duration\": 3600, \"allowed_resources\": [\"/data/abc\"]}</code>).</li>\n<li><code>jti</code>: OPTIONAL. 이 특정 위임 단계의 고유 식별자로, 취소 또는 추적에 유용합니다.</li>\n</ul>\n\n<p>배열은 시간순으로 정렬되어야 합니다.</p>\n\n<p><em><code>delegation_chain</code>에 대한 검증 규칙 (Relying Party가 수행):</em></p>\n<ol>\n<li><strong>순서 검증:</strong> <code>delegated_at</code>을 기반으로 시간순 순서 확인.</li>\n<li><strong>발급자 신뢰:</strong> 각 <code>iss</code>가 신뢰할 수 있는지 확인.</li>\n<li><strong>대상 일치:</strong> N 단계의 <code>aud</code>가 N+1 단계의 <code>sub</code>와 일치하는지 확인.</li>\n<li><strong>스코프 축소:</strong> 각 단계의 <code>scope</code>가 위임자의 사용 가능한 스코프의 하위 집합/동일한지 확인.</li>\n<li><strong>제약 조건 시행:</strong> 모든 <code>constraints</code> 준수 확인.</li>\n<li><strong>서명 검증 (해당되는 경우):</strong> 단계가 개별적으로 서명된 경우 서명 검증.</li>\n<li><strong>정책 확인:</strong> 검증된 체인을 권한 부여 정책에 대해 평가 (예: 최대 길이).</li>\n</ol>\n\n<h4>2.4.3 <code>agent_capabilities</code></h4>\n<p>에이전트의 기능을 나타내는 문자열 식별자 배열. 구현자는 사용 가능한 경우 잘 정의된 분류법의 기능 식별자를 사용해야 합니다. 사용자 정의 기능은 <code>vendor:capability</code> 형식을 따라야 합니다 (예: <code>acme:financial_analysis</code>).</p>\n\n<h4>2.4.4 <code>agent_attestation</code></h4>\n<p>증명 증거 또는 이에 대한 참조를 포함하는 JSON 객체. 증거 유형을 나타내는 <code>format</code> 필드를 포함해야 합니다.</p>\n\n<p><em>권장 형식:</em> JWT 기반, IETF RATS Entity Attestation Token (EAT)과 호환 가능.</p>\n\n<p>예시:</p>\n<pre><code class=\"language-json\">\"agent_attestation\": {\n  \"format\": \"urn:ietf:params:oauth:token-type:eat\",\n  \"token\": \"eyJhbGciOiJFUzI1NiIsInR5cCI6ImVhdCtqd3QifQ...\"\n}\n</code></pre>\n<p>다른 형식 (예: <code>\"format\": \"TPM2-Quote\"</code>, <code>\"format\": \"SGX-Quote\"</code>)을 사용할 수 있습니다.</p>\n\n<h2>3. 프로토콜 흐름</h2>\n\n<h3>3.1 에이전트 인증 흐름</h3>\n\n<p>OIDC-A 인증 흐름은 표준 OpenID Connect 인증 흐름을 확장합니다:</p>\n\n<ol>\n<li><strong>클라이언트 등록</strong>: 에이전트를 나타내는 클라이언트는 추가 메타데이터를 등록해야 합니다 (섹션 4 참조).</li>\n<li><strong>인증 요청</strong>: 에이전트는 <code>agent</code> 스코프와 잠재적으로 <code>delegation_context</code>를 포함해야 합니다.</li>\n<li><strong>인증 응답</strong>: 인증 서버는 ID 토큰에 에이전트 특정 클레임을 포함합니다.</li>\n<li><strong>토큰 검증</strong>: RP는 표준 OIDC 클레임과 정책에 따라 관련 에이전트 특정 클레임(증명 및 위임 포함)을 검증해야 합니다.</li>\n</ol>\n\n<h3>3.2 위임 흐름</h3>\n\n<p>에이전트에게 권한이 위임될 때:</p>\n\n<ol>\n<li>위임자가 인증하고 위임을 승인합니다.</li>\n<li>인증 서버는 <code>delegator_sub</code>, <code>delegation_chain</code>(업데이트됨), <code>delegation_purpose</code> 및 제한된 <code>scope</code>를 포함하는 새 ID 토큰을 에이전트에게 발급합니다.</li>\n</ol>\n\n<h3>3.3 증명 검증 흐름</h3>\n\n<p>에이전트의 증명을 검증하려면:</p>\n\n<ol>\n<li>에이전트는 ID 토큰에 <code>agent_attestation</code> 클레임을 포함하거나 증거를 별도로 제공합니다.</li>\n<li>RP는 지정된 <code>format</code>을 기반으로 증거를 검증합니다:\n<ul>\n<li>신뢰할 수 있는 키(Discovery를 통해 획득)를 사용하여 암호화 서명 검증.</li>\n<li>플랫폼 측정값을 알려진 양호한 값과 비교.</li>\n<li>재생 공격을 방지하기 위해 nonce 검증.</li>\n<li>선택적으로 검증 지원을 위해 <code>agent_attestation_endpoint</code> 사용.</li>\n</ul>\n</li>\n<li>권한 부여 결정은 증명 상태를 통합합니다 (예: <code>verified: true/false</code>).</li>\n</ol>\n\n<h2>4. 클라이언트 등록 및 발견</h2>\n\n<h3>4.1 에이전트 클라이언트 등록 메타데이터</h3>\n\n<p>OAuth 2.0 Dynamic Client Registration [RFC7591]을 확장합니다:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>매개변수</th>\n            <th>타입</th>\n            <th>설명</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_provider</code></td>\n            <td>string</td>\n            <td>에이전트 제공자의 식별자</td>\n        </tr>\n        <tr>\n            <td><code>agent_models_supported</code></td>\n            <td>array</td>\n            <td>지원되는 에이전트 모델 목록</td>\n        </tr>\n        <tr>\n            <td><code>agent_capabilities</code></td>\n            <td>array</td>\n            <td>에이전트 기능 목록</td>\n        </tr>\n        <tr>\n            <td><code>attestation_formats_supported</code></td>\n            <td>array</td>\n            <td>지원되는 증명 형식 목록</td>\n        </tr>\n        <tr>\n            <td><code>delegation_methods_supported</code></td>\n            <td>array</td>\n            <td>지원되는 위임 방법 목록</td>\n        </tr>\n    </tbody>\n</table>\n\n<h3>4.2 발견 메타데이터</h3>\n\n<p>OpenID Connect Discovery 1.0을 확장합니다:</p>\n\n<table class=\"custom-table\">\n    <thead>\n        <tr>\n            <th>매개변수</th>\n            <th>타입</th>\n            <th>설명</th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr>\n            <td><code>agent_attestation_endpoint</code></td>\n            <td>string</td>\n            <td>증명 엔드포인트의 URL</td>\n        </tr>\n        <tr>\n            <td><code>agent_capabilities_endpoint</code></td>\n            <td>string</td>\n            <td>기능 발견 엔드포인트의 URL</td>\n        </tr>\n        <tr>\n            <td><code>agent_claims_supported</code></td>\n            <td>array</td>\n            <td>지원되는 에이전트 클레임 목록</td>\n        </tr>\n        <tr>\n            <td><code>agent_types_supported</code></td>\n            <td>array</td>\n            <td>지원되는 에이전트 유형 목록</td>\n        </tr>\n        <tr>\n            <td><code>delegation_methods_supported</code></td>\n            <td>array</td>\n            <td>지원되는 위임 방법 목록</td>\n        </tr>\n        <tr>\n            <td><code>attestation_formats_supported</code></td>\n            <td>array</td>\n            <td>지원되는 증명 형식 목록</td>\n        </tr>\n        <tr>\n            <td><code>attestation_verification_keys_endpoint</code></td>\n            <td>string</td>\n            <td>증명 서명 검증을 위한 공개 키를 검색하는 URL</td>\n        </tr>\n    </tbody>\n</table>\n\n<h2>5. 엔드포인트</h2>\n\n<h3>5.1 에이전트 증명 엔드포인트</h3>\n\n<p>에이전트에 대한 증명 정보를 반환하거나 제공된 증거의 검증을 지원하는 OAuth 2.0 보호 리소스. URL은 <code>agent_attestation_endpoint</code> 발견 매개변수를 통해 광고됩니다.</p>\n\n<h4>5.1.1 요청 예시 (정보 가져오기)</h4>\n\n<pre><code>GET /agent/attestation?agent_id=123&amp;nonce=abc\nAuthorization: Bearer &lt;token&gt;\n</code></pre>\n\n<h4>5.1.2 응답 예시</h4>\n\n<pre><code class=\"language-json\">{\n  \"verified\": true,\n  \"provider\": \"openai.com\",\n  \"model\": \"gpt-4\",\n  \"version\": \"2025-03\",\n  \"attestation_timestamp\": 1714348800,\n  \"attestation_signature\": \"...\"\n}\n</code></pre>\n\n<h3>5.2 에이전트 기능 엔드포인트</h3>\n\n<p>에이전트의 기능에 대한 정보를 제공합니다. URL은 <code>agent_capabilities_endpoint</code> 발견 매개변수를 통해 광고됩니다.</p>\n\n<h4>5.2.1 요청 예시</h4>\n\n<pre><code>GET /.well-known/agent-capabilities\n</code></pre>\n\n<h4>5.2.2 응답 예시</h4>\n\n<pre><code class=\"language-json\">{\n  \"capabilities\": [\n    {\"id\": \"text_generation\", \"description\": \"...\"},\n    {\"id\": \"code_generation\", \"description\": \"...\"}\n  ],\n  \"supported_constraints\": [\"max_tokens\", \"allowed_tools\"]\n}\n</code></pre>\n\n<h2>6. 보안 고려사항</h2>\n\n<h3>6.1 에이전트 인증</h3>\n\n<p>에이전트는 증명과 결합된 강력한 비대칭 방법(JWT Client Auth [RFC7523], mTLS [RFC8705])을 사용해야 합니다. 공유 비밀은 권장되지 않습니다.</p>\n\n<h3>6.2 위임 보안</h3>\n\n<p>시스템은 전체 위임 체인을 검증하고, 스코프 축소를 시행하며, 동의 메커니즘을 구현하고, 시간 제한을 고려해야 합니다. 정책은 체인 길이를 제한할 수 있습니다. 강력한 취소 메커니즘이 필요합니다.</p>\n\n<h3>6.3 증명 보안</h3>\n\n<p>서명 키의 안전한 관리, 강력한 nonce 처리, 신뢰할 수 있는 알려진 양호한 측정값, 안전한 엔드포인트, 재생 공격에 대한 보호가 필요합니다. 증명 증거는 개인정보 보호에 영향을 미칠 수 있습니다.</p>\n\n<h3>6.4 토큰 보안</h3>\n\n<p>에이전트 클레임이 있는 ID 토큰은 암호화되어야 합니다. 액세스 토큰은 제한된 수명을 가져야 합니다. 에이전트를 위한 리프레시 토큰은 신중한 고려가 필요합니다.</p>\n\n<h2>7. 개인정보 보호 고려사항</h2>\n\n<p>구현은 에이전트 신원의 잠재적 상관관계, 위임 체인의 개인정보 보호 영향, 사용자 동의 요구사항, 클레임의 데이터 최소화를 고려해야 합니다.</p>\n\n<h2>8. 호환성 및 버전 관리</h2>\n\n<p>OIDC-A 1.0은 OAuth 2.0 [RFC6749], OIDC Core 1.0, JWT [RFC7519] 및 관련 RFC와의 호환성을 위해 설계되었습니다. 향후 버전은 하위 호환성을 목표로 합니다.</p>\n\n<h2>9. 참고문헌</h2>\n\n<ul>\n<li>[RFC6749] The OAuth 2.0 Authorization Framework</li>\n<li>[RFC7519] JSON Web Token (JWT)</li>\n<li>[RFC7523] JWT Profile for OAuth 2.0 Client Authentication</li>\n<li>[RFC7591] OAuth 2.0 Dynamic Client Registration</li>\n<li>[RFC7662] OAuth 2.0 Token Introspection</li>\n<li>[RFC8705] OAuth 2.0 Mutual-TLS Client Authentication</li>\n<li>[OpenID Connect Core 1.0]</li>\n<li>[OpenID Connect Discovery 1.0]</li>\n<li>[IETF RATS] Remote Attestation Procedures Architecture</li>\n</ul>\n\n<h2>부록 A: 에이전트 클레임이 포함된 ID 토큰 예시</h2>\n\n<pre><code class=\"language-json\">{\n  \"iss\": \"https://auth.example.com\",\n  \"sub\": \"agent_instance_789\",\n  \"aud\": \"client_123\",\n  \"exp\": 1714435200,\n  \"iat\": 1714348800,\n  \"auth_time\": 1714348800,\n  \"nonce\": \"n-0S6_WzA2Mj\",\n  \"agent_type\": \"assistant\",\n  \"agent_model\": \"gpt-4\",\n  \"agent_version\": \"2025-03\",\n  \"agent_provider\": \"openai.com\",\n  \"agent_instance_id\": \"agent_instance_789\",\n  \"delegator_sub\": \"user_456\",\n  \"delegation_purpose\": \"Email management assistant\",\n  \"agent_capabilities\": [\"email:read\", \"email:draft\", \"calendar:view\"],\n  \"agent_trust_level\": \"verified\",\n  \"agent_context_id\": \"conversation_123\",\n  \"agent_attestation\": {\n    \"format\": \"urn:ietf:params:oauth:token-type:eat\",\n    \"token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"timestamp\": 1714348800\n  },\n  \"delegation_chain\": [\n    {\n      \"iss\": \"https://auth.example.com\",\n      \"sub\": \"user_456\",\n      \"aud\": \"agent_instance_789\",\n      \"delegated_at\": 1714348700,\n      \"scope\": \"email profile calendar\"\n    }\n  ]\n}\n</code></pre>\n\n<h2>부록 B: 위임 체인 예시 (다단계)</h2>\n\n<pre><code class=\"language-json\">\"delegation_chain\": [\n  {\n    \"iss\": \"https://auth.example.com\",\n    \"sub\": \"user_456\",\n    \"aud\": \"agent_instance_789\",\n    \"delegated_at\": 1714348800,\n    \"scope\": \"email calendar\",\n    \"purpose\": \"Manage my emails and calendar\"\n  },\n  {\n    \"iss\": \"https://auth.example.com\",\n    \"sub\": \"agent_instance_789\",\n    \"aud\": \"agent_instance_101\",\n    \"delegated_at\": 1714348830,\n    \"scope\": \"calendar:view\",\n    \"purpose\": \"Analyze available time slots\"\n  }\n]\n</code></pre>\n\n<style>\n.custom-table {\n    width: 100%;\n    border-collapse: collapse;\n    margin-bottom: 1em;\n}\n\n.custom-table th, .custom-table td {\n    border: 1px solid #ddd;\n    padding: 8px;\n    text-align: left;\n}\n\n.custom-table th {\n    background-color: #f2f2f2;\n    font-weight: bold;\n    text-align: center;\n}\n\n.custom-table tr:nth-child(even){background-color: #f9f9f9;}\n\n.custom-table tr:hover {background-color: #ddd;}\n\n.custom-table td {\n    color: #333;\n    vertical-align: top;\n}\n\n.custom-table td:nth-child(2) {\n    text-align: center;\n}\n.custom-table td:nth-child(4) {\n    text-align: center;\n}\n\n.custom-table code {\n    background-color: #eef;\n    padding: 0.2em 0.4em;\n    border-radius: 3px;\n    font-size: 90%;\n}\n</style>",
  "source_hash": "sha256:73ea6cb5f87d953b8052cd05e0a127fa1a9cf036913230dc7e62c81ec066af98",
  "model": "claude-sonnet-4-5-20250929",
  "generated_at": "2026-01-02T02:00:15.295630+00:00"
}