edgecredential

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: 7 Imported by: 0

Documentation

Overview

Package edgecredential — ЧЕМ человек звонит, когда его личность передал край (kaname#677).

Зачем

Снятие ключа доступа гасит прочие сессии человека и оставляет текущую (Ф13 Р8). Вызывающий, предъявивший токен нашей церемонии сам, текущую называет выпуском (`callerorigin.CredentialIDFrom`, его кладёт читатель предъявленного). Личность, переданная краем, своей текущей сессии не называла ничем — и снятие гасило ВСЕ сессии, включая ту, из которой ключ сняли. Этот читатель переносит в контекст то, чем текущую называет край:

  • номер записи сессии (`MetaSessionID`) — браузерная сессия: край узнаёт его из ответа `InternalHumanSessionService/Resolve` о носителе;
  • номер выпуска (`principalwire.MetaTokenJti`) — токен, проверенный краем.

Канал — тот же, что у личности, и решение о доверии — то же

Значения читаются ТОЛЬКО когда общая пара извлечения платформы (`grpcsrv.PrincipalExtractUnary`) признала отправителя вправе говорить за человека: собеседник с проверенным сертификатом из перечня доверенных отправителей (`authn.trusted-forwarder-sans`), на слушателе без TLS — режим разработки, как и для самой личности. Своего решения о доверии здесь нет: второе решение разошлось бы с первым молча. Вердикт пары читается `grpcsrv.TrustedPrincipalFromContext`, а номер записи — не из метаданных, а из носителя фундамента `grpcsrv.TrustedSessionRecordFromContext`: пара извлечения кладёт его тем же решением, и номер, дописанный в метаданные после решения либо при личности, положенной в обход пары, сюда не доезжает (kaname#711).

Сверх доверия — три сужения, каждое на ОДИН факт:

  • личность передана, и это человек (`user`): номер записи — понятие сессии человека, у служебной учётки его не бывает;
  • личность не названа предъявленным удостоверением: на той полосе выпуск уже положил читатель предъявленного, проверив его сам, и метаданные края его не подменяют;
  • значение одно и годной формы (`hss-…` у номера записи); два значения или чужая форма — «не названо», а не догадка, какое из них верное.

Что номер даёт и чего не даёт

Номер записи ничего не аутентифицирует: им нельзя назваться и нельзя продлить сессию. Читателей у него два, и оба читают запись ТОЛЬКО если она — запись самого переданного человека:

  • снятие ключа бережёт запись (`access_keys.RevokeInput.ActingSession`);
  • вопрос о правах выводит из записи доводы способов и момента условия `mfa_fresh` (`service/session_record_check.go`, kaname#133) — и только когда она жива на момент вопроса.

Поддельный номер, попади он сюда, может лишь не сберечь чью-то запись либо оставить условие без доводов; снять, спасти чужую запись или занять её доводы он не может — личность записи сверяется с доверенной личностью.

Имя ключа

Оба имени — из каталога фундамента (`principalwire`): номер выпуска — `MetaTokenJti`, номер записи — `MetaTokenSessionID` (corelib#97). Край ставит то же имя из того же каталога; второе написание разошлось бы с первым молча. Приставка `x-kacho-token-` — подсемейство контекста проверенного удостоверения, которое край производит сам, снимая клиентские значения пространства до выбора полосы, и пропускает за мост.

Index

Constants

MetaSessionID — ключ метаданных номера записи сессии человека, который край ставит на каждом запросе, проксируемом за эту сессию. Имя — каталога фундамента, не этого пакета (шапка, «Имя ключа»).

Variables

This section is empty.

Functions

func From

func From(ctx context.Context) context.Context

From — контекст с носителями переданного краем удостоверения. Ничего не названо либо отправитель не доверен — контекст возвращается как есть.

func Stream

Stream — то же для потоковых вызовов: полоса без читателя при полосе с читателем — различие, которого никто не принимал.

func Unary

Unary — перехватчик публичного слушателя; стоит ПОСЛЕ цепочки личности.

Types

This section is empty.

Jump to

Keyboard shortcuts

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