Scope — Versola Docs
/docs
До 1.00.7.5versola.ioGitHub

Scope

Scope в Versola — именованный набор claims пользователя, который может запросить клиент и который показывается на экране согласия

Scope — это именованный набор claims. Клиент, которому разрешен этот scope, может запросить его при входе, и тогда claims из scope можно передать клиенту. Общая картина описана в разделе Сущности.

Поля

ПолеЧто этоПравила
Scope IDЗначение, которое клиент передает в параметре scopeСтрочные латинские буквы, цифры и подчеркивания, первый символ — буква (^[a-z][a-z0-9_]*$). Двоеточия, точки и дефисы не допускаются. Уникален в пределах тенанта. После создания не меняется
DescriptionПодпись scope на экране согласия и в консолиЛокализуется, по одному тексту на язык. Английский обязателен. Новый язык можно включить в Locales на странице System settings, только если переведены все тексты, которые показывает сервер: описания scope и claim, названия клиентов, активные версии форм и шаблоны OTP и паролей (см. Locales)
ClaimsClaims пользователя, которые отдает scopeНоль или больше. У каждого claim есть свой ID и свое описание
Claim IDИмя claim пользователя, например emailТе же правила символов, что у scope ID
Claim descriptionПодпись claim на экране согласияАнглийский обязателен

Ни форма, ни Central API не задают максимальную длину этих значений.

Scope ID — не то же самое, что permission ID. payments_read — допустимый scope ID, а payments:read — нет, Central API его отклонит. В ID разрешений сегменты разделяются двоеточиями, см. Permission.

Как используется scope

Клиент хранит список scope, которые ему можно запрашивать. У web app и у mobile or desktop app этот список лежит в разделе Scopes страницы клиента, для каждого scope есть переключатель экрана согласия (Клиент). Service app scope не использует, у него есть разрешения.

При входе клиент отправляет подмножество своих scope. Дальше auth отдает claims так:

  • В userinfo попадают claims всех выданных scope. Значения берутся из сохраненных claims пользователя по claim ID. Если у пользователя такого claim нет, он пропускается. sub есть всегда.
  • В ID token попадают только claims, которые запрос назвал в параметре claims. Сам по себе выданный scope не копирует claims в ID token.
  • На экране согласия пользователь видит описания scope и их claims до выдачи authorization code, если у клиента включен экран согласия.

Изменение и удаление

На странице редактирования можно поменять описание и добавить или убрать claims. Scope ID виден под заголовком страницы и не редактируется.

Удаление scope стирает только запись scope и требует подтверждения. Клиенты сохраняют этот ID в своих списках, но он больше не соответствует ни одному claim. Уберите ID и из этих клиентов.

Что дальше