@inso_web/els-mcp
Version:
MCP-сервер поверх INSO Error Logs Service. Read-only tools (search, analytics, fingerprinting, correlations) для подключения Claude Desktop/Code и ChatGPT к логам ошибок. Streamable HTTP transport + stdio для npx-запуска.
34 lines • 1.48 kB
JavaScript
import { createRemoteJWKSet, jwtVerify } from 'jose';
/**
* JWKS resolver через `jose.createRemoteJWKSet`.
*
* `createRemoteJWKSet` сам кеширует ключи (`cacheMaxAge`) и реализует cooldown
* между retry'ами при cache-miss (`cooldownDuration`). Мы используем:
* - cacheMaxAge: 10 минут — TTL ключа в кеше
* - cooldownDuration: 10 секунд — минимальный интервал между miss-fetch'ами
* - timeoutDuration: 5 секунд — HTTP timeout на fetch JWKS
*
* Для dev: переменная `MCP_OIDC_JWKS_URL` уже подхватывается через config —
* можно указать локальный auth URL (`http://localhost:4002/oidc/.well-known/jwks.json`).
*/
const CACHE_MAX_AGE_MS = 10 * 60 * 1000;
const COOLDOWN_MS = 10 * 1000;
const TIMEOUT_MS = 5 * 1000;
export function createJwksResolver(config) {
const jwks = createRemoteJWKSet(new URL(config.oidcJwksUrl), {
cacheMaxAge: CACHE_MAX_AGE_MS,
cooldownDuration: COOLDOWN_MS,
timeoutDuration: TIMEOUT_MS,
});
return {
async verify(token) {
const { payload } = await jwtVerify(token, jwks, {
issuer: config.oidcIssuer,
audience: config.oidcAudience,
algorithms: ['RS256'],
});
return payload;
},
};
}
//# sourceMappingURL=jwks.js.map