tokenrevocation

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2026 License: AGPL-3.0 Imports: 3 Imported by: 0

Documentation

Overview

Package tokenrevocation — ПРАВИЛО отзыва наших токенов, объявленное один раз.

Почему правило вынесено, а не повторено

Отзыв читают ДВЕ поверхности: авторитет отзыва, отвечающий на вопрос соседа, и читатель предъявленного на публичном слушателе. Правило у них одно, и оно нетривиально: ключей отсечки несколько, действует отзыв ВПЕРЁД, а токен без отметки выпуска не сопоставим ни с какой отсечкой.

Вторая копия разошлась бы молча и разошлась бы там, где расхождение не видно: имя, заведённое в составе утверждений и забытое в одной из копий, даёт клиента, чей отзыв доезжает до одной поверхности и не доезжает до другой, — при том что обе зелены на своих пробах, потому что их фикстуры чеканят состав сами.

Исходов ТРИ, а не два

Отозван · не отозван · СПРОСИТЬ НЕ СМОГЛИ. Третий возвращается ошибкой и никогда не сливается со вторым: смешать их значило бы сделать сбой хранилища неотличимым от отсутствия отзыва, то есть завести мягкий проход при отказе зависимости.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Keys

func Keys(claims jwt.MapClaims) []string

Keys возвращает ВСЕ ключи отсечки для состава утверждений: субъект и каждое имя закрытого перечня, которое в составе присутствует непустым.

func Revoked

func Revoked(ctx context.Context, r Reader, claims jwt.MapClaims) (bool, error)

Revoked отвечает, отозван ли токен с этим составом утверждений.

Возвращаемая ошибка — ТРЕТИЙ исход, «спросить не смогли»: вызывающий обязан закрыться сам, а не читать её как «не отозван».

Токен БЕЗ отметки выпуска считается отозванным. Он не сопоставим ни с какой отсечкой — ни с уже стоящей, ни с будущей, — поэтому принять его значило бы завести материал, который отозвать нечем; при сомнении отказ.

Types

type Reader

type Reader interface {
	RevokedBefore(ctx context.Context, subject string) (time.Time, bool, error)
}

Reader — хранилище отсечек.

Отвечает «с какого момента токены субъекта недействительны». Отсутствие записи — законный ответ «отзыва нет», а НЕ ошибка: пустое обязано означать пусто.

Jump to

Keyboard shortcuts

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