Я пытаюсь выяснить, как структурировать утверждения и разрешения в токене доступа, который немного сложнее, чем просто на основе ролей.
Допустим, у меня есть веб-приложение, которое по сути представляет собой коллекцию фотоальбомов. , Есть несколько сотен или тысяч альбомов, и пользователь может быть членом нескольких. У пользователя также будут разные разрешения в каждом альбоме, например, возможность читать фотографии, писать фотографии, читать комментарии, читать лайки и т. Д. c. С помощью управления доступом на основе ролей я мог бы просто добавить область, например «фотографии: читать», но я не хочу, чтобы она применялась ко всем фотографиям, только к фотографиям в конкретном c альбоме.
I Понимаете, что если бы пользователь должен был участвовать в десятках тысяч альбомов с разными разрешениями в каждом, не было бы никакого способа вписать все это в токен, поэтому в этом случае представьте, что пользователь будет участником только 10 альбомов, и что количество различных разрешений будет около 100.
Я думал добавить к токену утверждение по линии
"permissions": [
"IdForAlbum1":BitStringWithPermissions,
"IdForAlbum2":BitStringWithPermissions,
]
I подумал, что это будет компактно и гибко, но мне нужно где-то определить цепочку битов, и я беспокоюсь, что это немного хакерски. Есть ли стандартизированный способ справиться с этим? У этого вида авторизации есть имя?
Некоторые другие примечания: у меня будут роли для глобальных вещей, таких как добавление пользователей, изменение разрешений и т. Д. c. Я также думаю, что смогу решить эту проблему с помощью одного токена на альбом, но многие запросы будут выполнять операции между альбомами. Я планирую использовать Auth0, но я могу быть гибким на этом этапе.