publishedkey

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 27, 2026 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package publishedkey — ОДНО правило, по которому читатель токена службы выбирает ключ проверки из её публикуемого набора (задача PRO-Robotech/kaname#396).

Читателей три: читатель предъявленного на публичном слушателе (`presentedcred`), интроспекция для соседей (`handler/tokenintrospecthttp`) и опознание токена доступа церемонии (`ceremonyport`). Разбор каждый строит своими ограничениями — перечень алгоритмов, издатель, получатель, срок, — а ключ выбирают они одним правилом, и живёт оно здесь. До сведения правило было написано трижды, и копии уже разошлись: одна читала испорченный свой ключ набора как негодный токен. Держатель единственности — `TestPublishedKeyRuleHasOneHome` (`internal/check`).

Правило — в порядке ветвей

  1. форма `kid` — ДО поиска: у читателя предъявленного поиск — повод обновить снимок из хранилища, и негодная форма до него не доезжает;
  2. ключ по `kid` — поиском вызывающего: у него свой снимок и свои поводы его обновить;
  3. алгоритм заголовка равен закреплённому за найденным ключом: способ проверки выбирает КЛЮЧ, а заголовок только сверяется;
  4. параметры заголовка, помеченные обязательными к пониманию (`crit`, RFC 7515 §4.1.11), понятны — иначе отказ всего токена; непомеченные незнакомые игнорируются (правило платформы `tokenpolicy`);
  5. открытая половина ключа разбирается и её вид — из словаря платформы.

Исходов три — по ТИПУ

  • токен принят — подпись найденным ключом сошлась и прочие ограничения разбора вызывающего выполнены;
  • отказ — суждение о токене: чужая подпись, ключа нет, ветвь правила не выполнена, ограничение разбора не выполнено;
  • ErrUnavailable — опознать не удалось: поиск по набору не ответил либо СВОЙ ключ набора не разбирается. Это наша поломка, а не негодный вход, и смешать её с отказом значило бы учить оператора смотреть не туда.

Index

Constants

This section is empty.

Variables

View Source
var ErrUnavailable = errors.New("the published key set could not vouch for the token")

ErrUnavailable — опознать не удалось: набор не ответил либо свой ключ набора не разбирается. Не суждение о токене.

Functions

func Parse

func Parse(p *jwt.Parser, raw string, claims jwt.Claims, lookup Lookup) (*jwt.Token, error)

Parse разбирает raw парсером вызывающего, выбирая ключ проверки по правилу набора. Исходы — см. шапку пакета: (токен, nil) · отказ · ErrUnavailable.

Types

type Lookup

type Lookup func(kid string) (domain.PublishedKey, bool, error)

Lookup находит ключ набора по `kid`: (ключ, true, nil) — найден; (_, false, nil) — в наборе его нет, и это суждение; ошибка — спросить набор не удалось, и это третий исход.

func SetLookup

func SetLookup(keys []domain.PublishedKey) Lookup

SetLookup — поиск по уже прочитанному набору.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL