/
Al
/
TESamples
Обзор
Документация
Войти
/
Al
/
TESamples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
apps/spa/src/index.html
59 строк
2 KB
Al
Initial Commit
11 май 2026, 17:40
11 май 2026, 17:40
0a04577
Код
Авторство
О чём код?
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>TokenExchange Demo SPA — AI agent on-behalf-of</title> <link rel="stylesheet" href="/app.css"> </head> <body> <header> <h1>TokenExchange — AI agent on-behalf-of (demo)</h1> <div id="user-bar"></div> </header> <main> <section id="login-section" hidden> <h2>Войдите, чтобы поручить задачу агенту</h2> <p>Вход через Keycloak (Authorization Code + PKCE, FR-13.2).</p> <button id="btn-login">Войти как alice</button> </section> <section id="task-section" hidden> <h2>Поручение агенту</h2> <p>Нажмите «Подготовить consent» — увидите, что именно будет делегировано агенту.</p> <button id="btn-preview">Подготовить consent</button> <div id="consent-card" hidden> <h3>Consent — что вы делегируете агенту</h3> <table id="consent-table"></table> <button id="btn-confirm" class="primary">Подтвердить и поручить</button> <button id="btn-cancel">Отменить</button> </div> <div id="result-card" hidden> <h3>Результат: цепочка делегирования (FR-13.6)</h3> <pre id="result-claims"></pre> <h4>Downstream вызовы</h4> <pre id="result-chain"></pre> <button id="btn-revoke" class="danger">Отозвать у агента полномочия</button> </div> </section> <section id="revoked-section" hidden> <h2>Полномочия отозваны</h2> <p>Все backend-сервисы немедленно перестали принимать токены, выпущенные для вас (через Redis pub/sub, S5).</p> <button id="btn-relogin">Войти заново</button> </section> </main> <footer> <small> Phase 7 SPA — single-page vanilla JS, токены хранятся ТОЛЬКО на стороне BFF (FR-13.3/FR-13.4). nginx проксирует <code>/auth/*</code> и <code>/api/*</code> в BFF. </small> </footer> <script src="/app.js"></script> </body> </html>