identityposture

package
v1.14.1 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2026 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

Package identityposture — ПОСАДКА ЛИЧНОСТИ: кто проверяет, что перед платформой именно этот человек (задача #1125, подфаза Ф4д эпика #896).

───────────────────────────────────────────────────────────────────────────── ЗАЧЕМ ПОЛЕ ЕСТЬ, КОГДА ЗАКОННОЕ ЗНАЧЕНИЕ ОДНО

Поле завели на время переезда со внешнего поставщика удостоверений на свою чеканку. Пока переезд шёл, в дереве жили ОБА тракта с противоположными требованиями: одному нужны три адреса поставщика, второму — ни одного. Поле разводило эти требования явно.

Посадка `external` из словаря снята (corelib#30): законное значение одно — `own`. Поле при этом остаётся обязательным. Профиль, объявивший снятую посадку строкой, получает отказ с именем настройки от Parse — тем же текстом, что любое незнакомое имя. Число мимо Parse отвергает Validate — тем же текстом, что любое число вне словаря, — но только в процессе, чья проверка старта этот метод зовёт. Перевод проверок старта обоих потребителей — службы прав и края — на Validate ведут задачи PRO-Robotech/kaname#424 и PRO-Robotech/kacho#2862; пока они открыты, потребители Validate при старте не зовут и судят только IsSet.

───────────────────────────────────────────────────────────────────────────── ИМЯ `External` ОСТАЛОСЬ, ЗНАЧЕНИЕ — ВНЕ СЛОВАРЯ

Путь модуля — без суффикса мажорной версии, и снятое экспортированное имя в минорном выпуске v1 ломало бы сборку потребителя, поднявшего пин. Поэтому `External` — устаревшая константа прежнего типа и прежнего числа с абзацем `Deprecated:`. Разбор её не производит, перечни её не называют, печатается она как величина вне словаря. Имя снимается только мажорным выпуском модуля.

«Вне словаря» не значит «недостижимо». Тип — целое, и число снятой посадки записывает в поле всякий, кто идёт мимо Parse: преобразование типа, декодер настройки, кладущий число прямо в целое поле. Такое значение IsSet называет объявленным — и это правда: профиль поле объявил. Законным его называет только словарь — IsLegal, а проверке старта служит Validate: он различает три исхода (не объявлено · объявлено вне словаря · законно) и отвергает снятую посадку наравне с любым другим числом вне словаря. Поэтому ветку потребителя, читающую External, снимают не раньше, чем перед ней встанет Validate: до того она может оказаться единственным, что за этим значением стоит.

───────────────────────────────────────────────────────────────────────────── ПОЧЕМУ УМОЛЧАНИЯ В КОДЕ НЕТ

Умолчание `own` МОЛЧА подняло бы профиль, поля не объявивший, — в том числе написанный под снятую посадку и не обновлённый: адреса поставщика в нём остались бы без читателя, а стенд поднялся бы в посадке, которую никто не выбирал. Отказ старта заставляет выбрать явно. Второй довод прежней редакции — умолчание `external` требовало бы адресов у профиля, у которого их нет, — ушёл вместе со значением.

Умолчание живёт В ПРОФИЛЕ: профиль объявляет значение явно, а отдельный клон обязан выбрать сам.

───────────────────────────────────────────────────────────────────────────── «НЕ ЗАДАНО» НЕ ПЕРЕСЕКАЕТСЯ С ОБЛАСТЬЮ ЗНАЧЕНИЙ

Нулевое значение типа — Unset — означает РОВНО «профиль поля не объявил» и законным значением поля не является. Пустая строка значением тоже не является: она не «безопасное умолчание», а отсутствие ответа.

───────────────────────────────────────────────────────────────────────────── ПОЧЕМУ В ОБЩЕМ ФУНДАМЕНТЕ, А НЕ В НАСТРОЙКЕ СЛУЖБЫ ПРАВ

Посадку читают ДВА процесса: служба прав и край. Ни один из них не вправе импортировать внутренности другого, поэтому словарь, оставленный в настройке одного, был бы переписан во втором — и разошёлся бы с первым молча, на первом же новом значении. Горизонтальное живёт в общем фундаменте.

───────────────────────────────────────────────────────────────────────────── СЛОВАРЬ ТОЧНЫЙ, БЕЗ ПРИВЕДЕНИЯ РЕГИСТРА И БЕЗ ОБРЕЗКИ

Разбор сверяет значение ДОСЛОВНО. Причина не в педантизме: соседняя раскладка (`Own`), лишний символ (`own `) и омоглиф кириллицы (`оwn` — буква `о` из другого алфавита) на глаз неотличимы от законного значения, а приведение регистра и обрезка сделали бы часть из них законными молча. Величина, от которой зависит, поднимется ли стенд, читается точным совпадением либо отвергается с именем поля.

Index

Constants

View Source
const FieldName = "identity-provider"

FieldName — КАНОНИЧЕСКОЕ имя поля, одинаковое у обоих процессов. Имя РУЧКИ у каждого своё (путь в настройке службы прав, переменная окружения на крае), и называет его вызывающий: отказ, назвавший чужую ручку, посылает оператора править не тот профиль.

Variables

This section is empty.

Functions

func Names

func Names() []string

Names возвращает канонические имена законных значений в порядке словаря — для текстов отказа и для табличных проб.

func NotDeclared

func NotDeclared(setting string) error

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

Types

type Provider

type Provider int

Provider — посадка личности: чем стенд проверяет человека.

const (
	// Unset — профиль поля не объявил. Отказ старта.
	Unset Provider = iota
	// External — прежняя посадка «личность проверяет внешний поставщик». Из
	// словаря снята (corelib#30): разбор её не производит, перечни её не
	// называют, проверка старта Validate её отвергает. Число прежнее — значение
	// константы в v1 не меняется.
	//
	// Deprecated: посадка с внешним поставщиком удостоверений снята. Parse её
	// отвергает, Values и Names её не перечисляют, но тип — целое, поэтому
	// преобразование типа или декодер, пишущий число прямо в поле, по-прежнему
	// производят её мимо Parse. Отвергайте её на проверке старта через Validate,
	// который отказывает ей наравне с любым другим значением вне словаря, а
	// ветку, читающую External, снимайте только после того, как перед ней встал
	// Validate. Имя сохранено для потребителей, поднимающих пин в пределах v1, и
	// снимается только мажорным выпуском модуля.
	External
	// Own — личность проверяем мы сами; адреса поставщика не
	// требуются, вместо них обязательна своя чеканка и свой вход человека.
	//
	// Переходным была объявлена посадка `external` (решение оркестратора по
	// §15 приёмки Ф4д) — она снята; `own` — то, к чему платформа пришла.
	Own
)

Значения. Нулевое — «не задано», и оно НЕ входит в словарь законных.

func Parse

func Parse(setting, s string) (Provider, error)

Parse — поточечно обратная String() для законных значений.

Отказ называет поле и перечень законных значений; отката к «безопасному» значению не происходит — возвращается Unset, то есть «ответа нет». Вызывающий, проглотивший ошибку, получит незаданную посадку и упрётся в тот же отказ старта, а не в молча выбранную полосу.

func Values

func Values() []Provider

Values возвращает законные значения поля — ВЫВЕДЕННЫЕ из словаря, а не выписанные вызывающим.

func (Provider) IsLegal added in v1.10.0

func (p Provider) IsLegal() bool

IsLegal сообщает, стоит ли значение в словаре. Unset и любое число вне словаря, в том числе снятое External, законными не являются.

func (Provider) IsSet

func (p Provider) IsSet() bool

IsSet сообщает, объявил ли профиль поле — каким угодно значением, в том числе вне словаря. Объявлено не значит законно: число, записанное в поле мимо Parse, IsSet считает объявленным, поэтому проверке старта его мало: число вне словаря отвергает только Validate. Потребители, судящие на старте IsSet, и задачи их перевода названы в шапке пакета.

func (Provider) MarshalJSON

func (p Provider) MarshalJSON() ([]byte, error)

MarshalJSON / UnmarshalJSON — сериализация под ту же дисциплину, что разбор.

func (Provider) String

func (p Provider) String() string

String — каноническое имя. У «не задано» имени в словаре нет, и печатается оно так, чтобы в тексте отказа не выглядеть значением.

func (*Provider) UnmarshalJSON

func (p *Provider) UnmarshalJSON(b []byte) error

UnmarshalJSON разбирает значение тем же Parse — второго разборщика не заводится.

func (Provider) Validate added in v1.10.0

func (p Provider) Validate(setting string) error

Validate — проверка старта. Исходов три, и у каждого свой ответ: законное значение — nil; поле не объявлено — NotDeclared(setting); объявлено числом вне словаря — отказ, называющий ручку вызывающего, это число и законный перечень. Последний исход отдельный намеренно: «не объявлено» послало бы оператора дописывать поле, которое он уже написал.

Jump to

Keyboard shortcuts

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